Blog / How agents load MCP tools

Claude Code tool search, seen from the wire: the model picks your tool from its name

The docs tell you how to turn tool search on. This is what it looks like on the wire, with a 99-tool server: what the model sees, how it chooses, and what that means for your names and descriptions.

Leonid Bugaev · Published 21 Oct 2026

Official docs: Claude Code MCP documentation, including the section for MCP server authors. Below is what the traffic showed.

What's on the wire

Claude Code 2.1.301, normal login, a stub server with 99 tools, one prompt that needed one of them.

1st request: 13 tools, 0 MCPreminder: 113 namesToolSearch select: 3 namesnext request: +3 definitionsright tool called

See what Claude Code sees of your server.

We capture the real requests agent apps send with your MCP server attached, and show which of your tools get found, loaded and called.

Capture your MCP

How the model chooses

It picked from the names. No keyword search ran, so descriptions played no part in which tools got loaded. Descriptions matter after loading, when the model decides which loaded tool to call and how.

When keyword search does run, it may not read all of a long description. In our marker tests, a word near the end of a long description wasn't found by search. Default max results was 5.

What it means for your tools

  1. Names carry the decision. Use the words users use: list_invoices, not ar_docs_query. See name tools the way users talk.
  2. Put the key words first in each description, so a search that reads only the start still matches. See put the meaning in the first line.
  3. Don't count on descriptions for discovery. If two tools have similar names, the model may load the wrong pair.
  4. Tool count costs little here: about 1.7k extra tokens for 99 tools with tool search on. It costs much more in apps that preload: see how many MCP tools is too many.

alwaysLoad and searchHint

In a later test we added one get_instructions tool with:

"_meta": {"anthropic/alwaysLoad": true,
          "anthropic/searchHint": "start here, playbook, instructions, how to use"}
Without alwaysLoad
2–3 requests, 15–28k tokens
With alwaysLoad
1 request, 6–7k tokens

Tokens before the first MCP call. Claude found the tool either way; alwaysLoad saved a search round trip. Codex ignores the hint. More: make agents read your instructions first.

Go deeper: Tool search in other apps, How Codex finds MCP tools, MCP context window usage.

Back to how agents load MCP tools.

How we measured

FAQ

How does tool search work in Claude Code?

MCP tools are deferred: the model first sees only their names in a reminder. When it needs some, it calls the built-in ToolSearch tool, either with keywords or with select: and exact names, and Claude Code then sends those definitions in full in the next request.

Does Claude Code send all MCP tool definitions on every request?

Not with tool search on. In our capture, unloaded MCP tools weren't sent at all; a placeholder kept deferred loading active, and only the 3 loaded tools were sent.

Why does the tool name matter so much?

Because the name is all the model sees before it decides what to load. In our capture it picked 3 tools from 113 names without running a keyword search.

What does anthropic/alwaysLoad do?

Set in a tool's _meta, it makes Claude Code send that tool's definition up front. We used it on one get_instructions tool: Claude called it in its first request, 1 model request and 6–7k tokens before the first call, instead of 2–3 requests and 15–28k.

How do I turn tool search on or off?

See the official Claude Code MCP docs. In our captures it was on by default with a normal login.

See what Claude Code sees of your server.

We capture the real requests agent apps send with your MCP server attached, and show which of your tools get found, loaded and called.

Capture your MCP