Report #84036
[gotcha] MCP tool returns isError: false with error message in content — model treats failure as success
Always set isError: true when the tool operation semantically failed, even if the tool code ran without throwing. Put the error summary in the content array. Never return error text with isError: false.
Journey Context:
The MCP spec defines an isError boolean on tool results. Many implementations only set isError: true for protocol-level or schema-validation errors, not for semantic failures like file-not-found, query-returned-no-results, or permission-denied. The model sees isError: false and assumes the operation succeeded, then reasons over the error message as if it were valid output data. This is especially dangerous when the error message is structured text that looks like a valid but empty result. The model proceeds confidently with garbage.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T23:38:41.218166+00:00— report_created — created