Patterns
Agentic Resource Discovery
Open Standard Β· agenticresourcediscovery.org Β· Announced June 17, 2026

Agentic Resource Discovery

An open, federated specification for publishing, discovering, and cryptographically verifying AI capabilities across organizational and network boundaries.

Origin: Agentic Resource Discovery (ARD) was announced by Google on June 17, 2026 and developed with partners across the industry including Microsoft, Hugging Face, GitHub, Cisco, Salesforce, NVIDIA, Databricks, and more. Licensed Apache 2.0. Source: agenticresourcediscovery.org/spec and github.com/ards-project/ard-spec.

Problem: Today, an agent that needs a capability must have it pre-installed or hardcoded. This mirrors the early mobile app paradigm: you had to know a tool existed, manually install it, and keep it updated. As the ecosystem scales to thousands or millions of agents, this approach breaks in three ways:

  1. Discovery across organizations β€” There is no standard way for an agent to ask “what capability should I use for X?” across teams, organizations, or cloud providers.
  2. Context window saturation β€” Agents currently select tools by stuffing all tool descriptions into their context window. At scale (thousands of tools), this does not fit. You cannot inject 10,000 MCP server descriptions into an LLM prompt.
  3. Trust and identity β€” Even if an agent finds a capability, there is no standard mechanism to confirm it is connecting to a legitimate, uncompromised endpoint β€” not an impersonator or a compromised mirror.

Solution: Agentic Resource Discovery (ARD) β€” an open, federated specification for publishing, discovering, and cryptographically verifying AI capabilities β€” including MCP servers, A2A agents, skills, APIs, and other callable services β€” across organizational and network boundaries.

Think of it as:

  • DNS for AI agents β€” a standard naming and lookup infrastructure
  • robots.txt for AI capabilities β€” a well-known, crawlable declaration format
  • A search engine for tools β€” an indexed, queryable registry system

ARD answers all three questions:

  • Where does the right capability live? β†’ Catalogs + Registries
  • Which capability should I actually use? β†’ Semantic search + scoring
  • How do I verify it is safe to connect to? β†’ Trust manifest + cryptographic attestation

Core Concepts: Catalogs and Registries

ARD architecture rests on two primitives:

Catalogs

A catalog is a static JSON manifest file β€” ai-catalog.json β€” hosted on an organization’s own domain at a well-known path. It advertises the AI capabilities that organization makes available.

