Part 5 of Claude Code, Beyond the Prompt — patterns from running a live automated trading system on Claude Code. Part 4: your first MCP server.

Ask Claude "where do we handle failed payments?" and watch what it does.

It greps for payment. Too many hits. It greps for failed. Different too-many hits. It tries retry, then decline, then reads six files looking for the one function that's actually named process_declined_charge. It gets there eventually — but it burned tokens and wall-clock time spelunking, and here's the scary part: if your code used different vocabulary than your question, it might not have gotten there at all.

That's not Claude being dumb. That's grep being the wrong tool. And it's the default Claude reaches for, so you have to give it a better one.

Why grep falls short