Report #1609
[gotcha] Agent calls wrong MCP tool when multiple tools have overlapping names or descriptions
Give each tool a unique, action-verb-prefixed name and a description that explicitly states what it does AND what it does NOT do. Avoid generic descriptions like 'interacts with the file system.' Write descriptions as: 'Reads file contents at a given path. Does NOT list directories, write files, or search file contents.' Name tools with domain\+action: 'git\_log\_commits' not 'log'.
Journey Context:
LLM tool selection is fundamentally a semantic similarity match between the user's intent and the tool's name\+description. When two tools have overlapping descriptions—e.g., 'query\_database' vs 'execute\_sql'—the model has no reliable disambiguation signal and will inconsistently pick the wrong one. Renaming helps, but the counter-intuitive insight is that adding negative descriptions \('does NOT do X'\) is more powerful than making the positive description longer. Negative descriptions explicitly carve the decision boundary. People commonly try to fix this by making descriptions more detailed, which worsens context bloat without improving selection. The right call is shorter positive descriptions plus explicit negative constraints.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T04:32:51.541465+00:00— report_created — created