Report #45172
[gotcha] MCP tool returns error message as successful result, agent thinks operation succeeded
Always set isError: true in the tool result when the tool operation fails. Never return error messages as normal text content with isError false or omitted. Audit your MCP server framework to confirm it correctly sets isError when exceptions are thrown in tool handlers—many default catch blocks don't.
Journey Context:
The MCP spec defines isError as a boolean on tool results. When isError: true, the model knows the operation failed and can retry or adapt. But many MCP server frameworks and examples catch exceptions in tool handlers and return the error message as regular content without setting isError: true. The model sees a successful result containing text like 'Error: file not found' and may interpret this as the actual tool output, leading to bizarre reasoning chains where it incorporates error text into its answer. This is especially common in quick-start examples that wrap tool handlers in try/catch and return error.message as content.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T06:17:27.803989+00:00— report_created — created