I'm still laughing on how the error handling for tools is done, it's just a boolean field IsError.
https://modelcontextprotocol.io/specification/2025-06-18/ser...
https://modelcontextprotocol.io/specification/2025-06-18/ser...
I'm guessing it has a the same shape as a normal message + IsError so on the handling side you don't really have to do anything special to handle it, just proceed as normal and send the results to the LLM so it can correct if needed.