A successful Tool example for a Tool with outputSchema must carry the required structuredContent. The schema describes that structured value, not the unstructured content array. Check success and error examples separately before deciding which payload is missing.
Requirement
Section titled “Requirement”When a Tool declares outputSchema, a successful result contains structuredContent.
Details
Section titled “Details”Rule ID: mcp.tool.structured-content.output-schema
Owner: mcp
Surface: CallToolResult · Path: structuredContent
Kind: semantic
Requirement level: must
Status: internal · Enforcement: internal
Protocol version applicability
Section titled “Protocol version applicability”2024-11-05 |
2025-03-26 |
2025-06-18 |
2025-11-25 |
2026-07-28 |
|---|---|---|---|---|
| not-applicable | not-applicable | applies | applies | applies |
Required by
Section titled “Required by”- MCP Description 0.9.0, Section 9.3
- 9. Tools: req-tool-example-structured-content
Based on
Section titled “Based on”- Tier 1 — MCP schema.ts and normative specification text: MCP 2025-06-18 to 2026-07-28 specification, Server Features, Tools, Output Schema (“Servers MUST provide structured results that conform to this schema”)
- https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/docs/specification/2025-06-18/server/tools.mdx#L309-L382
- https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/docs/specification/2025-11-25/server/tools.mdx#L335-L408
- https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/docs/specification/2026-07-28/server/tools.mdx#L509-L631
Conformance of structuredContent to outputSchema is checked by mcpdesc.tool.example.schema-conformance. Error results are governed by mcpdesc.tool.example.error-result.
Examples
Section titled “Examples”Invalid example
Section titled “Invalid example”Source: expected-invalid/invalid-tool-example-result-semantics.json · Selected: /tools/0/examples/missing/result
{ "resultType": "complete", "content": [ { "type": "text", "text": "Missing structured value" } ]}Invalid example
Section titled “Invalid example”Source: expected-invalid/invalid-tool-interaction-example-semantics.json · Selected: /tools/0/interactionExamples/broken/result
{ "content": [ { "type": "text", "text": "Release preparation completed." } ]}Rule Source Code
Section titled “Rule Source Code”tool.yaml at immutable tag v0.9.0-rc.3.