Agentic Resources

The reference
for agent discovery

Agentic Resource Discovery is how an agent finds a capability before it calls one. This is the independent guide to it: what the spec says, how to publish, a validator that runs in your browser, and adoption measured rather than asserted.

Verified publishers · fetched 4 September 2026
DiscoveryPOST /searchfederation: referrals
// request
{
  "query": {
    "text": "reconcile last month's invoices",
    "filter": { "type": ["application/mcp-server-card+json"] }
  },
  "federation": "referrals"
}

// response
{
  "results": [{
    "identifier": "urn:air:example.com:server:invoices",
    "displayName": "Invoice Tools",
    "url": "https://example.com/.well-known/mcp/server-card.json",
    "score": 94
  }],
  "referrals": [{
    "displayName": "Public Agent Finder",
    "url": "https://finder.example/search"
  }]
}
score = relevance onlytrust is evaluated separately

01 What ARD is

Search for capabilities, indexed from a file you host

Today an agent can only use tools somebody wired in by hand. ARD adds the missing step: you describe what you offer once, on your own domain, and any registry can index it and answer plain-language queries against it. Domain ownership is the trust anchor.

  1. 01
    Publish
    One manifest lists your MCP servers, agents, skills and APIs, each with example queries it serves.
  2. 02
    Index
    Public and private registries fetch manifests and build a semantic index.
  3. 03
    Search
    A client asks in natural language and gets ranked entries back.
  4. 04
    Connect
    The client calls the winner over its native protocol. MCP says how to call a tool; ARD says which one exists and where.
StandardAnswers the questionGovernance
ARDWhich capability should I use, and where is it?Apache-2.0 · no governing body named · data model from the AI Catalog WG (Linux Foundation)
MCPHow do I call this tool?Agentic AI Foundation (Linux Foundation)
A2AHow do I delegate to another agent?Linux Foundation · v1.0 April 2026
WebMCPHow does a web page expose tools in the browser?W3C community group
llms.txtWhat should a model read on this site?Informal convention

02 Publish

A minimal manifest

A manifest is a JSON file with an entries array. Each entry needs four things: a domain-anchored identifier, a displayName, a type as an IANA media type, and one of url or data. Add two to five representativeQueries or registries cannot rank you.

Identifier

urn:air:<publisher>:<namespace>:<name>, where the publisher is a domain you control. The prefix is air, not ard. A registry rejects urn:air:google.com:… unless the trust manifest proves google.com issued it.

Serve it at both paths

/.well-known/ard.json is the current name. /.well-known/ai-catalog.json is the one the deployed web still uses; every publisher we found serves it and only six serve the new name. Serve the same file at both, and add <link rel="ard"> to your home page.

Manifest/.well-known/ard.json● conformant
{
  "entries": [
    {
      "@context": "https://agenticresourcediscovery.org/context/v1",
      "identifier": "urn:air:example.com:server:invoices",
      "displayName": "Invoice Tools",
      "type": "application/mcp-server-card+json",
      "url": "https://example.com/.well-known/mcp/server-card.json",
      "description": "Create, send and reconcile invoices.",
      "representativeQueries": [
        "send an invoice to a customer",
        "check whether invoice 4021 was paid",
        "reconcile last month's receivables"
      ],
      "capabilities": ["CreateInvoice", "InvoiceStatus", "Reconcile"],
      "version": "1.2.0",
      "updatedAt": "2026-09-04T09:00:00Z"
    }
  ]
}
● 4 required terms3 representative queriesurn:air
Media typeForRegistration
application/mcp-server-card+jsonAn MCP server, pointing at its server cardde-facto · IANA pending
application/a2a-agent-card+jsonAn A2A agent, pointing at its agent cardde-facto · IANA pending
application/ai-skill+mdA skill file such as SKILL.mdde-facto
application/ai-registry+jsonAnother ARD registry; this is how federation is discoveredde-facto
application/vnd.oai.openapi+jsonA REST API described by OpenAPIregistered

Checked against the v0.91 text and JSON Schema on 4 September 2026. The spec asks intermediaries not to verify type values strictly while IANA registration is pending.

03 Validator

Check a manifest before a registry does

