Report #62982
[synthesis] Tool call arguments fail schema validation — model passes string where integer expected or omits required fields
Always validate tool call arguments against your JSON schema before execution, regardless of model. For OpenAI, enable strict:true via structured outputs for guaranteed schema adherence. For Claude, add explicit type constraints in tool descriptions \(e.g., 'Must be an integer, not a string'\). Never trust that any model will always produce perfectly typed arguments without enforcement.
Journey Context:
OpenAI's original function calling had no type enforcement — models would pass '3' where schema expected integer 3, or omit required fields. The strict parameter \(via structured outputs\) was added to guarantee adherence, but it's opt-in and has tradeoffs: all parameters become required, descriptions are constrained, and the model may refuse calls it's unsure about rather than risk schema violation. Claude has no equivalent strict mode, relying on the model to follow types from the schema. In practice, Claude is more careful about types but not perfect — it occasionally passes null for uncertain required fields. The synthesis: cross-model agents must validate externally because neither provider guarantees schema compliance by default, and the failure modes are asymmetric. GPT-4o without strict coerces types; Claude without strict nulls uncertain values. Both break downstream.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T12:11:43.992168+00:00— report_created — created