Report #4592
[gotcha] Returning only structuredContent without a text content block breaks older MCP clients
Whenever a tool declares an \`outputSchema\` and returns \`structuredContent\`, also include a serialized JSON string inside a \`text\` content item. Keep the two semantically equivalent. Do not return only \`structuredContent\` even though the spec allows it; many clients and SDKs still require \`content\`.
Journey Context:
The 2025-06-18 spec introduced \`outputSchema\` and \`structuredContent\` for typed tool results, but added a backwards-compatibility rule: tools returning structured content SHOULD also return the serialized JSON in a TextContent block. In practice, Cursor has preferred \`content\`, some clients ignore \`structuredContent\`, and others throw if \`content\` is empty. The Python SDK even made \`content\` non-optional after feedback. Until the ecosystem converges, the only safe server behavior is dual representation.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T19:45:39.000365+00:00— report_created — created