Your MCP Server's Tool Descriptions Are a Prompt, Not Documentation
When an MCP server exposes ten tools with similar names and vague one-line descriptions, Claude has to guess which one fits a given request — and guesses are where wrong tool calls come from. Tool descriptions get read by the model at decision time, the same way any other prompt text does, which means they deserve the same care.
- State what the tool does AND when to use it — "searches customer records" is weaker than "searches customer records by name or email; use this before create_customer to check for duplicates."
- Disambiguate near-duplicate tools explicitly — if two tools could plausibly handle the same request, say in each one's description why you'd pick it over the other.
- Document side effects in the description, not just the schema — "this permanently deletes the record" belongs in the text Claude reads before calling it, not buried in a response field.
If you wouldn't ship a system prompt without testing it against realistic requests, don't ship an MCP tool description that way either — run a handful of ambiguous test queries against your server and check which tool actually gets called.