MCP SEP-2106 brings full JSON Schema 2020-12 to tool definitions
MCP SEP-2106, merged May 18, 2026, expands tool `inputSchema` and `outputSchema` to support the full JSON Schema 2020-12 keyword set — including composition, conditionals, and references — and widens `structuredContent` to accept any JSON value, not just objects.
Score breakdown
MCP tool authors can now encode conditional requirements and alternative input shapes directly in `inputSchema` and `outputSchema` rather than in prose, enabling runtimes and SDKs to catch malformed agent calls automatically before they reach the tool.
- 01SEP-2106 merged into the MCP specification on May 18, 2026.
- 02`inputSchema` now allows the full JSON Schema 2020-12 keyword set within its required `type: "object"` root.
- 03`outputSchema` drops the object-root constraint and accepts any valid JSON Schema 2020-12 schema.
MCP SEP-2106 — a Specification Enhancement Proposal, the MCP equivalent of a Python PEP — merged into the Model Context Protocol on May 18, 2026. The change makes three concrete updates to the wire protocol: `inputSchema` now permits the full JSON Schema 2020-12 keyword set within its required `type: "object"` root; `outputSchema` drops the object-root constraint entirely and accepts any valid 2020-12 schema; and `structuredContent` is retyped from `{ [key: string]: unknown }` (objects only) to plain `unknown`, making arrays and primitives wire-legal as tool return values.
Before SEP-2106, MCP's schema vocabulary was limited to a narrow draft-07-style subset.
Before SEP-2106, MCP's schema vocabulary was limited to a narrow draft-07-style subset. Composition keywords (`oneOf`, `anyOf`, `allOf`), conditionals (`if` / `then` / `else`), and reference keywords (`$ref` / `$defs`) were absent from the wire vocabulary, meaning tool authors had to express conditional requirements and alternative input shapes in natural-language description prose — where no runtime could automatically validate them. SEP-2106 moves those rules into the schema itself, enabling runtimes and SDKs to reject malformed calls before they reach the tool.
The post notes that the loosening is asymmetric in practice: a newer server emitting a non-object `structuredContent` value or a composition-rich schema may be rejected by an older, unupdated client. To handle the transition, the SEP recommends that servers also emit a serialized `TextContent` fallback alongside non-object results.
Key facts
- 01SEP-2106 merged into the MCP specification on May 18, 2026.
- 02`inputSchema` now allows the full JSON Schema 2020-12 keyword set within its required `type: "object"` root.
- 03`outputSchema` drops the object-root constraint and accepts any valid JSON Schema 2020-12 schema.
- 04`structuredContent` is retyped from object-only (`{ [key: string]: unknown }`) to plain `unknown`, allowing arrays and primitives.
- 05New keywords include composition (`oneOf` / `anyOf` / `allOf`), conditionals (`if` / `then` / `else`), and references (`$ref` / `$defs`).
- 06Compatibility is asymmetric: older clients may reject richer schemas or non-object `structuredContent` from updated servers.
- 07The SEP recommends servers emit a serialized `TextContent` fallback for non-object results during the transition.
Topics
Summary and scoring are generated automatically from the original article. We always link back to the publisher and never republish images or paywalled content. Last processed Jun 8, 2026 · 15:36 UTC. How this works →