ARD reference
Agentic Resource Discovery, explained properly
The specification says agents should find capabilities the way a search engine finds pages. This is a working reference for how that actually goes: what the format requires, what the announcements got out of date, and what the ecosystem looks like when you measure it.
Agentic Resource Discovery (ARD) is an open specification that
lets an AI agent find tools, skills, MCP servers, APIs and other agents at runtime, by describing
the job in plain language, instead of having every capability wired in ahead of time. Publishers
host a JSON manifest at /.well-known/ard.json on their own domain. Registries crawl
those manifests and answer searches over them.
It was announced by Google on 17 June 2026 and is developed by a working group including Microsoft, Hugging Face and GoDaddy, under Apache 2.0. The current revision is v0.91, status Proposal, dated 26 August 2026.
The problem ARD was written to solve
An agent is only as good as the tools it can reach, and the way it reaches them today does not survive contact with scale. You install an MCP server by pasting a URL into a config file. You add a skill by cloning a repository. Every capability your agent has is one somebody decided in advance to wire in.
That breaks in two directions at once. The first is obvious: an agent cannot use a tool nobody told it about, so it fails at tasks a tool exists for. The second is the one that bites in production. Tool descriptions go into the context window, so every tool you add costs tokens on every single request, and accuracy starts falling long before you run out of room. The specification puts the problem plainly:
Agent descriptions tend to be generic, and most LLMs currently select tools by including all descriptions in the context window, which does not scale. ARD addresses this by moving discovery outside the LLM into a dedicated search service, where richer signals (representative queries, publisher identity, compliance metadata, usage patterns) can be leveraged without consuming context window tokens.
ARD specification v0.91, section 2, Motivation agenticresourcediscovery.org
So the fix is not a better prompt or a bigger window. It is to stop carrying the catalogue around. Ask a search service at the moment you need something, get back the two or three capabilities that fit, and load only those.
How ARD works
Two pieces, and the whole design falls out of them.
Catalogs
You describe what you offer in a JSON file and host it on your own domain, at /.well-known/ard.json. Nobody grants you the right to do this. Because the file lives on your domain, controlling the domain is what proves the claim is yours.
Registries
A registry crawls those files, indexes them, and answers POST /search with a ranked list. It is a search engine whose corpus is capabilities rather than pages. Anyone can run one, and they are expected to disagree about what to include.
A client with a job to do sends a plain-language description of the job to a registry. The registry returns matching entries with the metadata needed to verify who published them. The client verifies, connects to the resource over that resource's own protocol, and ARD is out of the picture. It never sits in the data path.
Found by what it does, not what it is called
This is the part most summaries skip, and it is the part that changes how you should write an
entry. Ranking is built from representativeQueries: two to five plain sentences saying
what someone would ask when they need this resource. Not keywords, not a category, actual
questions.
The effect is easy to underrate until you watch it work. Searching our own index for
scrape a page behind Cloudflare returns servers named cloro and
Hydrafetch. Neither name contains a word from that query. They rank because someone
wrote down what they are for. A well described tool with a bad name beats a badly described tool
with a good one, which is not how any package registry has ever worked.
The most common way to be invisible. An entry with no representativeQueries is still a valid catalog entry. It is just not a discoverable one. The conformance tester flags it as a warning rather than an error, so it is entirely possible to publish something that validates cleanly and is never found. How to write them.
What counts as an agentic resource
Deliberately broad. The specification calls ARD an artifact-agnostic envelope: it identifies what a thing is with an IANA media type and leaves the internals to whichever protocol owns them. In practice these are the families that actually exist in the wild today, counted from 14,732 indexed entries:
| Family | What it is | Media type | Share of the index |
|---|---|---|---|
| MCP server | Tools an agent calls over Model Context Protocol | application/mcp-server-card+json | 8,714 |
| Skill | A packaged instruction set, usually Markdown | application/ai-skill+md | 2,764 |
| OpenAPI service | A conventional REST API described by a spec | application/openapi+json | 2,669 |
| A2A agent | An agent with an Agent Card, spoken to over A2A | application/a2a-agent-card+json | 79 |
| Registry | Another ARD search service, which is how federation works | application/ai-registry+json | 12 |
Counted 4 September 2026 across 6,610 publishers. Live figures and method on State of ARD.
What it looks like
Here is a complete, valid manifest. This is not a cut down illustration, it is the whole file.
If you host this at https://yourdomain.com/.well-known/ard.json you are published.
{
"specVersion": "1.0",
"host": {
"displayName": "Acme Weather",
"identifier": "did:web:acme.com",
"documentationUrl": "https://acme.com/docs"
},
"entries": [
{
"identifier": "urn:air:acme.com:server:weather",
"displayName": "Weather Data Node",
"type": "application/mcp-server-card+json",
"url": "https://api.acme.com/mcp/weather.json",
"description": "Live weather telemetry and forecasts for any coordinate.",
"capabilities": ["WeatherTool", "ForecastTool"],
"representativeQueries": [
"what is the current wind speed in Chicago",
"get the 5-day forecast for Seattle",
"is it going to rain in Berlin tomorrow"
]
}
]
}
Four terms are required on an entry: identifier, displayName,
type, and exactly one of url or data. Everything else earns
its place. The full field reference explains each one, including the traps.
Where the ecosystem actually stands
ARD was announced on 17 June 2026. Most of what has been written about it dates from that week and describes intentions. These are measurements, taken 4 September 2026 from a public index that crawls manifests, MCP endpoints and the other public registries.
The interesting number is not any of those. It is this one: of 8,543 endpoints asked to list their tools, only 2,607 answered. 2,072 demanded credentials, which is fair. But 1,236 returned 404 and 558 returned 405, and a good share of those are servers that work perfectly well and are simply answering the wrong way to a discovery request. Their owners almost certainly do not know.
The full report breaks that down by cause, with the method written out and the raw counts served as JSON.
Start here
Publish in five minutes
The shortest path from nothing to a manifest a registry can find, with the three mistakes that account for most failures.
The manifest, field by field
Every term in an ARD entry: what it means, whether you need it, and what breaks if you get it wrong.
The specification, explained
v0.91 read end to end and translated, section by section, with the normative language kept intact and quoted.
Check a manifest
Paste JSON or give a domain. Tells you what is wrong, where, and how to fix it. Free, and it does not keep anything.
ARD compared to MCP, A2A and llms.txt
Four things that get confused constantly, laid out by what each one actually does.
State of ARD
Adoption measured rather than asserted, refreshed automatically, with every number's provenance shown.
If you publish something an agent could call
The whole distance between having built a thing and having it found is one static file and one request. There is no application, no review and no waiting list.
Get indexed
Publishing the file is half of it. A registry can only index a domain it has encountered, so tell the ones you care about.
curl -X POST https://neuronto.com/submit \
-H "Content-Type: application/json" \
-d '{"url": "https://yourdomain.com"}'
Disclosure: Neuronto is run by the people who write this
site, and it is named first for that reason as much as any other. It resolves a bare domain to
your manifest, indexes entries of every type rather than MCP servers only, and answers with what
it found or exactly what it tried. Add "dry_run": true to see the outcome without
being written anywhere.
The other public registries take submissions through their own doors, and submitting to several costs nothing: WellKnown, ARD Registry Hub, Desvela. What actually reaches all of them over time is the manifest on your own domain, which is the part nobody can take away from you. How each one behaves, probed.
Common questions
Is ARD a replacement for MCP?
No. MCP is how an agent talks to a tool once it has one. ARD is how it finds the tool in the first place. The specification is explicit that it sits entirely before invocation and hands off to the resource's own protocol. A server can be listed through ARD and still be spoken to over MCP, and almost all of them are.
Do I need permission to publish an ARD manifest?
No, and that is the point of the design. You host ard.json on a domain you control, and any registry that finds it may index it. There is no application and no gatekeeper. Ownership of the domain is what makes the claim checkable.
Is it ard.json or ai-catalog.json?
It is ard.json. The path /.well-known/ai-catalog.json and the link relation ai-catalog come from the predecessor format and were superseded in v0.91 on 26 August 2026. Consumers may still check the old path as a courtesy, but they are not required to, so a resource that stays there may simply not be found. Here is how to move.
Does ARD decide whether a tool is safe?
No, and it does not claim to. It carries identity, provenance and attestation signals so that a registry and a client can judge. The relevance score on a search result is relevance only, and the specification says in as many words that it must not be read as a trust, compliance or safety rating.
Who controls ARD?
A working group with participants from Microsoft, Google, Hugging Face and GoDaddy, building on the AI Catalog data model from the Linux Foundation's AI Catalog Working Group. The specification is Apache 2.0 and development happens in the open on GitHub.
How is this different from a directory like PulseMCP or Glama?
A directory is a website with a list on it. ARD is a wire format plus a search API, so any client can query any registry the same way, and registries can pass queries to each other. A directory can be an ARD registry, and several are becoming one. The difference is whether a machine can use it without someone writing a scraper.
Is ARD finished?
No. The current revision is v0.91 and its status is Proposal. It has already renamed the manifest once. Anything you build should read the version field, and this site keeps a changelog so you can see what moved.
Forty more questions and answers.
Last reviewed 2026-09-04. Checked against ARD v0.91 (Proposal, 2026-08-26).