Introduction
I see this in almost every tool-calling audit. The agent called search_orders when it should have called get_order_by_id. The team reaches for a bigger model. The fix is usually a one-line description change.
Tool descriptions are prompts. The model scores candidate tools against names and descriptions, not against your internal API documentation. The full treatment is in tool descriptions are prompts.
Rule 1: Name tools precisely
Vague names produce wrong guesses. search is not a tool name. search_customer_orders_by_email is. The name should tell the model what verb and what object.
Rule 2: Describe when to use each tool
Every description needs a "when to use" trigger. That is what the model scores against. "Use when the user provides an order ID and wants status." Not "Gets order information."
Pair this with the tool contract rules in your agents are not broken, your tools are: atomic, typed, honest on failure.
Rule 3: Load only what the task needs
Twenty tools in the registry when the task needs three is how you get wrong selections and bloated context. Dynamic tool loading by intent (router agent classifies, then loads a subset) cuts both errors and tokens.
Model routing for the classifier step belongs on Tier 1. See stop paying frontier prices.
Conclusion
Better descriptions create better decisions. Audit your registry before you audit your prompt.


