ai-catalog.json: Resource Discovery for AI

Author: Published Updated

In brief: /.well-known/ai-catalog.json is an earlier path for publishing a resource manifest for AI agents, described as the predecessor to /.well-known/ard.json in the Agentic Resource Discovery (ARD) specification. This kind of manifest describes available tools, agents or instructions for using them in a structured JSON format. New implementations should use the ard.json path and an HTML link with rel="ard".

This article is based on the ARD v0.91 specification , dated 26 August 2026 and marked as a Proposal. The documentation was checked on 3 October 2026.

What is a resource catalog for agents used for?

An assistant that needs an external tool must first establish what the tool does and where to find its description. A manifest lets the publisher present this information in a shared structure. Individual entries can point to, among other things, an MCP server description, an A2A agent card or a file containing instructions for performing a task, known as a skill.

In ARD, publishing a manifest is the static part of resource discovery. A registry has a separate role: it retrieves entries, indexes them and provides search. This allows a client to submit a query describing a specific need and receive matching resources. The JSON file itself does not execute tools; the relevant protocol or instructions define how to run them. These layers are described in sections 3 and 5 of the specification .

Why is ard.json used now?

In section 5.1 , the specification sets out clear rules for discovering manifests:

MechanismCurrent nameEarlier name
File on the domain/.well-known/ard.json/.well-known/ai-catalog.json
Link in HTMLrel="ard"rel="ai-catalog"
Support by an ARD clientRequired when discovering domain entriesOptional backward compatibility

A specification-compliant client discovering a domain’s resources must fetch /.well-known/ard.json and honor the rel="ard" link. It may also check the earlier path and the ai-catalog relation; if it does, it treats them as equivalent sources of entries.

This means that a site providing only ai-catalog.json may be missed by a correctly functioning ARD client. The specification recommends switching to ard.json. Keeping the old address alongside the new one remains an option for older integrations, not a requirement for a new implementation.

What does a valid manifest look like?

The document contains an entries array with descriptions of individual resources. The example below is an abridged version of the Domeny.ForSale manifest :

{
  "entries": [
    {
      "identifier": "urn:air:domeny.forsale:skill:domain-catalog-search",
      "displayName": "Domeny.ForSale catalog search",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://domeny.forsale/.well-known/agent-skills/domain-catalog-search/SKILL.md",
      "capabilities": ["searchDomainCatalog"],
      "representativeQueries": [
        "find a domain for sale for an online store",
        "show articles about choosing and buying a domain"
      ]
    }
  ]
}

The entry points to instructions for searching the catalog . These instructions describe how to use the WebMCP tool searchDomainCatalog or, when it is unavailable, how to search the site’s JSON index. The address in url therefore leads to a document explaining how to proceed.

According to sections 4.2 and 4.3 :

A manifest may also contain additional top-level fields, such as host or specVersion. ARD assigns no meaning to them in its manifest model. This is why "specVersion": "1.0" in our file does not mean that the current ARD specification is version 1.0. The structure is formally defined by the entry and manifest schema .

How do you migrate from ai-catalog.json to ard.json?

You can migrate an existing catalog in four steps:

  1. Check the entries against the current ARD schema, including identifiers, resource addresses and example queries.
  2. Make the manifest available at /.well-known/ard.json on your own domain.
  3. Add a link to this document in the <head> section of your pages.
  4. Check that the manifest and the referenced resources can be fetched, and run validation. If you keep the old path for existing clients, keep both versions consistent.

The link can look like this:

<link rel="ard" href="/.well-known/ard.json" type="application/json">

The specification provides a conformance testing tool . It lets you check the manifest and its discovery on the domain.

What does publishing this file achieve?

A manifest makes it easier for software supporting ARD to identify a site’s capabilities. In our example, it describes how to search for domains and articles. For a resource to appear in a particular registry’s results, that registry must discover the source and index it.

Publishing the file alone does not guarantee support by any given assistant or a higher ranking in Google. Test its practical effect in an integration that actually uses ARD: does it fetch the manifest, recognize the entry and know how to use the referenced resource?

See also: What is ARD?

Read also

Learn how PHP-FPM handles PHP requests, how it differs from a web server, and how to tune processes for traffic and hosting resources.
Learn how BIND, open-source DNS server software, handles domains, how its two roles differ and when running it yourself makes sense.
Learn what Poland’s REGON register and identification number mean, how they differ from NIP and KRS, and how to check a business’s details.