Because the catalog is hosted at the organization’s own domain (e.g., https://acme.com/.well-known/ai-catalog.json), domain ownership becomes the cryptographic foundation for identity and trust. If you control acme.com, your catalog is authoritative for all capabilities under urn:ai:acme.com:....

Registries

A registry is a searchable, dynamic service that crawls published catalogs, indexes their entries, and exposes a REST search API for agents to query. Registries are the “search engines” of the agentic web.

When an agent submits a discovery request (e.g., “find me a flight booking agent”), a registry:

  1. Runs semantic search over its indexed entries
  2. Returns matching capabilities with relevance scores
  3. Includes verifiable trust metadata so the agent can authenticate before connecting
  4. Optionally refers the agent to other registries for broader coverage

Registries do not proxy the actual tool calls. They are purely a discovery and trust layer. Once the agent has found and verified a capability, it connects directly using the native protocol (MCP, A2A, OpenAPI, etc.).

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   AGENT / ORCHESTRATOR           β”‚
β”‚                                                  β”‚
β”‚  1. Query registry  ──────────────────────────►  β”‚
β”‚  4. Connect directly to tool via native protocol β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                 β”‚
         β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
         β”‚   REGISTRY     β”‚  (indexes & searches catalogs)
         β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                 β”‚ crawls
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚  domain.com/.well-known/      β”‚
    β”‚  ai-catalog.json  (CATALOG)   β”‚  (hosted by capability provider)
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

The Six Design Principles

ARD is governed by six explicit design principles:

Search-First Discovery

Instead of requiring pre-installation of agents (the “app store” model), ARD promotes dynamic discovery at runtime. Registries maintain continuously updated indexes. The moment a capability is published, it becomes discoverable.

Scalability Beyond Context Windows

Traditional tool selection injects all descriptions into the LLM’s context window. ARD moves the selection problem outside the LLM into a dedicated search service. Information retrieval techniques scale to millions of capabilities without consuming context tokens.

Artifact-Agnostic Envelope

ARD does not define or constrain the internal schema of MCP servers, A2A agents, or any other type. It acts as a clean envelope. A type field (formatted as an IANA Media Type) identifies what an artifact is; the protocol-specific schema lives inside the artifact’s own spec. This keeps ARD future-proof.

Strict Value-or-Reference

Every catalog entry must contain exactly one of two mutually exclusive keys for content delivery:

  • url β€” a remote URL pointing to the full artifact document
  • data β€” the artifact document embedded inline as a JSON object

This prevents ambiguity in parsing and ensures predictable behavior in enterprise environments.

Universal Baseline for Federation

Registries MUST expose a standard HTTP REST interface for search. This guarantees that any system can participate in discovery regardless of its execution stack. Federation between registries becomes simple HTTP calls.

Separation of Concerns

ARD cleanly separates three responsibilities:

  • Authentication β€” delegated to the artifact’s native protocol (e.g., OAuth for an API, mTLS for MCP)
  • Identity/Trust verification β€” handled by the trustManifest layer
  • Physical distribution β€” left to infrastructure (OCI, npm, S3, etc.)

The Data Model β€” ai-catalog.json

Top-Level Structure

The manifest lives at /.well-known/ai-catalog.json on the publisher’s domain.

{
  "specVersion": "1.0",
  "host": {
    "displayName": "Acme Enterprise AI",
    "identifier": "did:web:acme.com"
  },
  "entries": [
    { /* ... catalog entry ... */ }
  ]
}

Top-level fields:

FieldRequiredDescription
specVersionYesAlways "1.0" for this version
hostYesDescribes the operator of this catalog
entriesYesArray of capability entries

host object fields:

FieldRequiredDescription
displayNameYesHuman-readable name of the publisher
identifierNoVerifiable identifier (DID or domain)
documentationUrlNoLink to documentation
logoUrlNoLink to a logo image
trustManifestNoTrust metadata for the publisher itself

Catalog Entry Object

Each entry in the entries array describes one AI capability.

Required fields:

FieldTypeDescription
identifierStringGlobally unique URN: urn:ai:<publisher>:<namespace>:<agent-name>
displayNameStringHuman-readable name
typeStringIANA media type of the artifact

Exactly one of:

FieldTypeDescription
urlStringRemote URL of the full artifact document
dataObjectInline embedded artifact document

Optional fields:

FieldTypeDescription
descriptionStringShort description of the capability
tagsArrayKeywords for filtering
capabilitiesArraySpecific skill/tool names (e.g., ["WeatherTool"])
representativeQueriesArray2–5 natural language example queries for semantic search
versionStringArtifact version string
updatedAtStringISO 8601 timestamp
metadataMapCustom key-value pairs
trustManifestObjectVerifiable identity and trust metadata

The URN Identifier Format

The identifier field follows a mandatory domain-anchored URN format per IETF RFC 8141:

urn:ai:<publisher>:<namespace>:<agent-name>

Breaking down each segment:

urn        β†’  Mandatory RFC 8141 prefix
ai         β†’  Namespace Identifier (NID) for the AI ecosystem
acme.com   β†’  <publisher>: a fully qualified domain name (FQDN) β€” the trust anchor
travel     β†’  <namespace>: optional hierarchical category (dept, team, product line)
concierge  β†’  <agent-name>: the specific logical name of this capability

Example:

urn:ai:acme.com:travel:concierge
urn:ai:github.com:alice-dev:pptx-creator
urn:ai:hf.co:alice-dev:weather-agent

Why this format? Five architectural reasons:

  1. Nomenclature stability β€” A URN is a permanent “noun” for the capability, decoupled from its physical location. If Acme migrates to a new API gateway, the URL in url changes but urn:ai:acme.com:travel:concierge stays stable forever.

  2. Separation of concerns β€” Discovery registries index the URN as a stable key. Security meshes use the trustManifest.identity (a SPIFFE ID or DID) for runtime authentication. These are separate systems that must not be conflated.

  3. Decentralized trust binding β€” Registries programmatically extract the domain from the URN (acme.com) and cross-reference it against the cryptographic claim in trustManifest.identity. No central naming committee required.

  4. Search ergonomics β€” Structured hierarchy enables deterministic parsing. An LLM query for “the Acme travel agent” maps cleanly to publisher acme.com + namespace travel.

  5. Cross-network uniqueness β€” Domain names are globally unique via DNS, so URNs anchored to domains are collision-free when merging catalogs across federated registries.

Supported Artifact Types

The type field uses IANA media type format. Current de-facto community types:

TypeDescription
application/mcp-server+jsonModel Context Protocol server
application/a2a-agent-card+jsonGoogle A2A agent card
application/ai-catalog+jsonA nested ARD catalog (for bundles or sub-catalogs)
application/ai-registry+jsonAn ARD registry endpoint
application/ai-skillA callable skill or function
application/ai-skill+mdA skill defined as a markdown document
application/parquetA data artifact (e.g., market dataset)

Note: application/a2a-agent-card+json and application/mcp-server+json are de-facto community standards tracking towards formal IANA registration. Implementations should not perform strict type verification by intermediaries until registration is complete.


Identity, Trust, and the trustManifest

ARD separates the discovery identifier (the URN, used for indexing) from the cryptographic identity (used for runtime authentication). The trustManifest object bridges them.

The Trust Manifest Object

"trustManifest": {
  "identity": "spiffe://acme.com/travel/concierge",  // Required
  "identityType": "spiffe",                           // Optional type hint
  "attestations": [ /* ... */ ],                     // Optional compliance proofs
  "provenance": [ /* ... */ ],                       // Optional lineage
  "signature": "eyJhbGci..."                         // Optional JWS signature
}
FieldRequiredDescription
identityYesCryptographic workload identifier (SPIFFE ID, DID, or HTTPS FQDN URI). The trust domain in this identity MUST align with the <publisher> domain in the URN.
identityTypeNoType hint: "did", "spiffe", or "https"
attestationsNoArray of verifiable compliance claims
provenanceNoArray of lineage records
signatureNoDetached JWS signature over the trust manifest content

Attestation Object

Attestations provide cryptographically verifiable proof of compliance claims.

{
  "type": "SOC2-Type2",
  "uri": "https://trust.acme.com/reports/soc2.pdf",
  "digest": "sha256:abc123..."  // Optional hash for integrity
}
FieldRequiredDescription
typeYesClaim type: "SOC2-Type2", "HIPAA-Audit", "GDPR", "SPIFFE-X509", etc.
uriYesURL of the attestation document
digestNoCryptographic hash for integrity verification

Trust Verification Flow

1. Agent fetches entry from registry
        β”‚
        β–Ό
2. Agent extracts <publisher> from URN identifier
   (e.g., "acme.com" from "urn:ai:acme.com:travel:concierge")
        β”‚
        β–Ό
3. Agent reads trustManifest.identity
   (e.g., "spiffe://acme.com/travel/concierge")
        β”‚
        β–Ό
4. Agent verifies the trust domain in the identity
   matches the publisher domain in the URN
        β”‚
        β–Ό
5. Agent fetches and validates attestation documents
   (e.g., checks SOC2 report URI, SPIFFE JWKS endpoint)
        β”‚
        β–Ό
6. Agent establishes direct connection using native protocol
   (the trustManifest hands off; ARD steps out of the way)

Important: The relevance score in search results (0–100) reflects only semantic relevance. It MUST NOT be interpreted as a trust, compliance, or safety rating. Trust evaluation is fully decoupled and handled entirely through trustManifest verification.


Discovery Mechanisms

ARD defines four ways a capability can be found:

Method 1: Well-Known URI (Primary)

Host the manifest at the standard path. This is the default and most widely supported method.

https://<your-domain>/.well-known/ai-catalog.json

Method 2: Agentmap Directive in robots.txt

Add a line to your existing robots.txt pointing to a non-standard location:

Agentmap: https://example.com/path/to/catalog.json

Include a link tag in the <head> of your website’s HTML:

<link rel="ai-catalog" href="https://example.com/ai-catalog.json">

Method 4: DNS Records

Publish DNS records for discovery when you cannot modify the web server.

For a static catalog (TXT record):

Name:  _catalog._agents.yourdomain.com
Type:  TXT
Value: "url=https://custom-bucket.s3.amazonaws.com/ai-catalog.json"

For a dynamic registry search endpoint (SRV record):

Name:    _search._agents.yourdomain.com
Type:    SRV
Port:    443
Target:  search.yourdomain.com

The ARD REST API

An ARD registry MUST expose a standard HTTP REST interface. The base URL is discovered by finding catalog entries with type application/ai-registry+json in the ai-catalog.json manifest.

The Query Model

The POST /search and POST /explore endpoints both accept a shared query object:

{
  "query": {
    "text": "find me a flight booking agent",
    "filter": {
      "type": ["application/a2a-agent-card+json"],
      "tags": ["travel"],
      "trustManifest.attestations.type": ["SOC2-Type2"]
    }
  }
}
FieldDescription
textNatural language intent. Enables semantic relevance ranking.
filterStructured key-value constraints. Keys are dot-separated field paths into the catalog entry schema.

Filter logic: text and filter compose with AND. Within a single filter key, multiple values compose with OR. Across keys, all constraints compose with AND.

POST /search β€” Semantic Search (Required)

Returns catalog entries ranked by relevance to a natural language query. text is required; filter is optional.

Request:

{
  "query": {
    "text": "find me a flight booking agent",
    "filter": {
      "type": ["application/a2a-agent-card+json"]
    }
  },
  "federation": "referrals",
  "pageSize": 5
}

Additional parameters beyond query:

FieldDefaultDescription
federation"auto"Federation mode: "auto", "referrals", or "none"
pageSize10Max results per page (max: 100)
pageTokenβ€”Pagination token for subsequent pages

Response:

{
  "results": [
    {
      "identifier": "urn:ai:acme.com:agent:assistant",
      "displayName": "Corporate Assistant (A2A)",
      "type": "application/a2a-agent-card+json",
      "url": "https://api.acme.com/agents/assistant.json",
      "score": 95,
      "source": "https://registry.acme.com/api/v1/"
    }
  ],
  "referrals": [
    {
      "identifier": "urn:ai:nlweb.ai:registry:public",
      "displayName": "Public Agent Finder",
      "type": "application/ai-registry",
      "url": "https://finder.nlweb.ai/search"
    }
  ],
  "pageToken": "eyJwYWdlIjogMn0="
}

Federation β€” Connecting Registries

Federation is how individual registries form a global network. Because the REST API is mandated, registry-to-registry routing is a simple HTTP operation.

The client controls federation via the federation parameter on POST /search:

ModeBehavior
"auto"Registry queries upstream registries automatically, merges results, returns unified response. Client sees one result set.
"referrals"Registry returns its own results plus catalog entries for other registries the client may query. Client decides which referrals to follow.
"none"Registry searches only its own index. No upstream queries.

Quick Reference

Publish your first catalog:

  1. Create ai-catalog.json with your capability entries
  2. Host at https://yourdomain.com/.well-known/ai-catalog.json
  3. Configure CORS headers: Access-Control-Allow-Origin: *
  4. Verify with curl -I https://yourdomain.com/.well-known/ai-catalog.json
  5. (Optional) Add Agentmap directive to robots.txt
  6. (Optional) Register with a public ARD registry

Query an ARD registry:

curl -X POST https://api.registry-provider.com/v1/search \
  -H "Content-Type: application/json" \
  -d '{
    "query": {
      "text": "find me a flight booking agent"
    },
    "pageSize": 5
  }'

