There is a difference between protocol error and tool usage error, makes sense you want the model to see the tool usage error, so they can correct.
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.
https://modelcontextprotocol.io/specification/2025-06-18/ser...