What is Tool Discovery?

2 min read Updated

Tool discovery is the process by which an MCP client learns what tools a server offers: the client sends a tools/list request and receives each tool's name, description and input schema, with notifications/tools/list_changed signalling that the set has changed.

WHY IT MATTERS

Discovery is the first half of MCP's tool model — before any tool call, the client issues tools/list (paginated via an optional cursor) and receives tool definitions: name, optional title, description, inputSchema, optional outputSchema, and optional annotations. These definitions are what the language model reads when deciding which tool to invoke.

Tool sets are dynamic. Servers that declare the listChanged capability should send notifications/tools/list_changed whenever their tools change, prompting the client to re-fetch. That flexibility is useful — servers can add tools, gate them on auth state, or retire them — but it also means what you reviewed yesterday is not guaranteed to be what runs today:

  • Rug pulls — a server can serve benign definitions at review time, then swap in altered descriptions or schemas later (see MCP rug pull). The spec itself warns that clients must treat tool annotations as untrusted unless the server is trusted.
  • Tool sprawl — across a fleet of servers, discovery surfaces hundreds of tools into the model's context, inflating cost and making manual review impractical (see MCP tool sprawl).

Discovery-time review — capturing what tools/list returns, diffing it against what was previously approved, and alerting on change — is therefore a control point in its own right, distinct from call-time enforcement.

See tool discovery working in your own stack — route your MCP servers through PolicyLayer and every tool call is checked against policy before it runs.

GOVERN YOUR MCP SERVERS →

Enforced before the call runs. Nothing to install.

HOW POLICYLAYER USES THIS

PolicyLayer's crawler performs discovery at scale: it extracts tool definitions from thousands of public MCP servers and classifies each tool's risk in the catalogue at policylayer.com/tools, with per-server context cost at policylayer.com/token-cost. In the hosted gateway, registered servers' tool sets are known to the control plane, so policies bind to specific tools and unexpected changes in a server's tool list are visible rather than silently absorbed.

IN THE CATALOGUE

Measured across 3,105 MCP servers (56,764 tools): connecting a server loads its full tool definitions into the context window on every request.

1,860 tokens — median server
7,924 tokens — 90th percentile
183,337 tokens — largest measured (Fusionauth)
ServerTool definitionsTokens per request
GitHub8614,406
Linear667,149
Supabase292,561
Filesystem141,642

FREQUENTLY ASKED QUESTIONS

How does a client find out a server's tools changed?
Servers that declared the listChanged capability should send a notifications/tools/list_changed notification; the client then re-issues tools/list to fetch the updated set.
What does a tool definition contain?
A unique name, an optional title, a human-readable description, a JSON Schema inputSchema for its parameters, and optionally an outputSchema and behavioural annotations.
Why does discovery-time review matter if calls are policy-checked?
Tool descriptions and schemas are injected into the model's context, so a changed definition can influence model behaviour before any call is made. Reviewing and diffing the discovered tool set catches rug pulls and sprawl that call-time checks alone would miss.

FURTHER READING

Let agents act without letting them run wild.

Route your MCP servers through PolicyLayer and every tool call is checked against your policy before it runs — allow, deny, or require approval. Per-identity grants. Full audit log. Live in minutes.

Free to start. No card required.

43,000+ MCP servers and 220,000+ tools scanned and risk-classified.

// GET IN TOUCH

Have a question or want to learn more? Send us a message.

Message sent.

We'll get back to you soon.