tool_choice: auto / any / forced / none"any". That single distinction — "force a tool"
vs. "guarantee a tool call" — is one of the most reused facts on the exam, appearing in both
Domain 2 (tool design) and Domain 4 (structured output). Nail it here and you reclaim points across two
domains at once.
tool_choice answers one question: does Claude have to call a tool this turn, and which?
| Value | Meaning | Use when… |
|---|---|---|
"auto" |
Model decides: call a tool or reply with text. | The turn might or might not need a tool (a chat agent that sometimes looks things up). |
"any" |
Must call some tool — model picks which. | You need a guaranteed tool call / structured output but can't know which tool applies ahead of time. |
{"type":"tool","name":"…"} |
Must call that one named tool (forced). | One specific tool must run (e.g., extract_metadata always first, before enrichment). |
"none" |
No tools may be called this turn. | You want a pure natural-language turn with tools suppressed. |
"any" vs forcedBoth guarantee a tool call — that's why they're easy to confuse. The split is who chooses the tool:
"any" → the model chooses which tool. Use when several tools/schemas are valid and the right one depends on runtime input.{"type":"tool","name":"…"} → you choose, by name. Use only when you already know the exact tool that must run.Distractors map to predictable mistakes — recognizing them is half the battle:
| Distractor | The trap |
|---|---|
| Forced named tool, when type is unknown | Confusing "force a tool" with "guarantee a tool call." → should be "any". |
"auto" + "ask the model to reply in JSON" | "auto" permits a plain-text answer, so output isn't guaranteed; parsing text risks syntax errors. Use tool_use + schema. |
| Few-shot JSON examples, then parse the text | Improves consistency but never guarantees schema validity. Not a substitute for tool use. |
Each scenario uses the same four buttons, so you're recalling the rule, not pattern-matching the wording. Pick before you peek.
Look away from the table. Say the one-line rule for each value out loud, then check:
▶ reveal the four rules
"auto" | may call a tool or reply with text (default). |
"any" | must call some tool; model picks which. |
| forced | must call the one tool you name. |
"none" | no tools this turn. |