Add trust metadata:

"trustManifest": {
  "identity": "spiffe://acme.com/travel/concierge",
  "identityType": "spiffe",
  "attestations": [
    {
      "type": "SOC2-Type2",
      "uri": "https://trust.acme.com/reports/soc2.pdf"
    }
  ]
}

References:

ResourceURL
Specificationhttps://agenticresourcediscovery.org/spec/
GitHub Repositoryhttps://github.com/ards-project/ard-spec
How to Publishhttps://agenticresourcediscovery.org/how_to_publish/
Google Cloud Implementationhttps://docs.cloud.google.com/agent-registry/overview
RegistriesGitHub’s Agent Finder (https://github.com/agentfinder) and Hugging Face’s Discover (https://github.com/huggingface/hf-discover), Directory of Agentic Services (https://dir.agntcy.org)

Core Components

The building blocks of ARD architecture β€” from catalogs and registries to trust verification and federation

πŸ“‹

Catalogs

Static JSON manifest files (ai-catalog.json) hosted at your organization's domain at a well-known path. Domain ownership becomes the cryptographic foundation for identity and trust.

πŸ”

Registries

Searchable, dynamic services that crawl published catalogs, index their entries, and expose a REST search API. Registries are the 'search engines' of the agentic web.

🏷️

URN Identifiers

Globally unique identifiers following the format urn:ai:<publisher>:<namespace>:<agent-name>. Domain-anchored format provides nomenclature stability and cross-network uniqueness.

πŸ”

Trust Manifest

Cryptographic identity and compliance metadata. Separates discovery identifier (URN) from runtime authentication identity (SPIFFE ID, DID, or HTTPS FQDN).

⚑

REST API

Standard HTTP REST interface for search. POST /search for semantic search, POST /explore for faceted aggregation. Universal baseline enables federation between registries.

🌐

Federation

Connect individual registries into a global network. Client controls federation mode: auto (registry merges results), referrals (client follows), or none (single registry only).

Key Benefits

Why ARD eliminates pre-installation requirements and enables scalable, secure agentic discovery

πŸ”

Dynamic Discovery

No pre-installation required. Agents discover capabilities at runtime through semantic search. The moment a capability is published, it becomes discoverable across the federated network.

πŸ“Š

Scalable Beyond Context Windows

Moves tool selection outside the LLM context window. Information retrieval techniques scale to millions of capabilities without consuming context tokens.

πŸ”

Cryptographic Trust Verification

Standard mechanism to confirm legitimate endpoints. Trust manifests with compliance attestations (SOC2, HIPAA, GDPR) provide verifiable proof of security claims.

🌐

Cross-Organizational Interoperability

Standard way for agents to ask 'what capability should I use for X?' across teams, organizations, and cloud providers. No custom integration required.

πŸ”§

Framework Agnostic

Works as an envelope around existing formats. Does not replace MCP, A2A, OpenAPI, or any other protocol β€” it makes them findable while preserving native protocols.

Common Use Cases

From enterprise capability discovery to cross-organization tool sharing and compliance-filtered search

🏒

Enterprise Capability Discovery

Internal agents discover and use organization-specific tools, APIs, and agents across departments without hardcoded configuration or manual setup.

🀝

Cross-Organization Tool Sharing

Agents find and use capabilities published by partner organizations through federated registries. Enables collaboration without central coordination.

πŸ”’

Compliance-Filtered Discovery

Enterprise agents filter capabilities by compliance attestations. Find only SOC2-certified tools for production, HIPAA-audited services for healthcare workloads.

πŸ”§

Multi-Protocol Orchestration

Single orchestrator discovers and connects to MCP servers, A2A agents, and REST APIs through unified discovery layer while using native protocols for execution.

🌐

Registry Federation

Organizations run internal registries that federate with public registries. Internal capabilities get priority, public options available as fallback.

πŸ“

Standardized Publishing

Publish AI capabilities once in standard format. Instantly discoverable by any ARD-compatible agent or registry without custom integration work.

Interactive Tools

Practical tools to help you think systematically, build better AI agents, and master prompt engineering.

Future References

Explore these resources for deeper learning on AI agent development, spec-driven development, and prompt engineering tools.

Spec-Driven Development

Comprehensive guide on Spec-Driven Development practices and methodologies.

Awesome Copilot

Curated list of GitHub Copilot resources, extensions, and best practices.

Promptfoo

Tool for testing, evaluating, and improving LLM prompts and applications.

Prompts.chat

Collection of prompt engineering resources and templates.

Agent Skills

Agent skills resources and documentation for building AI agent skills.

Awesome Skills

Curated list of awesome skill repositories and collections.

Agent Skills Topic

GitHub topic for discovering agent-related skills and repositories.

AI Agent Topic

Trendshift topic for discovering AI agents.

AI Skills Topic

Trendshift topic for discovering AI skills.

Agent Governance Toolkit

Agent governance toolkit.

Pattern Sources

Our patterns are curated from industry-leading sources with proper attribution and licensing compliance.

Refactoring.Guru

Classic GoF design patterns, code smells catalog, and refactoring techniques (https://refactoring.guru).

Enterprise Integration Patterns

65 messaging patterns for integrating enterprise applications by Gregor Hohpe and Bobby Woolf (CC BY 4.0).

Microservices.io

Comprehensive patterns for microservice architectures by Chris Richardson.

Agent Catalog Patterns

Patterns for agentic systems from agentpatternscatalog.org (CC BY 4.0).

OWASP Foundation

Security patterns from OWASP Top 10 for Web Applications, LLM Applications, and Agentic Applications (CC BY-SA 4.0).

Industry Research

ML/AI patterns from Microsoft, Google, Anthropic, and academic research.

AI Agent Patterns

Spec-driven development patterns from Claude, Gemini, OpenAI, and GitHub Copilot on github/spec-kit and OpenSpec.

Data Engineering Leaders

Data platform patterns from Martin Fowler (Data Mesh), Kimball Group (Dimensional Modeling), and cloud providers.

MLOps Best Practices

Data science patterns from MLflow, Great Expectations, and MLOps practitioners.

Streaming & Analytics

Real-time patterns from Confluent/Kafka, Apache projects, and serverless analytics platforms.

Academic Papers

Rigorous ML patterns from peer-reviewed research including data leakage prevention and active learning.

5-Day AI Agents Course

Intensive Vibe Coding Course With Google by Brenda Flynn et al. (2026) on Kaggle.

The Agent Loop

Foundational Agent Definition (Perceive + Act):
Russell, S. J., & Norvig, P. (1995). Artificial Intelligence: A Modern Approach. Prentice Hall. (Current edition: 4th Ed., Pearson, 2020)

Modern Iterative LLM Agent Loop:
Yao, S., Zhao, J., Yu, D., et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.

Historical Context:
Incorporating AIMA's perceive/act model, Classical robotics' Sense-Plan-Act loop (Brooks, 1986), and ReAct's Thought→Action→Observation cycle.