Skip to content
{mcpdesc}

Report Tool schemas that MCP Tool types reject

From MCP 2025-11-25, an embedded Tool schema is judged by its JSON Schema dialect, but the MCP Tool type still restricts some schema syntax: a literal type object at the inputSchema root, and for MCP 2025-11-25 at the outputSchema root and an object for each top-level properties value. A schema that misses a restriction stays valid and receives a warning naming the protocol versions concerned, because its native projection for them fails. Use {} instead of true, {“not”: {}} instead of false, add type object beside $ref or allOf, or narrow the Tool’s protocolVersions.

A Tool schema that is valid under its dialect but misses a schema-syntax restriction of the MCP Tool type for an applicable protocol version is accepted with a warning.

Rule ID: mcp.tool.schema.native-shape
Owner: mcp
Surface: Tool · Path: inputSchema, outputSchema
Kind: structural
Requirement level: should
Status: arbitrated · Enforcement: internal

2024-11-05 2025-03-26 2025-06-18 2025-11-25 2026-07-28
not-applicable not-applicable not-applicable applies applies

Only a declared root type is examined; composition is not analyzed to prove that a root admits objects. Nested schemas and keywords other than top-level properties are not restricted by any MCP Tool type.

Source: expected-valid/tool-schema-mcp-type-shapes.json · Selected: /tools/0/inputSchema

{
"type": "object",
"properties": {
"enabled": {},
"debug": {
"not": {}
}
}
}

Source: expected-valid/tool-schema-mcp-type-shapes.json · Selected: /tools/1/inputSchema

{
"type": "object",
"$ref": "#/$defs/Arguments",
"$defs": {
"Arguments": {
"type": "object",
"properties": {
"query": {
"type": "string"
}
},
"required": [
"query"
]
}
}
}

Source: expected-valid/tool-schema-mcp-type-shapes.json · Selected: /tools/2/inputSchema

{
"type": "object",
"properties": {
"options": {
"type": "object",
"properties": {
"strict": true
}
},
"tags": {
"type": "array",
"items": true
}
},
"additionalProperties": false
}

Source: expected-valid/tool-schema-mcp-type-shapes.json · Selected: /tools/3/inputSchema

{
"type": "object",
"properties": {
"enabled": true
}
}

Source: expected-warning/tool-schema-mcp-type-mismatch.json · Selected: /tools/0/inputSchema/properties/enabled

true

Source: expected-warning/tool-schema-mcp-type-mismatch.json · Selected: /tools/0/inputSchema/properties/debug

false

Source: expected-warning/tool-schema-mcp-type-mismatch.json · Selected: /tools/1/outputSchema/properties/result

true

Source: expected-warning/tool-schema-mcp-type-mismatch.json · Selected: /tools/2/inputSchema

{
"$ref": "#/$defs/Arguments",
"$defs": {
"Arguments": {
"type": "object",
"properties": {
"query": {
"type": "string"
}
},
"required": [
"query"
]
}
}
}

Source: expected-warning/tool-schema-mcp-type-mismatch.json · Selected: /tools/3/outputSchema

{
"allOf": [
{
"type": "object",
"properties": {
"summary": {
"type": "string"
}
}
}
]
}

tool.yaml at immutable tag v0.9.0-rc.3.