AnthropicClaude Certified Architect – Foundations2026-102.3 Distribute tools appropriately across agents and configure tool choice
Choose whether a turn requires tools
Completed by the knowledge check
Learning objective
Compare tool_choice (auto, any, named tool, and none) and its implications for whether Claude may respond without a tool call.
Core idea
The Messages API separates the available tools from the rule for choosing them. The top-level tools array defines the menu. The top-level tool_choice object controls whether Claude can decline that menu, must select from it, must request a named operation, or must avoid tools for the response.
Use the mode that matches the turn’s purpose. A question that can be answered from supplied evidence can use auto. A turn that requires some tool can use any where forcing is supported. A turn that requires one particular operation can use named tool where supported. A final response that should use no tools can use none.
These are response-selection controls. A requested client-tool call is not proof that the operation ran, succeeded, or met a business prerequisite. Your application executes client tools and interprets their results. See 1.1.3 for model selection versus fixed sequences, and 2.3.5 for mandatory first-step ordering.
How it works
Compare the four request shapes
The following modes control the model’s choice for the response:
| Request value | Selection rule | Can Claude respond without a tool call? |
|---|---|---|
{"type": "auto"} | Claude decides whether to call the provided tools | Yes |
{"type": "any"} | Claude must use a provided tool, without a specified name | No, on a supported forcing configuration |
{"type": "tool", "name": "extract_metadata"} | Claude must use the specified tool | No, on a supported forcing configuration |
{"type": "none"} | Claude cannot use tools | Yes; Claude cannot call a tool |
extract_metadata is an application-defined example. The named mode refers to the operation’s tool name, not a natural-language instruction or the name of an agent. You still supply the corresponding definition in tools.
When tools are provided, auto is the documented default. When no tools are provided, none is the documented default. Do not infer that adding a tools array makes a call mandatory. A tool-enabled request can still produce an answer or clarification without selecting a tool under auto.
Distinguish preference from forcing
A user message that says “use the metadata tool” can influence auto selection. Anthropic documents this pattern when you want natural-language context before the call. It does not change auto into a mandatory tool-use rule. If the architectural requirement is that a call occurs, select a supported forcing mode or enforce the requirement through application control flow.
With any, the model retains the choice of tool. If the menu includes both extract_metadata and enrich_record, any requires a tool request but does not establish which one starts the workflow. Named tool removes that choice for the response. The decision between them turns on whether any eligible operation suffices or one operation is specifically required.
Forcing through any or tool also changes the response prefix. Anthropic documents that the API prefills the assistant message, so the model does not emit a natural-language explanation before the tool_use blocks. Forcing skips thinking on models that accept it: the response starts with the tool call and contains no thinking block. Use auto when thinking before selection is part of the desired behavior.
Separate call requirement from call count
Claude may return multiple tool requests in a response by default. any therefore should not be read as “exactly one call.” It expresses a required selection from the menu. If the workflow needs one call, put disable_parallel_tool_use: true inside tool_choice.
With type: "auto", that nested field means at most one call; a tool-free response remains possible. With supported any or tool, it means exactly one call. The field is not a top-level request parameter. See 2.3.5 for using this distinction when an initial extraction must precede enrichment.
The application still chooses how to execute client-tool requests. The API’s parallel-tool documentation does not prescribe an execution order for ordinary client tools. A single assistant response containing two requests is not evidence that one result informed the other. Count, selection, and execution dependency are separate decisions.
Keep support separate from intent
Not every model and thinking setting supports any or named tool. Unsupported forcing configurations fail; auto and none remain the documented alternatives. Manual extended thinking with thinking: {"type": "enabled"} does not support forcing. Some models reject forcing regardless of thinking settings. See 2.3.5 for the named model restrictions and the fallback architecture.
Do not handle a forcing error by silently accepting a tool-free answer as if the original requirement were satisfied. Change to a supported control path and preserve the operation’s prerequisite. A different response-selection mode changes what the model may emit; it does not remove the application’s workflow obligation.
Key distinctions and trade-offs
auto versus any: auto supports direct answers and clarification. any requires a tool on supported configurations but leaves tool identity to Claude. Choose based on whether the turn genuinely requires execution.
any versus named tool: any permits selection among the menu’s entries. Named tool requests the specified operation. Neither is a complete multi-step workflow definition.
none versus deleting the registry: none prevents tool use in this response even when definitions remain in the request. It is useful for a synthesis turn whose required evidence has already been collected. The application can select a different mode on a later request.
Forced selection versus successful execution: A tool_use block carries the requested operation. Your dispatcher and the corresponding tool_result establish what happened. See 1.1.2 for matching results to calls.
Architecture / decision scenario
A structured-data extraction service uses extract_metadata and enrich_record, both application-defined tools. Its architect assigns a mode for each kind of turn instead of applying one mode to every request.
When a user asks whether supplied text contains enough information to begin, the service uses auto. Claude can answer or ask for missing input without an unnecessary operation. When a supported configuration must perform one of several eligible lookup operations, the service uses any; it does not claim that this selects extraction specifically.
For an initial turn that specifically requires metadata extraction, the service uses named tool with name: "extract_metadata", subject to the support checks in 2.3.5. If exactly one call is intended, it nests disable_parallel_tool_use: true in the same object. After execution and validated results, follow-up turns can use auto for eligible enrichment choices.
For the final explanation, the service uses none to summarize collected evidence without initiating another operation. If the model or thinking configuration rejects forcing, the service switches to the gated application flow from 2.3.5. The four modes serve four different response decisions; none substitutes for checking execution outcomes.
Common exam traps
- Assuming
toolsalone guarantees a call. - Reading
anyas a requirement to call one particular tool. - Setting
anyto stop Claude choosing the wrong tool: it forces some call but leaves the choice among tools to Claude, so repair descriptions or the menu instead (see 2.1.2 and 2.3.1). - Reading
anyas exactly one call without disabling parallel tool use. - Reading the guide’s
tool_choice: "any"shorthand as a different mode from{"type": "any"}. - Expecting a pre-call explanation or thinking block from a forced response.
- Treating unsupported forcing as a prompt-quality problem.
Where the exam guide differs
The exam guide describes "any" as a way to “guarantee the model calls a tool” without naming support restrictions. The product documentation qualifies that guarantee by model and thinking configuration. It also documents none, which the task statement’s list omits. Read a tool-choice exam item by its intended selection rule, then check any stated model or thinking constraints before choosing forcing.
The guide also writes auto and any as bare strings, including tool_choice: "any", while showing forced selection as an object. The Messages API documentation expresses each mode as an object with a type field, such as {"type": "any"}. Read the guide’s bare string as that type value when interpreting an exam option; use the documented object form when constructing a request.
What to remember
auto permits a tool-free response, any requires a provided tool where supported, named tool requires the specified operation where supported, and none prevents tool use. disable_parallel_tool_use controls call count separately. Match the response rule to the turn and retain application responsibility for execution and ordering.
Knowledge check
A structured-data extraction service sends each document, on a model and thinking setting that support forcing, with three extraction tools — one per document type. The code expects a tool call, but Claude sometimes replies in text. Any of the three tools may be the right one. Which tool_choice fits?
{"type": "auto"}{"type": "tool", "name": "extract_paper"}{"type": "any"}{"type": "none"}any requires Claude to use one of the provided tools while leaving the choice among them to Claude, and the stated configuration supports forcing. auto is the default that permits the text reply, a named tool is right only when the operation is known in advance, and none prevents tool use entirely.On a model and thinking setting that support forcing, a stage must produce exactly one call to one of the provided tools. Which request expresses that?
tool_choice: {"type": "any", "disable_parallel_tool_use": true}tool_choice: {"type": "any"} and a top-level disable_parallel_tool_use: truetool_choice: {"type": "auto", "disable_parallel_tool_use": true}tool_choice: {"type": "any"}any requires a call without limiting it to one. disable_parallel_tool_use belongs inside the tool_choice object, not at the top level, and with any or tool it means exactly one call. With auto it means at most one, and a tool-free answer stays possible.The final turn of an extraction workflow must summarize evidence already collected, and the request still carries the tool definitions used earlier. The team must guarantee that this response requests no operation. Which tool_choice fits?
{"type": "auto"} with a user message asking for a summary only{"type": "any"} with a single write_summary tool on the menu{"type": "tool", "name": "write_summary"} for the final turn{"type": "none"} for the final turn, keeping the definitionsnone prevents tool use in this response even though the definitions remain in the request, which suits a synthesis turn whose evidence is already in hand. auto with an instruction still permits a call, and forcing a summary tool requires a call — the opposite of the guarantee the team needs.On a model that accepts forced tool use, a team wants Claude to reason about the request and briefly explain its choice before calling extract_metadata. Which configuration allows that?
{"type": "tool", "name": "extract_metadata"} with an instruction to explain first{"type": "auto"} with an instruction in the user message to use the tool{"type": "any"} with adaptive thinking enabled on the same request{"type": "any"} with manual extended thinking enabled on the requestany or tool the API prefills the assistant message, so the response starts with the tool_use block — no explanation, and no thinking block even on models whose thinking is on by default. auto with an explicit instruction keeps both possible. Manual extended thinking does not support any or tool at all and returns an error.References
- Anthropic, Define tools
- Anthropic, Parallel tool use
- Anthropic, Handle tool calls
- Anthropic, Claude Certified Architect – Foundations Exam Guide