Vault / wiki/201/parallel-tool-use.md
updated 2026-05-28Parallel Tool Use
Claude can emit multiple tool_use blocks in a single assistant turn when the calls are independent. Executing them in parallel cuts agent loop latency dramatically.
How it works
If the user asks "What's the weather in NYC and London?", Claude may return:
{
"content": [
{"type": "tool_use", "id": "1", "name": "get_weather", "input": {"city": "NYC"}},
{"type": "tool_use", "id": "2", "name": "get_weather", "input": {"city": "London"}}
],
"stop_reason": "tool_use"
}
You run both, then send a single user turn with both tool_result blocks:
{
"role": "user",
"content": [
{"type": "tool_result", "tool_use_id": "1", "content": "..."},
{"type": "tool_result", "tool_use_id": "2", "content": "..."}
]
}
Encouraging parallelism
Claude is more likely to parallelize when:
- Tools have clearly independent purposes.
- The user query has multiple separable parts.
- Tool descriptions explicitly allow it ("This tool is safe to call in parallel with others").
You can also nudge with a system prompt line:
When multiple tool calls are needed and they do not depend on each other's
outputs, emit all of them in a single turn so they can run in parallel.
Anti-pattern: sequential dependencies
If tool B needs the output of tool A, Claude should sequentially split them across turns. Forcing parallel when there's a dependency = nonsense input to tool B.