You can try to set a property to boolean value and check that property before running the 2nd agent and 3rd agent. If those property set to true then trigger agent activity otherwise skip those agent run.
If you can explain your requirement through a business scenario, then there could be a way of doing this using a single agents instead of multiple.
Based on what you explained on high level, there are couple of ways of doing this.
You can keep a database table where you can make an entry once the agent completes its processing. Agent B will wake up, check the table and will either do its work or skip depending on whether Agent A has put its entry in this table.
In case the applications can access each other, then you can keep Agent A as Advanced, and B and C as Standard. This way, once Agent A completes its processing, it will queue an entry for Agent B.