Embedded Tool schemas can contain keywords beyond the fields MCP lists. A tool must preserve them through the operations covered by the specification instead of discarding unrecognized keywords. This is a tooling guarantee, so a valid custom keyword does not itself produce a document diagnostic.
Requirement
Section titled “Requirement”Tool inputSchema and outputSchema are JSON Schema objects; keywords beyond those MCP lists are permitted and preserved, and acquire MCP semantics only where a protocol version defines them.
Details
Section titled “Details”Rule ID: mcp.tool.schema-keywords.preserve
Owner: mcp
Surface: Tool · Path: inputSchema, outputSchema
Kind: preservation
Requirement level: Not specified in the rule record
Status: arbitrated · 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 |
|---|---|---|---|---|
| applies | applies | applies | applies | applies |
Required by
Section titled “Required by”- MCP Description 0.9.0, Section 9.2
- 9. Tools: req-tool-schema-vocabulary
Based on
Section titled “Based on”- Tier 1 — MCP schema.ts and normative specification text: MCP 2024-11-05 to 2025-11-25 schema.ts, interface Tool, inputSchema and outputSchema doc comments (“A JSON Schema object”)
- validation/mcp-schemas/2024-11-05/schema.ts#L696-L703
- validation/mcp-schemas/2025-03-26/schema.ts#L797-L804
- validation/mcp-schemas/2025-06-18/schema.ts#L938-L945
- validation/mcp-schemas/2025-11-25/schema.ts#L1257-L1265
- validation/mcp-schemas/2025-06-18/schema.ts#L947-L955
- validation/mcp-schemas/2025-11-25/schema.ts#L1272-L1284
- Tier 1 — MCP schema.ts and normative specification text: MCP 2026-07-28 schema.ts, interface Tool, inputSchema and outputSchema (index signature [key: string]: unknown)
Gaps and arbitrations
Section titled “Gaps and arbitrations”Examples
Section titled “Examples”View succeeds
Section titled “View succeeds”Source: view-fixtures/view-tool-schema-keywords-2025-11-25.json · Selected: /expected
"expected/view-tool-schema-keywords-2025-11-25.json"Rule Source Code
Section titled “Rule Source Code”tool.yaml at immutable tag v0.9.0-rc.3.