You're building a customer service agent for an online bookstore. Two of your tools have these descriptions:
search_books: "Searches the book catalog."lookup_book: "Looks up a book."
In production, the agent calls them seemingly at random — sometimes search_books for ISBN lookups, sometimes lookup_book for title searches, and occasionally calling both for the same query. Tool selection accuracy is around 60%.
What's the highest-leverage first fix?
Why did you pick that answer? Two or three sentences. The act of articulating it is what builds the judgment — not the click that follows.
Tool descriptions are the primary mechanism a model uses to choose between tools. When two descriptions are nearly identical and minimal, the model has nothing to differentiate them — and 60% accuracy is what random selection looks like for two near-identical options. The fix is the lowest-effort, highest-leverage change in the entire system: write descriptions that say what the tool does, what inputs it accepts, examples of the queries it handles, and crucially, when to use it instead of the similar tool. This is almost always the correct first move when tool selection is unreliable.
Consolidating tools removes the choice problem at the cost of moving the routing logic inside the tool — you still need to decide whether to do an ISBN lookup or a title search. Now that decision is hidden from the agent and from your observability. Sometimes consolidation is right, but it's a structural change you make after exhausting cheaper fixes, not before.
Few-shot examples can help, but they add token overhead on every call and don't address the root cause: descriptions that don't differentiate the tools. If descriptions clearly explain when to use each tool, you may not need few-shot examples at all. Reaching for examples first is treating a symptom.
Adding a routing layer is over-engineering when the actual problem is two-line descriptions. You're proposing infrastructure to solve what is fundamentally a writing problem. Save routing layers for when descriptions have been fully invested in and the system still struggles.