What is an ARD catalog (ard.json)?
An ARD catalog is a JSON document at /.well-known/ard.json that enumerates every machine-readable resource a site publishes: content files, APIs, skills, and interfaces. Agentic Resource Discovery exists so an agent can find your capabilities in one fetch instead of crawling for them, and each entry carries a trust manifest saying who published it and under what terms.
The identifier format, which is where sites fail
Entries are identified by domain-anchored URNs in the urn:air namespace, for example urn:air:example.com:content:llms. This is the single most common failure, and it fails silently.
Ours used urn:ai rather than urn:air. Every entry failed validation, three separate checks went from passing to failing, and nothing in the file looked wrong to a human reading it. If you publish a catalog, validate it rather than eyeballing it.
The trust manifest
Each entry should carry a trustManifest naming the publisher, a contact, a licence, the canonical URL and a last-updated date. It is the difference between a list of links and a list of links an agent has reason to rely on.
A catalog without trust manifests parses fine and scores poorly, which is a reasonable judgement: an unattributed resource list is not much of a claim.
Paths and predecessors
The canonical path is /.well-known/ard.json. An earlier path, /.well-known/ai-catalog.json, is kept by the spec as an equivalent source, so serving the identical document at both is safe and slightly more discoverable.
Generate both from one module. Two hand-maintained copies of the same catalog will disagree within a month, and a disagreeing catalog is worse than one path.
{
"specVersion": "0.91",
"host": { "displayName": "Acme Ltd", "identifier": "acme.example" },
"entries": [
{
"identifier": "urn:air:acme.example:content:llms",
"displayName": "Acme, LLM summary",
"type": "text/markdown",
"url": "https://acme.example/llms.txt",
"description": "What Acme does, canonical pages, and when to reach for us.",
"trustManifest": {
"publisher": "Acme Ltd",
"contact": "mailto:hello@acme.example",
"license": "https://creativecommons.org/licenses/by/4.0/",
"canonical": "https://acme.example/llms.txt",
"lastUpdated": "2026-09-16"
}
}
]
}Does your site have this?
The free checker scores your site against ARD catalog and everything else on this list, out of 100, in about ten seconds. It names what is missing rather than handing you a number.
Common questions
- What is the correct URN format for ARD entries?
- Domain-anchored urn:air identifiers, in the shape urn:air:{your-domain}:{kind}:{name}. Using urn:ai instead is a silent validation failure that costs several checks at once.
- Where does the ARD catalog go?
- /.well-known/ard.json is the v0.91 canonical path. /.well-known/ai-catalog.json is kept as an equivalent predecessor path, and serving the same document at both is fine.
Sources
- 01Agentic Resource Discovery, agenticresourcediscovery.org
The rest of the reference
- llms.txtWhat is llms.txt, and does it actually do anything?
- agent-card.jsonWhat is agent-card.json, and do you need one?
- WebMCPWhat is WebMCP? Tools on your web page, no server required
- Markdown twinsHow to serve markdown to AI agents (and why .md matters)
- robots.txt for AIHow to write robots.txt for AI crawlers
- pricing.mdWhat is pricing.md, and should you publish your prices?
- Web Bot AuthWhat is Web Bot Auth? Letting good agents identify themselves
- MCP server cardWhat is server-card.json, and how do agents find your MCP server?
- auth.mdWhat is auth.md, and what if nothing needs authentication?