Which is exactly the angle I used for this problem. I started by creating two items, one to summon Madora and one to summon Jahan.
The changes of the blank items were as followed;
-changed the name
-Set to global
-Changed OnUseActions to [1] Story_UseInInventory
After this, I created a new goal in the story editor to handle these events. Just for testing I kept it simple, copying over the hiring code from their individual goals. I also added a call to CharacterTeleportToCharacter to get them to appear next to the user.
This is the point where you would hide the item used to summon them, and you'd add a line to spawn the item back in the player's inventory when dismissing the henchman. I've skipped this part for now.
Image of party on cyseal beach (the voodoo dolls are the summon items):