Implement ARD (Agentic Resource Discovery)
Publish a capability manifest so agents can discover your MCP servers, A2A agents, skills and API tools, per the ARD spec and the ai-catalog data model.
The ARD spec is a v0.9 draft, so the scanner validates structure only and reports non-conformant identifiers and media types without failing the check.
Note that specVersion refers to the ai-catalog data model, not the ARD spec
version, which is why the example below reads 1.0. The scanner only requires
it to be a non-empty string.
Requirements
- Serve
/.well-known/ai-catalog.jsonfrom the origin root withContent-Type: application/json, HTTP 200, andAccess-Control-Allow-Origin: * - Include a
specVersionstring and a non-emptyentriesarray - Add a
hostobject withdisplayNameand a stableidentifier - Each entry needs an
identifier, adisplayName, and atypemedia type - Each entry needs exactly one of
urlordata— never both, never neither (spec §3.4) - Use
urn:air:<your-fqdn>:<namespace>:<name>for entry identifiers - Add 2-5
representativeQueriesper entry so registries can build semantic embeddings
Example
json{ "specVersion": "1.0", "host": { "displayName": "Example Systems", "identifier": "did:web:example.com" }, "entries": [ { "identifier": "urn:air:example.com:server:weather", "displayName": "Weather Telemetry Server", "type": "application/mcp-server-card+json", "url": "https://example.com/mcp/weather.json", "representativeQueries": [ "what is the wind speed in Chicago", "get the 5-day forecast for Seattle" ] } ] }
Additional discovery mechanisms
The well-known path is the primary mechanism. Any of the following can point agents at a manifest hosted elsewhere (spec §6.1), and the scanner reports which ones you publish:
- robots.txt: add an
Agentmap: https://example.com/ai-catalog.jsondirective - HTML: add
<link rel="ai-catalog" href="/.well-known/ai-catalog.json">to<head> - DNS: publish a
_catalog._agents.example.comTXT record containingurl=https://example.com/.well-known/ai-catalog.json - DNS: publish a
_search._agents.example.comSRV record to advertise a semantic search endpoint (reported only; the scanner never queries it)
Validate
POST https://isitagentready.com/api/scan Content-Type: application/json {"url": "https://YOUR-SITE.com"}
Check that checks.discovery.ard.status is "pass".

