Queued isn't the same as sent, and message_id only tells you the handoff happened, so the agent has no way to tell a bounce from a delivery unless the tool hands back a state it can act on. Where does ownership sit after the call returns - does the tool keep the message_id and re-check it, or does the agent poll a status endpoint you haven't described yet? If it's the agent, you've just moved the same problem one layer out, because now it has to know which tools need following up and which don't. A completion contract the tool can't satisfy until the mail server has actually accepted the message would stop the 200 from being a lie.