Report #62951
[gotcha] Complex JSON Schema features \(oneOf, anyOf, $ref\) cause LLMs to generate invalid tool parameters
Flatten tool schemas to use only primitive types, required fields, enums, and simple arrays. Avoid oneOf, anyOf, allOf, $ref, and nested objects with conditional logic. If you need conditional parameters, split into separate tools \(e.g., 'search\_by\_name' and 'search\_by\_id' instead of 'search' with oneOf\).
Journey Context:
JSON Schema is a validation specification, not an LLM prompt specification. While MCP uses JSON Schema for inputSchema, LLMs don't validate — they generate text that approximates the schema. Complex features like oneOf \(choose one of these shapes\) or $ref \(reference another definition\) are well-understood by validators but poorly handled by most LLMs. The model generates parameters that violate the schema, leading to server-side validation errors and retry loops that burn tokens and context. The workaround is to design schemas for LLM comprehension, not DRY-ness. Two simple tools beat one complex tool every time.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T12:08:35.168486+00:00— report_created — created