The story starts off with a witch named Cassandra freaking out because her phoenix-stone (the magical stone around her neck) is burning her, and she has a sense that it's cursed. She needs to call upon her old lover Grisini to ask him what's up with it—he alluded to knowing its secret the last time she saw him.
Then, the story switches to a little girl named Clara Wintermute, who is really excited for her 12th birthday party. She's especially thrilled because this puppeteer named Grisini is performing, and he's bringing his two child apprentices. Yay. Clara hopes she'll be able to befriend the children, even though she's a rich girl and it would be unseemly for her to hang out with street urchins. Her family is kind of snobbish like that.
Before the party, Clara gets to talk to the kids, Lizzie Rose and Parsefall. Lizzie Rose is super nice to her, but Parsefall just looks around the house to see what he can steal. He decides on a silver picture frame. When Lizzie Rose asks Clara about a painting that shows five children, Clara reveals that she used to have four siblings, but they all died. Her parents are still in mourning seven years later, and she's not allowed to have fun because she has to remember her brothers and sisters.
During the party, Clara laughs at a skeleton puppet, which infuriates her mother, who accuses her of laughing at death and disrespecting her dead siblings. Clara goes to bed sobbing and later disappears from the Wintermute home, much to her parents' consternation.
In the meantime, Lizzie Rose and Parsefall are worried because the police come to the place where they live to question Grisini. Lizzie Rose learns from their landlady—Mrs. Pinchbeck—that Grisini was also questioned in several other missing children cases. Yikes.
It's also revealed that Grisini does have something to do with Clara's disappearance … because he's trying to get ransom money out of the Wintermutes. Perturbed, Lizzie Rose goes to the police with this news. Grisini somehow finds out, though, and he tries to hurt Lizzie Rose. Parsefall jumps on him, causing Grisini to fall down the stairs and bleed out profusely.
Lizzie Rose and Parsefall run to Mrs. Pinchbeck's apartment and she lets them in, promising that she'll go out and either move Grisini's body (if he's dead) or get him to a hospital (if he's still alive). However, when they go to find Grisini, his body is gone. What they don't know is that Cassandra has used her magic to call Grisini to Strachan's Ghyll—and he's powerless to resist.
Grisini gets to Strachan's Ghyll where he tells Cassandra that everyone who has owned the phoenix-stone has ended up burning to death—and that the only way to get rid of it is to have a child steal it from you. That's when they conspire to get Lizzie Rose and Parsefall to come to Strachan's Ghyll.
In the meantime, Lizzie Rose and Parsefall stumble across a puppet in Grisini's belongings that looks exactly like Clara and realize to their horror that he's turned Clara into a puppet. He's an evil magician who does this in order to kidnap children and hold them for ransom. Ugh.
They also pawn one of his watches and go to see the Royal Marionettes, which is where Parsefall wants to work someday. Then, they have a run-in with Clara's father, who threatens to go to the police (because he's found out about Parsefall stealing the picture frame). That's when Lizzie Rose finds a letter from Cassandra in which she says that she is dying and intends to leave her fortune to Grisini's orphans. Lizzie Rose decides that the children will go to Strachan's Ghyll to see if they really are supposed to get the old woman's money.
The children take the train to Strachan's Ghyll, where Cassandra and Grisini are waiting, although Grisini is hidden in the gatehouse so as to not scare the children away. She tells the children that they are to inherit her home and can take anything from it—and then she dangles the phoenix-stone in front of them.
Cassandra brings Clara to life briefly one night to tell her that if she steals the stone, she can become a girl again. But, Clara realizes that the stone is dangerous and tries to warn the other two children while they're sleeping, even though she's a puppet and cannot speak. She tries to enter their dreams to tell them that it's all a huge trick. It's also revealed that Cassandra originally stole the stone from a girl named Marguerite—who was the only friend she ever had in her entire life.
Grisini comes to Parsefall and demands that he steal the stone, threatening to kill Lizzie Rose otherwise. Parsefall tries but fails, and then Lizzie Rose finds Grisini sleeping in the gatehouse and decides that they have to leave Strachan's Ghyll immediately.
The children try to leave in the middle of the night, but Cassandra's magic keeps bringing them back to the house. When they return, she shows Parsefall a memory of how he lost his finger: Apparently, when he was a little kid, Grisini turned him into a puppet and shaved off his finger in order to punish him. This infuriates Parsefall, and he decides to steal the stone in order to turn Grisini into a puppet and shave off all of his body parts to see how he likes it.
Clara doesn't want Parsefall to be cursed, though, so she wills herself to turn back into a girl and steals the phoenix-stone, and then she runs down to the frozen lake outside to destroy it. Grisini follows but ends up falling through the ice when the phoenix-stone shatters; Clara is saved because Parsefall and Lizzie Rose pull her to safety.
Later on, Clara is reunited with her parents, who agree to let Lizzie Rose and Parsefall come live with them. Before she dies, Cassandra agrees to leave all of her worldly goods to Lizzie Rose and Parsefall so that they will be well provided for. Clara also gets her father to arrange an apprenticeship for Parsefall with the Royal Marionettes. At the very end, the children and the Wintermutes attend Cassandra's funeral. They're all excited to leave Strachan's Ghyll and go home to London, where they will all live happily ever after.