Mahdi has long black hair, which he usually wears tied back; brown eyes, chiseled features and a deep blue scales.
In Deep Blue, when Serafina and Neela find him passed out, he wears Lucia's purple scarf tied around his head, a gold hoop earring; his hair is in a ponytail and he has smudged lipstick kisses on his cheek. When he is disguised as Blu, he is tall, and is light brown, bronzed, with short blonde hair that has streaks of pure gold in and deep blue eyes. At the Dokimí, Mahdi wears a turquoise sea silk jacket and a red turban.
In Rogue Wave, he wears the black death rider uniform. For Serafina's betrothal he wears a dark blue sea-silk jacket instead of a death rider jacket, with a bright yellow anemone attached to one lapel; his hair is loose, and he wears a gold betrothal ring which is studded with emeralds. For Lucia's betrothal, he wears the black death rider uniform, a matching turban and his betrothal ring as an earring.
In Dark Tide, at Lucia's party, he wears a white sea-silk shirt and emerald jacket.
Mahdi is fairly self-confident he won’t get caught partying and goes out the night before the Domikí with Yazeed. He is found by Neela and Sera in the Reggia.
He goes missing during the Domikí.
He disguises himself as a merman named Blu who helps save Sera and Neela from Traho along with other Praedatori members Verde and Yazeed who disguises himself as Grigio. Sera falls in love with Blu not knowing that he's Mahdi.
Prince Mahdi of Matali reappears in Cerulea, disguised as a death rider. It is revealed he secretly was captured and ranked up by Traho.
Mahdi reveals he was actually Blu, and recovered well from his speargun wound.
He escapes with Sera into the basement of the safehouse when it is attacked and distracts the death riders away from the shelter.
He is not seen again until he rescues Sera with Coco from Marie Therese, the infanta of Spain. Afterwards, he tells Sera they are in a safe place. That night, he and Sera are betrothed.
During Lucia’s Dokimí, he warns Sera using a convoca to get out of the Kolissio while she can, however the arena is guarded by Kolbold soldiers.
Mahdi keeps up the ruse that he is in love with Lucia, who enchants him several times, much to Serafina's displeasure. He helps the Black Fins in their mission by dimming the lights so that nobody noticed that the lava pressure had dropped when the Black Fins diverted lava of the main line to break into the treasury. He also exchanges several conchs with Serafina and when they meet up, the couple share a kiss at their brief meeting. At the Depth Charge in the Lagoon, Lucia puts somna potion in his drink, drugging him, so that he would fall asleep.
She then performs an illegal, heinous darksong spell to see his memories and sees that he is betrothed to, and still in love with, Serafina. Overcome with rage and jealousy, Lucia pulls a knife on him but Bianca, her best friend, stops her and suggests that Serafina enchanted Mahdi to fall in love with her (which she didn't) and Lucia agrees and decides to kill Serafina..
After Lucia captures Serafina and shows Mahdi the shell ring he gave to her during their promising, he is heartbroken. Later in the battle against Lucia, Vallerio and Portia, Mahdi is wounded severely by a speargun that was intended to hit Serafina, but he healed and goes with her to her school graduation, marrying her after Sea Spell ends.
- Jennifer Donnelly revealed in an interview that Mahdi loves beach plum-flavoured bubble tea with frog-egg bobas.