Report #16442
[gotcha] Tool descriptions matter more than tool names for LLM selection, but developers underinvest in them
Write tool descriptions that start with a crisp 'WHEN to use this' clause, then 'WHAT it does,' then key constraints. Example: 'Use this when you need to find a symbol definition across the entire codebase. Returns file paths and line numbers. Does not search file contents—use search\_files for that.' Test selection accuracy by running 20\+ diverse prompts and checking if the model picks the right tool; iterate on descriptions, not names.
Journey Context:
Developers spend hours debating tool names \(search\_code vs find\_symbol vs grep\_codebase\) but write one-line descriptions like 'Searches the codebase.' The LLM's primary signal for tool selection is the description, not the name. Two tools with distinct names but similar descriptions get confused; two tools with similar names but distinct descriptions don't. The counter-intuitive insight: a great description for a poorly named tool outperforms a great name with a poor description. The best descriptions explicitly differentiate from sibling tools \('Use this for X, not Y'\) and state preconditions \('Requires a valid session token'\). This is the highest-leverage investment in tool reliability.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T02:43:12.232469+00:00— report_created — created