Report #1556
[gotcha] Tool selection accuracy cliff beyond 20-30 available tools—model picks wrong tool or hallucinates parameters
Never expose more than 20-25 tools to the model at once. Partition tools into functional groups and use a two-stage selection: first, a lightweight router \(or the model itself\) picks the relevant tool group; then, only that group's tools are loaded into the context. Use descriptive, verb-noun tool names \(e.g., 'github\_list\_prs' not 'list'\) to maximize discriminability within the reduced set.
Journey Context:
Models distribute attention across all available tools when deciding which to call. Beyond roughly 20-30 tools, selection accuracy drops sharply: the model confuses similar tools, picks a plausible-but-wrong one, or generates parameters that match a different tool's schema. Adding more tools feels like adding capability but actually reduces effective capability. The common mistake is registering every MCP server tool globally. The counter-intuitive fix is to hide tools from the model. Two-stage selection \(route then act\) preserves access to a large tool library while keeping the per-decision tool count low. The small latency cost of the routing step is negligible compared to the cost of a wrong tool call that cascades into a multi-turn recovery loop.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T02:31:25.275276+00:00— report_created — created