Discovery

How AI agents discover tools at runtime

31 August 2026 · 6 min read

A vast dark grid seen in perspective with a scattered few cells glowing white

An agent today can only use capabilities somebody installed for it in advance, and every tool description competes for room in the context window. Runtime discovery moves tool selection out of the model and into a search service, the same shift the web made when it stopped curating link directories and started indexing.

The install-time model, and where it breaks

Every agent framework in use today assumes the same thing: before an agent can do something, a human wires that capability in. You add an MCP server to a config file, restart, and now the model sees another tool description in its context.

That works at ten tools. At a hundred it starts to hurt, because every description competes for the same context the actual task needs. At a thousand it stops working entirely, and not only for context reasons: selection accuracy falls as candidates get more similar, which is a retrieval problem wearing a prompt-engineering costume.

Pre-installing every capability an agent might need is the same bet as bookmarking every page you might read.

What runtime discovery does instead

The agent does not carry the catalogue. It asks a question when it needs something:

POST /search
{"query": {"text": "scrape a website behind cloudflare"}}

Back comes a ranked list of resources that can do it, each with an endpoint and the protocol it speaks. The agent connects to whichever it picks. Nothing was installed in advance, and nothing occupied the context window until it was relevant.

This is what the Agentic Resource Discovery specification standardises. It is deliberately small: it describes how resources are published and searched, then gets out of the way so invocation happens over MCP, A2A or plain HTTP as it already does.

Two sides, both trivial

Publishers describe what they offer

A JSON manifest at /.well-known/ard.json on your own domain. Each entry names one resource and, crucially, carries representative queries: the requests it can serve, phrased the way a person would ask.

Nobody approves this. There is no marketplace to apply to. Publishing on a domain you control is the entire mechanism, which is why the specification calls the model web-native.

Registries index and answer

A registry crawls those manifests and exposes a search API. The interesting design decision is that the specification expects many registries rather than one, and defines a federation mode so a client can reach them all through any single one.

Try it on your own resource

Publishing takes one file. This checks whether it worked, across every public registry rather than only ours.

pip install ard-publish
python -m ard_publish check yourdomain.com

Why representative queries decide everything

This is the part publishers get wrong, and the failure is silent.

Registries build their semantic index from representativeQueries. An entry without them is a valid catalogue entry that no search will ever return. The manifest validates, it serves a 200, and it is unfindable. There is no error to notice.

Written for a brochureWritten for retrieval
enterprise document intelligenceread this PDF and pull out the invoice total
scalable web extraction platformscrape a website that blocks bots
unified communications APIsend a text message to a phone number

The right-hand column matches what an agent is actually holding when it goes looking: a task, in the user's words, not a category.

What this changes

For agent builders, integrations stop being a build-time decision. You ask for a capability and connect to whatever currently serves it best, which also means you are no longer locked to whichever vendor you happened to wire in last year.

For tool vendors, distribution stops depending on being accepted somewhere. You publish on your own domain and you are eligible everywhere at once.

Neither is fully true yet. The ecosystem is early and most clients still ship a fixed tool list. But the mechanism exists, it is specified, and it costs one JSON file to join.

Use Neuronto from your agent

One call searches this index and every other public ARD registry. No key, no signup. Or install it as an MCP server and let the agent search from the interface it already speaks.

curl -s https://neuronto.com/search \
  -H 'content-type: application/json' \
  -d '{"query":{"text":"scrape a website"},"federation":"auto"}'
claude mcp add --transport http neuronto https://neuronto.com/mcp

Keep reading