A few weeks ago I built a small tool called routeproof. It tests one narrow, annoying thing about MCP servers: when an AI host decides which of your tools to call, the only thing its model sees is each tool's name, description, and input schema. Not your code. If two descriptions overlap, or one is vague, the model quietly calls the wrong tool — or none. Your unit tests still pass, because they call the tool directly. The part that's broken is the part nothing tests: did the model even pick it?

routeproof replays real user phrasings through a fresh model that sees only what a host sees, several times each, and reports what mis-routed and why, with a concrete description fix.

Every worked example I'd published used my own MCP server. Which is easy to wave away — of course you can find bugs you planted. So this week I pointed it at a server I didn't write, and about as reputable as they come: the canonical @modelcontextprotocol/server-filesystem reference implementation. Fourteen tools. Read files, list directories, search, move, a directory tree. The kind of clean, well-documented server you'd hold up as an example.

The setup

Six intents. Plain things a user would actually type, each expecting the obvious tool. Save this as filesystem-reference.intents.yaml: