Report #79891
[gotcha] Agent sends malformed arguments to a tool despite a detailed JSON Schema
Simplify tool input schemas to the minimum viable: use flat structures with primitive types. Avoid oneOf, anyOf, deeply nested objects, $ref, and additionalProperties. If you need complex input, accept a single string parameter and parse it within the tool implementation. Put the most important constraints in the tool description text, not just in the schema.
Journey Context:
There is a temptation to write rich JSON Schemas for tool inputs — nested objects, conditional requirements via oneOf, regex patterns, enum constraints. The assumption is that a richer schema means better validation and the model will generate correct inputs. In practice, complex schemas often confuse models: they produce structurally invalid JSON, miss required nested fields, or misinterpret oneOf constraints. A flat schema with 5 string/number parameters works far more reliably than a nested schema with 2 object parameters each containing 3 fields. The model reads the description and the schema together; if the schema is hard to parse, the description gets less attention. Anthropic's docs explicitly recommend keeping schemas simple and avoiding unnecessary complexity.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T16:41:44.171096+00:00— report_created — created