Runs in your browser; nothing is uploaded. Paste a manifest or a single entry and it checks the structural rules and discovery constraints from Appendix D of the spec.

Manifestpaste ard.json
Resultspec v0.91

    For the authoritative check the spec repository ships a zero-dependency CLI, conformance/bin/conformance-test, which validates manifests, resolves a live domain and probes registry endpoints. Source on GitHub.

    04 Field reference

    Every term in the base context

    Unprefixed terms belong to the default namespace. An entry may declare extra namespaces in @context; registries index what they recognise and keep the rest.

    TermTypeReq.Purpose
    identifierstringmustDomain-anchored URN, urn:air:<publisher>:<namespace>:<name>. The stable identity of the resource.
    displayNamestringmustHuman-readable name shown in registry results.
    typestringmustIANA media type identifying what kind of artifact this is.
    url@idmust*Where the artifact document lives: the server card, agent card or OpenAPI file.
    data@jsonmust*The artifact inline, as the alternative to url. Never both.
    representativeQueriessetshouldTwo to five natural-language queries this resource serves well. Registries build their semantic index from these. Missing or mis-sized is a warning, not an error, but an entry without them will not be found by search.
    capabilitiessetmayShort skill or tool tokens for fast structured filtering without fetching the artifact.
    descriptionstringmayProse summary.
    tagssetmayFree-form labels; filterable.
    versionstringmayVersion of the resource described.
    updatedAtxsd:dateTimemayWhen the entry last changed; lets registries sync incrementally.
    metadata@jsonmayArbitrary publisher-defined JSON. Dot-paths into it are filterable if the registry indexes them.
    trustManifest@jsonmayIdentity, attestations, provenance and signatures. ARD reads only identity, which must align with the URN's publisher domain; the declared framework defines verification.
    @contextIRI / objectmayOptional in the file; consumers apply the base context regardless. Include it when the entry may be read by generic JSON-LD tooling.
    @idIRImayJSON-LD node id. If present alongside identifier, both must denote the same resource.

    * Exactly one of url or data. Schema source: ard-entry.schema.json, which deliberately sets additionalProperties: true.

    05 Routes

    Two layers, five publishing routes

    You publish; registries crawl and expose search. The spec defines five ways to advertise a manifest and requires consumers to honour two. Only one registry endpoint is mandatory.

    Static routeConsumer obligationHow
    Well-known URImust fetchhttps://{domain}/.well-known/ard.json, a manifest with an entries array.
    HTML link tagmust honour<link rel="ard" href="…"> in a document's head.
    In-page JSON-LDmayEntry embedded in the page describing the resource, found by ordinary crawling.
    Agentmap directivemayAgentmap: https://example.com/entries.json in robots.txt, by analogy with Sitemap.
    DNSmayService Binding records at _entries._agents.example.com or _search._agents.example.com.
    Registry endpointRequiredWhat it does
    POST /searchmustRanked entries for natural-language text plus optional filter. Federation modes auto, referrals, none. The score is relevance only and must never be read as trust.
    POST /exploremayFacet breakdowns over the matched set. Scoped to one registry; does not federate. Returns 501 if unimplemented.
    GET /agentsmayDeterministic browsing with structured filters, sorting and pagination, for developer portals.

    Only /search is mandatory. A registry may additionally expose search as an MCP tool or A2A skill, returning the same entry model.

    06 Adoption

    Measured, not asserted

    Every announcement calls ARD industry-backed, which is true, and implies it is widely deployed, which is a separate claim. Here is what has been counted, starting with our own probe. Method and domain list are published so you can repeat it.

    31/ 50
    Domains serving a manifest

    Fifty domains fetched at both paths on 4 September 2026: the 11 launch backers, the spec's own domain, known publishers, and a control group of large API companies.

    6/ 31
    On the new ard.json path

    All 31 publishers serve ai-catalog.json. Six also serve ard.json. Nobody serves the new path alone.

    1/ 11
    Launch backers publishing at root

    Only Hugging Face serves a manifest at its root domain. GitHub publishes 251 entries at a subdomain. The spec's own domain serves none.

    Finding The path split

    The spec says ard.json. The web still says ai-catalog.json.

    Version 0.91 renamed the manifest. Every publisher we found still serves the old name, and only six also serve the new one. A tool that checks only ard.json will report that almost nobody has adopted ARD. That is a measurement error, not a fact.

    Probe4 Sep 2026● 31 / 50 serving
    Path/.well-known/ai-catalog.json
    Publishers found31 of 31
    Path/.well-known/ard.json
    Publishers found6 of 31
    Launch backers at root1 of 11
    Spec's own domainno manifest
    // GET https://railway.com/.well-known/ard.json
    200 OK  application/json  8 entries
    // GET https://zapier.com/.well-known/ard.json
    404     falls back to ai-catalog.json → 200, 14 entries
    // GET https://google.com/.well-known/ard.json
    404     no manifest at either path
    ● ai-catalog.json 31ard.json 6● none 19raw json
    SourceDomains checkedManifests foundNote
    Neuronto ARD Registry375,995246207 publishers with 2,215 declared resources. 182 on the old path, 25 on the new. Verified by fetching, not by trusting other registries.
    API Evangelist audit43,83412Nine publishers; zero manifests fully conformant to the schema at the time of the audit.
    This page5031Targeted sample, not a crawl. Chosen to test the launch backers and the path split.

    The counts differ by two orders of magnitude because the crawl frames differ. Read the ratio: publishing is real but thin, and concentrated among developer-tool companies. Serving a manifest says nothing about trust or quality.

    Method and full domain list

    For each domain we fetched /.well-known/ard.json and /.well-known/ai-catalog.json over HTTPS with a 12-second timeout, following redirects, with the user agent agenticresources.dev-probe/0.1. A path counts as serving when it returns 200 and the body parses as JSON containing an entries array, an array of entries, or a single entry object. Raw results: probe-2026-09-04.json.

    Serving (31): api.mcp.github.com, 2s.io, zapier.com, apify.com, clickhouse.com, hostinger.com, airtable.com, surrealdb.com, neon.com, railway.com, eodly.io, amplitude.com, padlet.com, publica.la, speakeasy.com, desvela.dev, nextjs.org, quicknode.com, bird.com, developers.cloudflare.com, telnyx.com, vercel.com, fly.io, getlago.com, neuronto.com, roboflow.com, gtmetrix.com, huggingface.co, img.ly, loops.so, rudderstack.com.

    Not serving (19): google.com, microsoft.com, github.com, cisco.com, databricks.com, nvidia.com, salesforce.com, servicenow.com, snowflake.com, godaddy.com, aws.amazon.com, agenticresourcediscovery.org, stripe.com, openai.com, anthropic.com, cloudflare.com, shopify.com, notion.so, slack.com.

    How to read this

    Thin publisher adoption days after a v0.91 proposal is unremarkable. The registry side shipped first: GitHub, Hugging Face, Google Cloud and AWS all consume ARD today, so the pressure to publish is arriving from the platforms. The honest comparison is llms.txt: enormous discourse, negligible adoption for a long while, then a default in framework tooling.

    These numbers appear here because nobody whose business depends on ARD succeeding is in a position to publish them.

    08 Get published

    We write, validate and publish your catalogue

    You already have the resources: an MCP server, a public API, a few agents. What is missing is the afternoon it takes to describe them correctly, at both paths, with queries a registry can rank. We do that part.

    • An inventory of everything on your domain an agent could call: MCP servers, A2A agents, skills, OpenAPI services, workflows.
    • A manifest that passes the official conformance CLI, served at both paths, with the link tag and, where useful, the robots and DNS routes.
    • Representative queries written for retrieval, not marketing, so registries return you for the requests you serve.
    • A trust manifest that binds your domain to your identifier, with guidance on the framework to declare.
    • Verification that GitHub, Hugging Face and the independent registries can resolve you, and a listing in the directory above.
    • A re-check when the spec moves, which at v0.91 it will.

    Delivered by Belgravia Labs. The reference stays independent: publishing with us does not change your entry, rank or listing here.

    Opens a pre-filled email to info@belgravialabs.com. We reply within one working day. No mailing list, no tracking.

    Describe what you offer once. Let every registry find it.