Early MCP protocol versions define a limited Tool-schema shape without a default embedded dialect. Check the known properties and required-name list without rejecting other keywords using an inferred meta-schema. Incomplete example validation is reported separately.
Requirement
Section titled “Requirement”Before MCP 2025-11-25, Tool schema properties is an object of objects and required is an array of strings; other keywords are preserved.
Details
Section titled “Details”Rule ID: mcp.tool.schema.legacy-shape
Owner: mcp
Surface: Tool · Path: inputSchema, outputSchema
Kind: structural
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 |
|---|---|---|---|---|
| applies | applies | applies | not-applicable | not-applicable |
Required by
Section titled “Required by”- MCP Description 0.9.0, Section 9.2
- 9. Tools: req-tool-schema-legacy-shape
Based on
Section titled “Based on”- Tier 1 — MCP schema.ts and normative specification text: MCP 2024-11-05 to 2025-06-18 schema.ts, interface Tool, inputSchema (and outputSchema from 2025-06-18): properties?: { [key: string]: object }, required?: string[]
From MCP 2025-11-25 the embedded dialect governs these keywords (json-schema.tool-schema.valid); mcp.tool.schema.native-shape warns where the MCP 2025-11-25 Tool type is narrower.
Examples
Section titled “Examples”Invalid example
Section titled “Invalid example”Source: expected-invalid/malformed-pre-dialect-tool-schema-shape.json · Selected: /tools/0/inputSchema
{ "type": "object", "required": "value"}Rule Source Code
Section titled “Rule Source Code”tool.yaml at immutable tag v0.9.0-rc.3.