Report #39637
[gotcha] Complex nested JSON schemas in tool inputSchema cause model to generate invalid arguments repeatedly
Flatten tool input schemas to at most one level of nesting; avoid oneOf/anyOf/allOf in schemas; put critical validation constraints in the tool description text \(which the model reads\) rather than only in the schema \(which the model often misinterprets\); use enums for categorical fields.
Journey Context:
The MCP spec allows full JSON Schema in inputSchema, but LLMs are not JSON Schema validators—they're pattern matchers. A schema with nested objects, oneOf discriminators, or conditional requirements frequently produces invalid tool calls that the server rejects. The model then retries with slightly different invalid arguments, creating a loop. The counter-intuitive insight: a simpler schema that the model reliably satisfies is better than a precise schema it can't comply with. Move complexity from the schema to the description, and handle validation server-side with clear error messages that guide the model's retry.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T21:00:25.117314+00:00— report_created — created