Skip to content

ARD catalog

The ARD catalog (Agentic Resource Discovery, ai-catalog.json) is a signed index of your store’s agent-facing endpoints: your agent card and your MCP server. Agents that support ARD read it to find those endpoints and confirm they belong to your domain. Sill publishes one for every verified site; there is nothing to configure.

GET https://edge.sill.so/v1/catalog/{site_key}.json

Copy the exact URL from Settings → Install → Endpoint → Catalog URL, or click View catalog to open it. Your agent card links to it in catalog_endpoint, and the script tag adds a <link rel="ai-catalog"> tag to your pages.

Catalog URL row in Settings with the store's signed catalog URL, a copy button and View catalog Your signed catalog URL, ready to copy or open.

A Cloudflare Worker or WordPress plugin install also answers /.well-known/ai-catalog.json on your own domain, so an agent that only looks at the standard path still finds your signed catalog. /ai-catalog.json answers at the same place for older clients, and /.well-known/api-catalog carries an RFC 9727 linkset that points to the catalog, your agent card and your MCP server. The embed script alone cannot serve files on your domain, so a script-tag-only site is read through the version on edge.sill.so. See What each install covers.

{
"specVersion": "1.0",
"host": {
"displayName": "Northwind Coffee Co.",
"identifier": "did:web:northwind-coffee.example",
"trustManifest": {
"identity": "did:web:northwind-coffee.example",
"identityType": "did",
"signature": "eyJhbGciOiJFZERTQSIs…..…"
}
},
"entries": [
{
"identifier": "urn:ai:northwind-coffee.example:agent:storefront",
"displayName": "Northwind Coffee Co. storefront agent",
"type": "application/a2a-agent-card+json",
"url": "https://edge.sill.so/v1/agent-card/SITE_KEY.json",
"capabilities": ["browse_catalog", "check_availability", "order_status"],
"updatedAt": "2026-10-01T15:00:00.000Z",
"trustManifest": {
"identity": "did:web:northwind-coffee.example",
"identityType": "did",
"provenance": [
{ "relation": "publishedFrom", "sourceId": "urn:ai:sill.so:platform:catalog-publisher" }
],
"signature": "eyJhbGciOiJFZERTQSIs…..…"
}
},
{
"identifier": "urn:ai:northwind-coffee.example:server:skills",
"displayName": "Northwind Coffee Co. MCP server",
"type": "application/mcp-server+json",
"url": "https://edge.sill.so/v1/mcp/SITE_KEY",
"capabilities": ["browse_catalog", "check_availability", "order_status"],
"updatedAt": "2026-10-01T15:00:00.000Z",
"trustManifest": { "…": "same shape as above" }
}
]
}
  • host.identifier is your verified domain as a did:web identifier.
  • entries[] has two entries: your agent card and your MCP server, each with the skill ids it offers in capabilities. These are the same skills your agent card and MCP tools/list list; a site with no live skills has an empty capabilities list.
  • Cache-Control: public, max-age=60. A site whose domain is not verified yet returns 404.

Each trustManifest (the host’s and each entry’s) carries its own signature: a detached JWS in compact form (header..signature, empty middle part), made with ed25519 over the JCS-canonical (RFC 8785) bytes of that trust manifest without its signature field. The JWS header carries alg: EdDSA, typ: ard-catalog+jcs and a kid that resolves in Sill’s public JWKS:

GET https://edge.sill.so/.well-known/jwks.json

It is the same key that signs your agent card. The signature covers identity, identityType and provenance. The other entry fields (url, capabilities, displayName, description, updatedAt) are not inside the signature. To check the endpoints’ content itself, verify the signed agent card the catalog points to.

For the step-by-step check, see Verify a signature.