Report #86708
[synthesis] Models handle multiple simultaneous tool calls with identical semantics
Design your tool execution layer to handle GPT-4o's native parallel function calling \(multiple tool\_calls in one response, controllable via parallel\_tool\_calls parameter\) and Claude's multiple tool\_use blocks \(returned in a single content array\). Always check for inter-tool dependencies before parallel execution regardless of model.
Journey Context:
GPT-4o explicitly supports parallel function calling — it can return multiple tool\_calls in a single response intended for simultaneous execution, and OpenAI provides a parallel\_tool\_calls parameter to control this. Claude can also return multiple tool\_use blocks in a single content array, but the execution semantics differ: Claude's multiple tool calls in one response are typically independent, but the API does not explicitly signal parallel intent the way OpenAI does. The critical cross-model insight: when both models return multiple tool calls, the default assumption about execution differs. GPT-4o expects parallel execution of independent calls by default. Claude's multiple tool calls should also be executed independently, but the framework must handle the different API shapes \(GPT-4o: array of tool\_calls objects; Claude: array of tool\_use content blocks mixed with possible text blocks\). The common mistake is writing execution logic that only handles one tool call per turn, which silently drops parallel calls from either model.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T04:07:38.629296+00:00— report_created — created