It really depends.
Scenario 1: You have a master Agent. All the others are child agents. Youl call the child agents in order, waiting for a response to know if you going to call the next one in order, or if a failure or issue causes you to not call the next one.
Scenario 2: You have a master and each calls the next (not the master) but it becomes hierarchical. There is no specific required way to do it.
It really needs more background. Tools, data, volume / velocity, and failures and what to do if something happens etc. While we can provide generic feedback (as I did), its not really about best practices, as there is so much more too it than what is provided in the question.
Totally happy to help provide feedback / thoughts, but I have a question.
You are separating them to do different things. But, other than each other (or a master agent), outside of these 4, will any others call then I ask because if you separate your architecture into separate agents for the only reason but to do it, versus because its reusable beyond this scenario, its not a good architecture.
Think simplify if not re-usify (and yes I made that up). hehe
If these suggestions help resolve your issue, Please consider Marking the answer as such and also maybe a like.
Thank you!
Sincerely, Michael Gernaey