Claude requests two tools in one turn. How do you return the results?
Why C is the answer
In one user message with a tool_result for each call
Parallel tool use is on by default. All results go together in the next user message, matched by tool_use_id.
In detail
- Parallel tool use is on by default.
- All results go together in the next user message.
- Each one is matched by its tool_use_id.
- Results can finish in any order, because the ID does the matching.
Use case
An illustrative scenario, not a real incident.
Claude asks for weather and a calendar in one turn. The app runs both and sends one user message with two tool_result blocks, each with its tool_use_id.
See it in different ways
sequenceDiagram participant C as Claude participant App as Your code C-->>App: tool_use A and tool_use B App->>App: Run both tools App->>C: One user message with tool_result A and B
sequenceDiagram participant A as Your code participant C as Claude A->>C: Request with tools C-->>A: tool_use blocks A->>A: Run the tools A->>C: tool_result blocks first, then any text C-->>A: Final answer
sequenceDiagram participant P0 as Your code participant P1 as Claude P1-->>P0: Two tool_use blocks P0->>P1: One message with two tool_result blocks P1-->>P0: Answer
Key point: All results for a turn go in one user message.
Why the other options are wrong
- A. As text in the system prompt
- Tool results are never placed in the system prompt.
- B. Only for the tool that finished first
- Every tool_use needs a result.
- D. In two user messages, one after the other, in the order the tools finished
- Results must not be split across messages.

