What is Tool Selection?
Also called tool routing, tool choice.
Tool selection is the decision an agent makes about which available tool, if any, to invoke at a given step. It depends on the tool descriptions the agent can see, the task at hand, and the state of the current run, and its accuracy degrades as the number of similar or overlapping tools grows.
The agent chooses from descriptions, not from behavior. It cannot try a tool to see what it does, so the name, description, and parameter documentation are the entire basis for the decision. Two tools whose descriptions overlap are effectively indistinguishable, and the model will pick between them inconsistently regardless of which is technically correct.
Selection accuracy falls as the tool count rises. Beyond a few dozen tools, descriptions crowd the context, near duplicates multiply, and the model begins choosing plausible but wrong options. Common mitigations are grouping tools into namespaces, exposing only the subset relevant to the current phase, or adding a routing step that narrows candidates before the agent sees them.
Not selecting a tool is also a selection. Over-eager tool use burns steps and money on lookups the model could answer directly, while under-use produces confident answers that should have been grounded in a real query. Instructions that state when a tool is required, rather than only what each tool does, address both failure directions.
Selection errors are worth measuring separately from execution errors. An agent that picks the right tool and passes a malformed argument has a schema problem, while one that picks the wrong tool has a description or routing problem, and the two require entirely different fixes. Logging the chosen tool alongside the outcome makes the distinction visible.
Key points
- Decision rests entirely on names, descriptions, and schemas
- Overlapping descriptions cause inconsistent choices
- Accuracy degrades as the tool count grows
- Choosing no tool is itself a selection to evaluate
- Separate selection errors from argument errors when debugging
In practice
An agent exposed to both search_documents and search_archive picks the wrong one roughly half the time, because both descriptions say they search stored files. Rewriting them so one states it covers only items from the last ninety days and the other states it covers items older than ninety days removes the ambiguity, and selection accuracy rises without any change to the underlying model.