▶ A tool description is a prompt

Module 06 walkthrough · ~3 minutes · the same MCP server, succeeding and failing on its menu alone

The MCP server's menu

docs-platform (the client's MCP server)
get_data · "gets data"
get_data2 · "gets data (new)"
query_v3 · "query endpoint"
get_member_claims · claims history, one member ID
get_provider_roster · providers in a network
The errors
style one · "Error 500", a dead end
style two · structured, teaches the fix
Whose hands
researcher agent · read tools only
built-ins · Read, Grep, Glob, Bash
Claude's pick · reading the vague menu
Looking at the available tools:
  get_data: gets data
  get_data2: gets data (new)
  query_v3: query endpoint

The request is claims history. Two of
these claim to get data, and nothing
says which covers claims. Trying
get_data2.
the result · wrong tool, failed task
get_data2 returned: provider rosters,
network 118, 442 rows.

That is not claims history. The task
failed, and every line of MCP server code
ran exactly as written.
the MCP server's menu · after the rename
get_member_claims
  "Claims history for one member ID,
   last 24 months. Member IDs are 5
   digits. Use for questions about
   what a member was billed for."

get_provider_roster
  "All providers in a network, by
   network ID."

search_documents
  "Find policy documents by phrase
   or topic."
Claude's pick · reading the renamed menu
The request is claims history for
member 44872.

get_member_claims: claims history for
one member ID. That is the request,
almost word for word. Calling it.

Result: 24 months of claims for
member 44872. Task complete.
the dead end error
call: get_member_claims(99999)
MCP server: Error 500

retrying the same call...
MCP server: Error 500

retrying again...
MCP server: Error 500

Three turns spent. Nothing learned.
the error that teaches
call: get_member_claims(99999)
MCP server: member_not_found: no member
  99999. Member IDs are 5 digits and
  start with 4. Use search_members to
  look one up by name.

next call: search_members("Ruiz")
found member 44872. Calling
get_member_claims(44872). Done.
.claude/agents/researcher.md (the tools line)
---
name: researcher
tools: Read, Grep, Glob
---

Read, search, and find. No Write, no
Edit, no Bash. On its most confused
day, this agent cannot damage a file,
because the ceiling on the damage is
written right here.
the built-ins, working the reflex
Grep: "prior authorization turnaround"
  1 match: research/2026-07-14-ops.md
Read: that one file
Answer: the commitment, with its
  source cited.

One search, one read. Nothing opened
that did not help.
Module 06 · Walkthrough
A tool description is a prompt
Claude never reads your MCP server's code. It reads the menu. Watch a tool get picked, then watch it get missed. Three parts:
1 · The menu 2 · Errors that teach 3 · Whose hands
Read the menu like it decides everything
You will read tool menus every time you evaluate an MCP server, and you will hand this exact critique to the platform teams that build them: names that say what comes back, errors that say what to do next, tools matched to jobs. The closing demo connects a real MCP server to your own repo.

Back to Module 06 →

Part 1 · The menu Part 2 · Errors that teach Part 3 · Whose hands