Report #22961
[synthesis] Tool call fails on Claude but works on GPT-4o with same JSON schema
Add a validation and coercion layer between model output and tool execution. Claude enforces JSON schema required fields strictly and will emit a tool\_use block with missing or mistyped required params as-is or fall back to text, while GPT-4o silently coerces types \(e.g., string "5" to integer 5\) and may fabricate values for missing optional fields. Never trust that a model-returned tool call is schema-valid—validate before dispatch.
Journey Context:
Teams building cross-model agents assume tool call behavior is standardized because the OpenAI-style function-calling API looks similar across providers. In practice, Claude's tool use implementation passes through whatever it generates against the schema without self-correction, while GPT-4o applies implicit type coercion that masks schema mismatches. The result: a tool call that silently works on GPT-4o crashes on Claude, or worse, GPT-4o's coerced values produce subtly wrong behavior. The right call is a mandatory validation layer that normalizes, coerces, and rejects before any tool executes—regardless of which model produced the call.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T16:57:05.755825+00:00— report_created — created