<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mp-agntcy-ads-03" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="agent-dir">Agent Directory Service</title>
    <seriesInfo name="Internet-Draft" value="draft-mp-agntcy-ads-03"/>
    <author fullname="Luca Muscariello">
      <organization>Cisco</organization>
      <address>
        <email>lumuscar@cisco.com</email>
      </address>
    </author>
    <author fullname="Ramiz Polic">
      <organization>Cisco</organization>
      <address>
        <email>rpolic@cisco.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>Applications</area>
    <workgroup>Independent Submission</workgroup>
    <keyword>AI</keyword>
    <keyword>Agentic AI</keyword>
    <keyword>Directory Protocol</keyword>
    <keyword>Agent Discovery</keyword>
    <keyword>DHT</keyword>
    <abstract>
      <?line 144?>

<t>The Agent Directory Service (ADS) is a distributed directory service designed to
store metadata for AI agent applications. This metadata, stored as directory
records, enables the discovery of agent applications with specific skills for
solving various problems. The implementation features distributed directories
that interconnect through a content-routing protocol.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://spec.dir.agncty.org"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-mp-agntcy-ads/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/agntcy/dir"/>.</t>
    </note>
  </front>
  <middle>
    <?line 152?>

<section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>Multi-Agent Systems (MAS) represent a new paradigm in distributed computing
where software components leverage Large Language Models (LLMs) to perform
specialized tasks and solve complex problems through collaborative intelligence.
These systems combine LLMs with contextual knowledge and tool-calling
capabilities, often abstracted through Model Context Protocol (MCP) servers,
enabling dynamic workflows that adapt based on stored state and environmental
conditions.</t>
      <t>The diversity and complexity of MAS architectures present unique challenges for
discovery and composition. As the ecosystem of AI agents expands, developers
need efficient mechanisms to:</t>
      <ul spacing="normal">
        <li>
          <t><strong>Discover compatible agents</strong> with specific skills and capabilities</t>
        </li>
        <li>
          <t><strong>Evaluate performance characteristics</strong> including cost, latency, and resource
requirements</t>
        </li>
        <li>
          <t><strong>Compose multi-agent workflows</strong> by linking agents with
complementary capabilities</t>
        </li>
        <li>
          <t><strong>Verify claims</strong> about agent performance and reliability</t>
        </li>
        <li>
          <t><strong>Track versioning and dependencies</strong> between agent components</t>
        </li>
      </ul>
      <t>The Agent Directory Service (ADS) <xref target="AGNTCY-ADS"/>  addresses these challenges by
providing a distributed directory infrastructure specifically designed for the
agentic AI ecosystem. Rather than attempting to formally define MAS
architectures, which would constrain the creative composition patterns emerging
in this rapidly evolving field—ADS focuses on providing flexible metadata
storage and discovery mechanisms. A comparison among registries which can be
centralized or distributed is reported here <xref target="AI-Registry-Evolution"/>.</t>
      <section anchor="core-capabilities">
        <name>Core Capabilities</name>
        <t>ADS enables several key capabilities for the agentic AI ecosystem:</t>
        <t><strong>Capability-Based Discovery</strong>:
Agents publish structured metadata describing their functional abilities, costs,
and performance characteristics. The system organizes this information using
hierarchical skill taxonomies, enabling efficient matching of capabilities to
requirements.</t>
        <t><strong>Verifiable Claims</strong>:
While agent capabilities are often subjectively evaluated, ADS provides
cryptographic mechanisms for data integrity and provenance tracking. This allows
users to make informed decisions about agent selection while enabling reputation
systems to emerge organically.</t>
        <t><strong>Semantic Linkage</strong>:
Components can be securely linked to create various relationships like version
histories for evolutionary development, collaborative partnerships where
complementary skills solve complex problems, and dependency chains for composite
agent workflows.</t>
        <t><strong>Distributed Architecture</strong>:
Built on proven distributed systems principles, ADS uses content-addressing for
global uniqueness and implements distributed hash tables <xref target="DHT"/> for scalable
content discovery across decentralized networks.</t>
      </section>
      <section anchor="architectural-foundation">
        <name>Architectural Foundation</name>
        <t>The system leverages the Open Agentic Schema Framework (OASF) to model agent
information in a structured, extensible format. OASF enables rich queries such
as "What agents can solve problem A?" or "What combination of skills and costs
optimizes for task B?" This schema-driven approach supports both objective
metrics (token consumption, GPU requirements) and subjective evaluations (user
ratings, task completion quality).</t>
        <t>Agent records are organized using modular extensions—reusable components like
MCP server definitions, prompt-based agents, and evaluation metrics. This
modular approach facilitates composition and reuse across different MAS
architectures while maintaining flexibility for innovative use cases.</t>
        <t>The underlying storage layer integrates with OCI (Open Container Initiative)
<xref target="OCI.Image"/>
standards, enabling interoperability with existing container ecosystems and
leveraging mature tooling for content distribution and verification.</t>
        <t>This document details the technical architecture of ADS, covering the record
storage layer, security model, distributed data discovery mechanisms, and data
distribution protocols between storage nodes.</t>
      </section>
    </section>
    <section anchor="storage-architecture">
      <name>Storage Architecture</name>
      <t>ADS implements a decentralized storage architecture built on OCI (Open Container
Initiative) registries as the foundational object storage layer. This design
choice enables the system to leverage mature, standardized container registry
infrastructure while achieving the speed, scalability, and security requirements
of a distributed agent directory.</t>
      <section anchor="content-addressed-storage">
        <name>Content-Addressed Storage</name>
        <t>The storage architecture centers on globally unique Content Identifiers (CID)
that provide several critical properties for a distributed agent directory:</t>
        <t><strong>Immutability</strong>: Content identifiers are cryptographically derived from the
data they represent, ensuring that any modification results in a different
identifier. This property is essential for maintaining data integrity in agent
records and enabling verifiable claims about agent capabilities.</t>
        <t><strong>Deduplication</strong>: Identical content automatically receives the same identifier
across all nodes in the network, eliminating storage redundancy and reducing
bandwidth requirements when the same agent components are referenced by
multiple systems.</t>
        <t><strong>Verifiability</strong>: Any node can independently verify that received content
matches its identifier, providing built-in protection against data corruption or
tampering during transmission.</t>
        <t><strong>Location Independence</strong>: Content can be retrieved from any node that possesses
it, as the identifier serves as a universal pointer that abstracts away physical
storage locations.</t>
      </section>
      <section anchor="oci-integration">
        <name>OCI Integration</name>
        <t>ADS leverages OCI (Open Container Initiative) specifications for storing and
distributing agent records as OCI artifacts, offering several advantages:</t>
        <section anchor="standards-compliance">
          <name>Standards Compliance</name>
          <t>By building on OCI specifications, ADS inherits compatibility with the extensive
ecosystem of container registry tools, security scanners, and management
platforms. This includes:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Authentication and authorization</strong> mechanisms already deployed in enterprise
environments</t>
            </li>
            <li>
              <t><strong>Content signing and verification</strong> through tools like Notary and cosign</t>
            </li>
            <li>
              <t><strong>Vulnerability scanning</strong> capabilities that can be extended to agent security
assessments</t>
            </li>
            <li>
              <t><strong>Content delivery networks</strong> optimized for OCI artifact distribution</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="record-artifact-specification">
        <name>Record Artifact Specification</name>
        <t>ADS stores agent records as Record Artifacts following the OCI Image Manifest
Specification <xref target="OCI.Manifest"/> and adhering to the OCI artifacts guidance
<xref target="OCI.Artifact"/>.
A Record Artifact is an AGNTCY OASF Record packaged as an OCI artifact.</t>
        <section anchor="manifest-structure">
          <name>Manifest Structure</name>
          <t>The manifest structure <bcp14>MUST</bcp14> include the following properties:</t>
          <ul spacing="normal">
            <li>
              <t><tt>mediaType</tt> string  </t>
              <t>
This <bcp14>REQUIRED</bcp14> property <bcp14>MUST</bcp14> be <tt>application/vnd.oci.image.manifest.v1+json</tt>.</t>
            </li>
            <li>
              <t><tt>artifactType</tt> string  </t>
              <t>
This <bcp14>REQUIRED</bcp14> property <bcp14>MUST</bcp14> be <tt>application/vnd.agntcy.dir.record.v1+json</tt>.
Future versions of the Record Artifact Specification <bcp14>MAY</bcp14> define additional
artifact types.</t>
            </li>
            <li>
              <t><tt>config</tt> descriptor  </t>
              <t>
This <bcp14>REQUIRED</bcp14> property <bcp14>MUST</bcp14> reference an empty configuration with media type
<tt>application/vnd.oci.empty.v1+json</tt>, indicating that no additional
configuration data is needed for Record Artifacts.</t>
            </li>
            <li>
              <t><tt>layers</tt> array of objects  </t>
              <t>
This <bcp14>REQUIRED</bcp14> property <bcp14>MUST</bcp14> contain one or more layer descriptors representing
OASF Record components.</t>
            </li>
            <li>
              <t><tt>subject</tt> descriptor  </t>
              <t>
This <bcp14>OPTIONAL</bcp14> property <bcp14>MAY</bcp14> reference another Record Artifact to create linkage
between records for version histories.</t>
            </li>
          </ul>
        </section>
        <section anchor="layer-structure">
          <name>Layer Structure</name>
          <t>Each layer descriptor <bcp14>MUST</bcp14> include the following properties:</t>
          <ul spacing="normal">
            <li>
              <t><tt>mediaType</tt> string  </t>
              <t>
This <bcp14>REQUIRED</bcp14> property specifies the layer content type. Implementations <bcp14>MUST</bcp14>
support the following media types:  </t>
              <ul spacing="normal">
                <li>
                  <t><tt>application/vnd.agntcy.oasf.types.{version}.Record+json</tt>: The first layer
(index 0) <bcp14>MUST</bcp14> use this media type and contains base record data. This layer
<bcp14>MUST</bcp14> use the <tt>data</tt> field for inline storage (base64-encoded) since the
content is small, frequently accessed, and unique to each record.
Object <tt>annotations</tt>, <tt>schema_version</tt> and <tt>created_at</tt> are stored as part
of layer annotations.</t>
                </li>
                <li>
                  <t><tt>application/vnd.agntcy.oasf.types.{version}.Skill+json</tt>: Contains skill
definition data. Object <tt>annotations</tt>, <tt>id</tt> and <tt>name</tt> are stored as part
of layer annotations.</t>
                </li>
                <li>
                  <t><tt>application/vnd.agntcy.oasf.types.{version}.Domain+json</tt>: Contains domain
definition data. Object <tt>annotations</tt>, <tt>id</tt> and <tt>name</tt> are stored as part of
layer annotations.</t>
                </li>
                <li>
                  <t><tt>application/vnd.agntcy.oasf.types.{version}.Locator+json</tt>: Contains locator
definition data referencing the location where the agent can be accessed or
deployed. Object <tt>annotations</tt>, <tt>type</tt> and <tt>url</tt> are stored as part of layer
annotations and URL fields.</t>
                </li>
                <li>
                  <t><tt>application/vnd.agntcy.oasf.types.{version}.Module+json</tt>: Contains module
definition data. Object <tt>annotations</tt>, <tt>id</tt> and <tt>name</tt> are stored as part of
layer annotations.</t>
                </li>
              </ul>
              <t>
Media types <bcp14>MUST</bcp14> map to <tt>application/vnd.{schema_uri}.{version}.{type}+{encoding}</tt>
format, where
- <tt>{schema_uri}</tt> corresponds to the OASF protobuf schema namespace
- <tt>{version}</tt> corresponds to a specific OASF type version (e.g., <tt>v1alpha2</tt>)
- <tt>{type}</tt> is the OASF type name (e.g. <tt>Record</tt>)
- <tt>{encoding}</tt> <bcp14>MUST</bcp14> be <tt>json</tt></t>
            </li>
            <li>
              <t><tt>urls</tt> array of strings  </t>
              <t>
This <bcp14>OPTIONAL</bcp14> property <bcp14>MAY</bcp14> contain URLs pointing to external resources,
particularly useful for <tt>Locator</tt> layers to specify deployment targets.</t>
            </li>
            <li>
              <t><tt>annotations</tt> string-string map  </t>
              <t>
This <bcp14>OPTIONAL</bcp14> property contains arbitrary attributes. Implementations <bcp14>SHOULD</bcp14>
use the predefined annotation keys:  </t>
              <ul spacing="normal">
                <li>
                  <t><tt>agntcy.oasf.record/schema_version</tt>: Schema version (for <tt>Record</tt> layers)</t>
                </li>
                <li>
                  <t><tt>agntcy.oasf.record/created_at</tt>: Creation timestamp (for <tt>Record</tt> layers)</t>
                </li>
                <li>
                  <t><tt>agntcy.oasf.locator/type</tt>: Locator type (for <tt>Locator</tt> layers)</t>
                </li>
                <li>
                  <t><tt>agntcy.oasf.skill/{id,name}</tt>: Skill id/name (for <tt>Skill</tt> layers)</t>
                </li>
                <li>
                  <t><tt>agntcy.oasf.domain/{id,name}</tt>: Domain id/name (for <tt>Domain</tt> layers)</t>
                </li>
                <li>
                  <t><tt>agntcy.oasf.module/{id,name}</tt>: Module id/name (for <tt>Module</tt> layers)</t>
                </li>
              </ul>
            </li>
          </ul>
        </section>
        <section anchor="example-record-artifacts">
          <name>Example Record Artifacts</name>
          <sourcecode type="json"><![CDATA[
{
  "schemaVersion": 2,
  "mediaType": "application/vnd.oci.image.manifest.v1+json",
  "artifactType": "application/vnd.agntcy.dir.record.v1+json",
  "config": {
    "mediaType": "application/vnd.oci.empty.v1+json",
    "digest": "sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a",
    "size": 2
  },
  "layers": [
    {
      "mediaType": "application/vnd.agntcy.oasf.types.v1alpha2.Record+json",
      "data": "<BASE64_ENCODED_RECORD_DATA>",
      "digest": "sha256:d5815835051dd97d800a03f641ed8162877920e734d3d705b698912602b8c763",
      "size": 216,
      "annotations": {
        "agntcy.oasf.record/schema_version": "0.7.0",
        "agntcy.oasf.record/created_at": "2026-01-06T00:00:00Z"
      }
    },
    {
      "mediaType": "application/vnd.agntcy.oasf.types.v1alpha2.Skill+json",
      "digest": "sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a",
      "size": 2,
      "annotations": {
        "agntcy.oasf.skill/id": "10201",
        "agntcy.oasf.skill/name": "Natural Language Processing/Sentiment Analysis"
      }
    },
    {
      "mediaType": "application/vnd.agntcy.oasf.types.v1alpha2.Locator+json",
      "digest": "sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a",
      "size": 2,
      "urls": [
        "https://ghcr.io/agntcy/agent:latest",
        "ipfs://bafybeibwzif37xyzabcdefg"
      ],
      "annotations": {
        "agntcy.oasf.locator/type": "docker-image"
      }
    }
  ],
  "subject": {
    "mediaType": "application/vnd.oci.image.manifest.v1+json",
    "artifactType": "application/vnd.agntcy.dir.record.v1+json",
    "digest": "sha256:7e346bc58473bc1d8a98776fa2a89a3e2a446b27f0e8a33ad49c3d4f28b6471d",
    "size": 702
  }
}
]]></sourcecode>
        </section>
        <section anchor="record-reconstruction">
          <name>Record Reconstruction</name>
          <t>Applications consuming Record Artifacts <bcp14>MUST</bcp14> implement the following
reconstruction algorithm:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>Pull Manifest</strong>: Retrieve the OCI image manifest from the registry using
standard OCI Distribution API operations</t>
            </li>
            <li>
              <t><strong>Extract Base Record</strong>: Parse the first layer (index 0) with media type
<tt>application/vnd.agntcy.oasf.types.{version}.Record+json</tt> and base64-decode
the <tt>data</tt> field to obtain the base record JSON data</t>
            </li>
            <li>
              <t><strong>Retrieve Component Layers</strong>: For each subsequent layer (Skill, Domain,
Locator, Module):
              </t>
              <ul spacing="normal">
                <li>
                  <t>Fetch the blob content from the registry using the layer's <tt>digest</tt></t>
                </li>
                <li>
                  <t>Verify the blob's SHA-256 digest matches the descriptor's <tt>digest</tt> field</t>
                </li>
                <li>
                  <t>Parse the JSON content according to the layer's <tt>mediaType</tt></t>
                </li>
                <li>
                  <t>Merge the component data into the appropriate field of the base record</t>
                </li>
                <li>
                  <t>Merge descriptor annotations into the corresponding component metadata</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Validate Schema</strong>: Validate the reconstructed record against the OASF
schema version specified in the <tt>agntcy.oasf.record/schema_version</tt> annotation</t>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="application-integration">
        <name>Application Integration</name>
        <section anchor="open-agent-schema-framework-oasf">
          <name>Open Agent Schema Framework (OASF)</name>
          <t>The Open Agent Schema Framework (OASF) <xref target="AGNTCY-OASF"/>
complements Record Artifact Specification by defining the actual data
models for agent-related information referenced in the OCI artifacts.</t>
        </section>
        <section anchor="third-party-applications">
          <name>Third-Party Applications</name>
          <t>Third-party applications can build on top of the Record Artifact Specification to
create tools and services for managing, distributing, and utilizing agent records.
This can be accomplished by leveraging existing OCI ecosystem components such as
registries, clients, and tooling, or by developing custom solutions that link to
Record Artifacts.</t>
        </section>
        <section anchor="runtime-environments">
          <name>Runtime Environments</name>
          <t>Runtime environments that deploy and manage agents can leverage Record Artifacts to
obtain the necessary information for launching and managing agent instances based on
the definitions contained within the artifacts.
Implementations can provide management of process lifecycles, monitoring, and other
capabilities based on the metadata defined in the records, or by linking records with
runtime-specific artifacts.</t>
        </section>
      </section>
      <section anchor="artifact-organization">
        <name>Artifact Organization</name>
        <t>Agent records are stored as OCI artifacts with a structured organization.
Records <bcp14>MUST</bcp14> be addressed by digest for immutable retrieval. Tags are mutable
aliases and can be used as human-readable pointers, but implementations <bcp14>MUST NOT</bcp14>
assume a tag resolves to more than one manifest at a time. The examples below
show digest-pinned references:</t>
        <artwork><![CDATA[
null_repo/records/
├── skills/
│   ├── natural_language_processing/
│   │   ├── sentiment-analysis:bert-v1@sha256:abc123...
│   │   ├── sentiment-analysis:roberta-v1@sha256:def456...
│   │   ├── sentiment-analysis:distilbert-v1@sha256:ghi789...
│   │   ├── text-classification:bert-v2@sha256:abc123...
│   │   └── emotion-detection:bert-v1@sha256:abc123...
│   ├── images_computer_vision/
│   │   ├── object-detection:yolo-v2.1@sha256:jkl012...
│   │   ├── object-detection:rcnn-v2.1@sha256:mno345...
│   │   └── scene-understanding:yolo-v1@sha256:jkl012...
│   └── analytical_skills/
│       └── mathematical:v1.5.0@sha256:pqr678...
├── evaluations/
│   ├── performance-metrics:latest@sha256:stu901...
│   └── benchmark-results:v1.0.0@sha256:vwx234...
└── compositions/
    ├── security-analyst:v3.0.0@sha256:yza567...
    └── research-assistant:v2.2.0@sha256:bcd890...
]]></artwork>
        <t>This naming scheme demonstrates that the same content identifier can belong to
multiple skills, reflecting the reality that many AI agents are multi-capable.
For example, the BERT-based agent (<tt>sha256:abc123...</tt>) appears under multiple
skill categories: <tt>natural_language_processing/sentiment-analysis</tt>,
<tt>natural_language_processing/text-classification</tt>, and
<tt>natural_language_processing/emotion-detection</tt>, representing different
capabilities of the same underlying agent implementation. Similarly, the YOLO
vision model (<tt>sha256:jkl012...</tt>) provides both <tt>object-detection</tt> and
<tt>scene-understanding</tt> capabilities under <tt>images_computer_vision</tt>.</t>
        <t>This cross-referencing approach allows agents to be discovered through any of
their supported capabilities while maintaining unique addressability through
content identifiers. Each skill category can have its own versioning and
metadata, enabling fine-grained capability management even when multiple skills
share the same underlying implementation.</t>
        <t>Each artifact contains structured metadata following OASF schemas, enabling rich
queries and capability matching across all variants within a given category.</t>
        <section anchor="multi-registry-federation">
          <name>Multi-Registry Federation</name>
          <t>The architecture supports federation across multiple registry instances, enabling:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Organizational boundaries</strong>: Different organizations can maintain their own
registries while participating in the global directory</t>
            </li>
            <li>
              <t><strong>Geographic distribution</strong>: Content can be replicated to registries closer to
consumers, reducing latency</t>
            </li>
            <li>
              <t><strong>Specialization</strong>: Registries can focus on specific domains (e.g., medical AI
agents, financial analysis tools)</t>
            </li>
            <li>
              <t><strong>Redundancy</strong>: Critical agent records can be replicated across multiple
registries for availability</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="mas-data-discovery">
      <name>MAS Data Discovery</name>
      <t>ADS implements a two-level mapping system that enables efficient discovery of
Multi-Agent System components through a distributed hash table <xref target="DHT"/>
architecture. This approach separates capability-based discovery from content
location, providing both scalability and flexibility in agent retrieval.</t>
      <section anchor="skill-taxonomy">
        <name>Skill Taxonomy</name>
        <t>Effective agent discovery in multi-agent systems requires sophisticated
organization of capabilities and skills. ADS employs a hierarchical skill
taxonomy that serves as the foundation for efficient search and discovery
operations across the distributed network.</t>
        <section anchor="the-challenge-of-capability-search">
          <name>The Challenge of Capability Search</name>
          <t>Traditional keyword-based search approaches face significant limitations when
applied to agent discovery:</t>
          <t><strong>Vocabulary Fragmentation</strong>: Different publishers may describe similar
capabilities using varying terminology. For example, "sentiment analysis,"
"opinion mining," and "emotional classification" may all refer to similar agent
capabilities, leading to search results that miss relevant agents due to
terminology mismatches.</t>
          <t><strong>Scale Complexity</strong>: As the number of agents in the ecosystem grows, exhaustive
search across all records becomes computationally prohibitive. Without
structured organization, every query potentially requires examining every agent
record, leading to poor performance characteristics.</t>
          <t><strong>Semantic Relationships</strong>: Many agent capabilities have natural hierarchical
relationships that flat keyword systems cannot capture. An agent capable of
"named entity recognition" is inherently relevant to searches for broader "text
analysis" capabilities, but keyword matching alone cannot establish these
connections.</t>
        </section>
        <section anchor="taxonomy-driven-search-optimization">
          <name>Taxonomy-Driven Search Optimization</name>
          <t>ADS addresses these challenges through a structured hierarchical taxonomy that
provides several critical optimization benefits:</t>
          <t><strong>Search Space Partitioning</strong>: The taxonomy enables efficient partitioning of
the search space. When processing a query for "computer vision" capabilities,
the system can immediately focus on the relevant taxonomy branch, eliminating
the need to examine agents in unrelated categories like natural language
processing or mathematical reasoning.</t>
          <t><strong>Index Structure Optimization</strong>: The hierarchical organization allows the
distributed hash table to create specialized indices for different taxonomy
branches. Rather than maintaining a single massive index, the DHT can
distribute indexing responsibility across nodes, with each node specializing in
specific capability domains.</t>
          <t><strong>Query Semantic Expansion</strong>: The taxonomy enables intelligent query expansion
where searches automatically include semantically related subcategories. A
search for "text analysis" can transparently include results from "sentiment
analysis," "entity extraction," and "text classification" without requiring
users to explicitly enumerate all relevant subcategories.</t>
          <t><strong>Standardized Vocabulary</strong>: By providing a canonical taxonomy, ADS reduces
terminology fragmentation. Publishers are encouraged to tag their agents using
standardized skill categories, improving search precision and recall across the
ecosystem.</t>
        </section>
      </section>
      <section anchor="two-level-mapping-architecture">
        <name>Two-Level Mapping Architecture</name>
        <t>The discovery system operates through two distinct mapping layers:</t>
      </section>
      <section anchor="skill-taxonomy-for-search-optimization">
        <name>Skill Taxonomy for Search Optimization</name>
        <t>ADS employs a hierarchical skill taxonomy to optimize search performance and
enable efficient capability-based discovery. Taxonomies provide several critical
advantages for agent discovery systems:</t>
        <t><strong>Search Space Reduction</strong>: Rather than performing exhaustive searches across
all agent records, taxonomies allow the system to quickly narrow the search
space to relevant categories. When a user queries for "natural language
processing" capabilities, the system can immediately identify the subset of
agents tagged with NLP skills without examining agents focused on computer
vision or mathematical reasoning.</t>
        <t><strong>Hierarchical Organization</strong>: Skills are organized in a tree-like structure
*that reflects natural relationships between capabilities. For example:</t>
        <artwork><![CDATA[
Natural Language Processing
├── Text Analysis
│   ├── Sentiment Analysis
│   ├── Named Entity Recognition
│   └── Text Classification
├── Language Generation
│   ├── Text Summarization
│   ├── Content Creation
│   └── Translation
└── Conversational AI
    ├── Dialogue Management
    ├── Intent Recognition
    └── Response Generation
]]></artwork>
        <t>This hierarchy enables both specific queries ("sentiment analysis agents") and
broader capability searches ("all natural language processing agents") while
maintaining efficient indexing structures.</t>
        <t><strong>Query Expansion and Refinement</strong>: Taxonomies support automatic query expansion
*where searches for parent categories can include relevant child categories. A
*query for "text analysis" can automatically include agents tagged with
*"sentiment analysis," "named entity recognition," and "text classification"
*without requiring users to know all specific subcategories.</t>
        <t><strong>Semantic Consistency</strong>: Standardized taxonomies reduce ambiguity and improve
*search precision by providing consistent terminology across the ecosystem. This
*prevents fragmentation where similar capabilities are described using different
*terms by different publishers.</t>
        <t><strong>Scalable Indexing</strong>: The hierarchical structure enables efficient distributed
*indexing where different DHT nodes can specialize in specific taxonomy
*branches, distributing both storage load and query processing across the
*network.</t>
      </section>
      <section anchor="additional-taxonomies">
        <name>Additional Taxonomies</name>
        <t>While skills form the primary taxonomy for capability-based discovery, ADS
supports multiple parallel taxonomies to enable rich, multi-dimensional agent
classification and search.</t>
        <section anchor="domain-taxonomy">
          <name>Domain Taxonomy</name>
          <t>The domain taxonomy organizes agents by their application domains, representing
the broader problem spaces or industries where agents are designed to operate:</t>
          <artwork><![CDATA[
Application Domains
├── Networking
│   ├── Network Configuration
│   ├── Traffic Analysis
│   └── Protocol Implementation
├── Security
│   ├── Threat Detection
│   ├── Vulnerability Assessment
│   └── Access Control
├── Software Development
│   ├── Code Generation
│   ├── Testing Automation
│   └── Documentation
├── Finance and Business
│   ├── Risk Analysis
│   ├── Market Research
│   └── Process Automation
└── Healthcare
    ├── Medical Imaging
    ├── Clinical Decision Support
    └── Drug Discovery
]]></artwork>
          <t>Domain classification enables users to discover agents that are specifically
tuned for their operational context, even if those agents share similar
underlying skills with agents from other domains.</t>
        </section>
        <section anchor="module-taxonomy">
          <name>Module Taxonomy</name>
          <t>The module taxonomy categorizes agents by the OASF modules they implement,
facilitating the discovery of agents compatible with specific system
architectures. Modules are organized into the OASF module categories (Core and
Integration), and each module captures a structured integration surface or
capability extension:</t>
          <t>The Agent Spec module aligns with the Open Agent Spec specification
<xref target="Oracle-AgentSpec"/>.</t>
          <artwork><![CDATA[
Modules
├── Core
│   ├── Language Model (`language_model`)
│   ├── Evaluation (`evaluation`)
│   └── Observability (`observability`)
└── Integration
  ├── MCP (Model Context Protocol, `mcp`)
  ├── A2A (Agent-to-Agent Communication, `a2a`)
  ├── Agent Spec (`agentspec`)
  └── ACP (`acp`, deprecated)
]]></artwork>
          <t>Module identifiers use the OASF module <tt>name</tt> values. The <tt>acp</tt> module is
deprecated in OASF; use <tt>a2a</tt> when possible.</t>
        </section>
        <section anchor="multi-dimensional-search">
          <name>Multi-Dimensional Search</name>
          <t>The parallel taxonomy system enables sophisticated multi-dimensional queries
that combine criteria across different classification axes.
<strong>All searches must include at least one skill criterion as the mandatory
foundation</strong>, with domain and module taxonomies providing additional filtering
dimensions:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Skill + Domain</strong>: "Find natural language processing agents specialized for
healthcare applications"</t>
            </li>
            <li>
              <t><strong>Skill + Module</strong>: "Discover computer vision agents that support MCP
integration"</t>
            </li>
            <li>
              <t><strong>Skill + Module + Domain</strong>: "Locate natural language processing agents with
observability modules for manufacturing applications"</t>
            </li>
          </ul>
          <t><strong>Skills as Search Foundation</strong>: The skills taxonomy serves as the primary index
structure in the DHT, making skill-based criteria mandatory for efficient query
resolution. This design ensures that:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Query Performance</strong>: All searches leverage the optimized skills-to-CID
mapping as the starting point, providing consistent performance characteristics</t>
            </li>
            <li>
              <t><strong>Result Relevance</strong>: Domain and module filters are applied to skill-based
result sets, ensuring functional capability remains the core selection criterion</t>
            </li>
            <li>
              <t><strong>Index Efficiency</strong>: The DHT can optimize storage and lookup patterns around
the skills taxonomy while supporting supplementary filtering through domains and
modules</t>
            </li>
          </ul>
          <t>Domain-only or module-only queries are not supported, as they would bypass the
primary indexing structure and provide results that may not have the functional
capabilities required by the requesting system.</t>
          <t>This skill-mandatory rule applies to the DHT capability index, which uses skills
as its primary key for global, cross-host routing. It does not constrain the
host-local AI Finder catalog browse surface (see <xref target="ai-finder-service"/>), which
filters and orders entries over arbitrary fields and tags without requiring a
skill criterion. The two surfaces are complementary: the DHT optimizes global
capability routing, while AI Finder provides deterministic browsing of a host's
catalog.</t>
          <t>This multi-taxonomic approach provides the flexibility to support diverse use
cases while maintaining efficient indexing and search performance across all
dimensions.</t>
        </section>
        <section anchor="skills-to-cid-mapping">
          <name>Skills-to-CID Mapping</name>
          <t>The first level maps agent capabilities and skills to their corresponding
Content Identifiers (CID):</t>
          <artwork><![CDATA[
Skills Index:
"natural_language_processing" → ["sha256:abc123...", "sha256:def456...", "sha256:ghi789..."]
"images_computer_vision"      → ["sha256:jkl012...", "sha256:mno345..."]
"analytical_skills"           → ["sha256:pqr678...", "sha256:abc123..."]
"multi_modal"                 → ["sha256:stu901...", "sha256:vwx234..."]
]]></artwork>
          <t>This mapping enables queries such as "find all agents capable of natural
language processing" to quickly resolve to a set of content identifiers without
needing to search through individual agent records.</t>
        </section>
        <section anchor="cid-to-peerid-mapping">
          <name>CID-to-PeerID Mapping</name>
          <t>The second level maps Content Identifiers to the Peer IDs of nodes that store
the corresponding agent records:</t>
          <artwork><![CDATA[
Content Location Index:
"sha256:abc123..." → ["12D3KooWBhvxmvKvTYGJvXjnGBp7Ybr9WyoXkZvFnRtC4aBcDeFg",
                      "12D3KooWXyZrUvHzPqKvTYGJvXjnGBp7Ybr9WyoXkZvFnRtC5gHi"]
"sha256:jkl012..." → ["12D3KooWZaBcDeFgXyZrUvHzPqKvTYGJvXjnGBp7Ybr9WyoXkZvF",
                      "12D3KooWGHiJkLmNoPqRsTuVwXyZ123456789AbCdEfGhIjKlMnO"]
]]></artwork>
          <t>This separation allows the system to:
- <strong>Optimize for capability queries</strong> without requiring knowledge of data
locations</t>
          <ul spacing="normal">
            <li>
              <t><strong>Enable dynamic content replication</strong> as peer availability changes</t>
            </li>
            <li>
              <t><strong>Support multiple storage strategies</strong> for the same content across different
peers</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="dht-based-discovery-process">
        <name>DHT-Based Discovery Process</name>
        <t>The Distributed Hash Table stores and maintains both mapping layers across the
network:</t>
        <t>ADS uses [Kad-DHT] <xref target="DHT"/> for server and content discovery by using the
libp2p implementation that constitutes the IPFS core DHT <xref target="libp2p-kad-dht"/>.</t>
        <artwork><![CDATA[
                             +----------------+
                             |    DHT Node    |
                             | Content Index  |
                             +----------------+
                                    ^
                                    |
                   +----------------+-----------------+
                   |                |                |
           +-------v------+  +------v-------+  +-----v--------+
           | Server Node A |  | Server Node B|  | Server Node C|
           |   Content X  |  |   Content Y  |  |   Content Z  |
           +-------+------+  +------+-------+  +------+-------+
                   |               |                  |
                   |        Content Exchange          |
                   +---------------+------------------+
                                  |
                          Content Replication

Flow:
1. Servers register content with DHT
2. DHT maintains content-to-server mappings
3. Servers query DHT to locate content
4. DHT returns list of servers hosting content
5. Servers download content from peers
]]></artwork>
        <section anchor="skill-registration">
          <name>Skill Registration</name>
          <t>When agents are published to the network:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>Capability Extraction</strong>: The system parses OASF records to extract skills,
domains, and modules</t>
            </li>
            <li>
              <t><strong>DHT Updates</strong>: Skills-to-CID mappings are distributed across DHT nodes
using consistent hashing</t>
            </li>
            <li>
              <t><strong>Location Registration</strong>: Peer nodes register themselves as providers for
specific CIDs</t>
            </li>
          </ol>
        </section>
        <section anchor="discovery-query-resolution">
          <name>Discovery Query Resolution</name>
          <t>Agent discovery follows a three-phase process:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>Capability Resolution</strong>: Query "agents with skill X" resolves to a list of
relevant CIDs via DHT lookup</t>
            </li>
            <li>
              <t><strong>Location Resolution</strong>: For each discovered CID, query DHT to find peer
nodes storing the content</t>
            </li>
            <li>
              <t><strong>Result Aggregation</strong>: Combine capability matches with location information
to produce actionable discovery results</t>
            </li>
          </ol>
          <artwork><![CDATA[
Discovery Flow:
Query: "natural_language_processing" AND "finance_and_banking"
   ↓
Phase 1: Skills → CIDs
   DHT["natural_language_processing"] → ["sha256:abc123...", "sha256:def456..."]
   DHT["finance_and_banking"] → ["sha256:abc123...", "sha256:yza567..."]
   Intersection → ["sha256:abc123..."]
   ↓
Phase 2: CIDs → Peer IDs
   DHT["sha256:abc123..."] → ["12D3KooW...", "12D3KooX..."]
   ↓
Result: Agent sha256:abc123... available from peers 12D3KooW... and 12D3KooX...
]]></artwork>
        </section>
        <section anchor="additional-tanomoxies">
          <name>Additional Tanomoxies</name>
        </section>
      </section>
      <section anchor="content-distribution-via-oci-protocol">
        <name>Content Distribution via OCI Protocol</name>
        <t>Once discovery identifies the relevant CIDs and their hosting peers, the actual
agent records are retrieved using the OCI distribution protocol:</t>
        <section anchor="peer-to-peer-synchronization">
          <name>Peer-to-Peer Synchronization</name>
          <t>The discovered list of CIDs enables efficient content synchronization
<xref target="OCI.Distribution"/> between peers:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>Content Negotiation</strong>: Requesting peer queries hosting peers for available
agent records</t>
            </li>
            <li>
              <t><strong>OCI Pull Operations</strong>: Standard OCI registry pull commands retrieve agent
artifacts and metadata</t>
            </li>
            <li>
              <t><strong>Incremental Sync</strong>: Only missing or updated content is transferred,
reducing bandwidth requirements</t>
            </li>
            <li>
              <t><strong>Verification</strong>: Content integrity is verified through cryptographic hash
validation during transfer</t>
            </li>
          </ol>
        </section>
        <section anchor="distribution-strategies">
          <name>Distribution Strategies</name>
          <t>The system supports multiple distribution patterns, each with distinct
trade-offs and operational considerations:</t>
          <t><strong>On-Demand Retrieval</strong>: Records are pulled from remote peers only when
specifically requested, minimizing local storage requirements.</t>
          <t><em>Trade-offs</em>: While this approach minimizes storage costs and ensures fresh
content, it introduces several challenges:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Query Latency</strong>: Each request requires network round-trips to locate and
retrieve content, increasing response times</t>
            </li>
            <li>
              <t><strong>Network Cost</strong>: Spurious or exploratory requests generate unnecessary
network traffic and computational overhead</t>
            </li>
            <li>
              <t><strong>DoS Vulnerability</strong>: The system becomes susceptible to denial-of-service
attacks where malicious actors can trigger expensive content retrieval
operations by flooding the network with requests for non-existent or
rarely-accessed agents</t>
            </li>
            <li>
              <t><strong>Scalability Limits</strong>: Performance degrades as the network grows due to
increased query coordination overhead</t>
            </li>
          </ul>
          <t><strong>Proactive Caching</strong>: Popular or frequently accessed agents are automatically
replicated to improve query response times.</t>
          <t><em>Trade-offs</em>: This strategy offers significant scalability benefits but requires sophisticated management:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Performance Gains</strong>: Dramatic reduction in query latency for popular
content, enabling sub-second response times</t>
            </li>
            <li>
              <t><strong>Scalability</strong>: Can handle high query volumes efficiently once popular
content is cached locally</t>
            </li>
            <li>
              <t><strong>Popularity Measurement</strong>: Requires implementing metrics collection and
analysis to identify which agents warrant caching. This includes tracking query
frequencies, download patterns, and usage statistics across the network</t>
            </li>
            <li>
              <t><strong>Storage Requirements</strong>: Needs sufficient local storage capacity to maintain
cached copies of popular records</t>
            </li>
            <li>
              <t><strong>Cache Management</strong>: Must implement cache eviction policies, freshness
validation, and synchronization mechanisms</t>
            </li>
            <li>
              <t><strong>Administrator Oversight</strong>: Proactive caching policies must be configured and
monitored by agent directory node administrators to balance storage costs with
performance benefits</t>
            </li>
          </ul>
          <t><strong>Strategic Replication</strong>: Critical agents can be replicated across multiple
peers to ensure high availability and reduce single points of failure.</t>
          <t><em>Trade-offs</em>: This approach addresses availability concerns but introduces
subjective complexity:</t>
          <ul spacing="normal">
            <li>
              <t><strong>High Availability</strong>: Ensures critical agents remain accessible even during
peer failures or network partitions</t>
            </li>
            <li>
              <t><strong>Reduced Single Points of Failure</strong>: Distributes risk across multiple storage locations</t>
            </li>
            <li>
              <t><strong>Subjective Criticality</strong>: The definition of "critical" or "useful" agents
varies significantly between users, organizations, and use cases. What
constitutes strategic value for financial services may be irrelevant for
manufacturing applications</t>
            </li>
            <li>
              <t><strong>Administrative Burden</strong>: Requires agent directory node administrators to
make strategic decisions about which agents warrant replication, considering
factors like:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Organizational priorities and business requirements</t>
                </li>
                <li>
                  <t>Compliance and regulatory considerations</t>
                </li>
                <li>
                  <t>Cost-benefit analysis of storage versus availability</t>
                </li>
                <li>
                  <t>Community consensus on agent importance</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Resource Allocation</strong>: Strategic replication consumes storage resources that
could otherwise be used for proactive caching of popular content</t>
            </li>
          </ul>
          <t><strong>Administrative Management</strong>: Both Proactive Caching and Strategic Replication
require active management by agent directory node administrators.
Administrators must:</t>
          <ul spacing="normal">
            <li>
              <t>Configure caching policies based on local network characteristics and storage capacity</t>
            </li>
            <li>
              <t>Monitor popularity metrics and adjust caching strategies accordingly</t>
            </li>
            <li>
              <t>Define strategic replication criteria aligned with organizational objectives</t>
            </li>
            <li>
              <t>Balance resource allocation between different distribution strategies</t>
            </li>
            <li>
              <t>Implement governance policies for content lifecycle management</t>
            </li>
          </ul>
          <t>This architecture provides a scalable foundation for MAS data discovery that can
efficiently handle large networks of distributed agents while maintaining low
latency for capability-based queries.</t>
        </section>
      </section>
      <section anchor="agent-directory-record-examples">
        <name>Agent Directory Record Examples</name>
        <t>The following examples illustrate the structure of OASF-compliant agent records
stored in the directory:</t>
        <artwork><![CDATA[
{
  "content_id": "sha256:abc123...",
  "record": {
    "name": "BERT Sentiment Analyzer",
    "version": "1.0.0",
    "schema_version": "0.2.0",
    "description": "Multi-capability NLP agent providing sentiment analysis, text classification, and emotion detection",
    "skills": ["natural_language_processing"],
    "domains": ["finance_and_banking", "legal_and_compliance"],
    "modules": ["mcp", "observability"],
    "capabilities": {
      "threads": true,
      "interrupt_support": false,
      "callbacks": true,
      "streaming": ["text", "json"]
    }
  },
  "performance_metrics": {
    "tokens_per_second": 1000,
    "gpu_memory_mb": 4096,
    "latency_p99_ms": 150,
    "accuracy_score": 0.94
  },
  "evaluation_data": {
    "overall_rating": 4.2,
    "cost_per_million_tokens": 2.50
  },
  "registries": [
    "registry.example.com",
    "hub.agents.org"
  ],
  "last_updated": "2025-08-07T10:30:00Z"
}
]]></artwork>
        <artwork><![CDATA[
{
  "content_id": "sha256:jkl012...",
  "record": {
    "name": "YOLO Vision Agent",
    "version": "2.1.0",
    "schema_version": "0.2.0",
    "description": "Computer vision agent for object detection and scene understanding",
    "skills": ["images_computer_vision"],
    "domains": ["transportation_logistics_mobility", "manufacturing_and_industrial_operations"],
    "modules": ["agentspec", "observability"],
    "capabilities": {
      "threads": false,
      "interrupt_support": true,
      "callbacks": false,
      "streaming": ["image", "json"]
    }
  },
  "performance_metrics": {
    "inference_fps": 30,
    "gpu_memory_mb": 8192,
    "detection_accuracy_map": 0.89,
    "processing_latency_ms": 33
  },
  "evaluation_data": {
    "overall_rating": 4.7,
    "cost_per_image": 0.05
  },
  "registries": [
    "vision.agents.com",
    "registry.example.com"
  ],
  "last_updated": "2025-08-07T14:20:00Z"
}
]]></artwork>
        <artwork><![CDATA[
{
  "content_id": "sha256:pqr678...",
  "record": {
    "name": "Mathematical Reasoning Agent",
    "version": "1.5.0",
    "schema_version": "0.2.0",
    "description": "Agent specialized in mathematical problem solving and analytical reasoning",
    "skills": ["analytical_skills", "natural_language_processing"],
    "domains": ["education", "finance_and_banking"],
    "modules": ["a2a", "evaluation"],
    "capabilities": {
      "threads": true,
      "interrupt_support": true,
      "callbacks": true,
      "streaming": ["text", "latex"]
    }
  },
  "performance_metrics": {
    "problems_per_minute": 12,
    "cpu_cores": 4,
    "memory_mb": 2048,
    "accuracy_on_gsm8k": 0.87
  },
  "evaluation_data": {
    "overall_rating": 4.5,
    "cost_per_problem": 0.10
  },
  "registries": [
    "math.agents.edu",
    "registry.example.com"
  ],
  "last_updated": "2025-08-07T16:45:00Z"
}
]]></artwork>
        <t>These examples demonstrate how the DHT indexing system extracts skills and
domains from agent records to populate the Skills-to-CID mappings, enabling
efficient capability-based discovery across the distributed network.</t>
      </section>
      <section anchor="security-model">
        <name>Security Model</name>
        <t>The OCI-based architecture provides multiple layers of security that address the
unique challenges of distributed agent directories:</t>
        <section anchor="cryptographic-integrity">
          <name>Cryptographic Integrity</name>
          <t>ADS leverages the OCI layer's built-in cryptographic mechanisms to ensure data
integrity:</t>
          <t><strong>Automatic Hash Computation</strong>: The OCI registry layer automatically computes
SHA-256 hash digests for all stored artifacts. These content identifiers are
generated transparently during the push operation, ensuring that every agent
record has a cryptographically verifiable fingerprint without additional
overhead.</t>
          <t><strong>Tamper Detection</strong>: Content addressing ensures immediate tamper detection
through cryptographic hash verification. Any modification to an agent
record—whether malicious or accidental—results in a different hash digest,
making unauthorized changes immediately detectable during retrieval operations.</t>
          <t><strong>End-to-End Verification</strong>: Clients can independently verify that received
content matches its advertised identifier, providing built-in protection
against data corruption during transmission or storage without trusting
intermediate network components.</t>
        </section>
        <section anchor="content-provenance-and-digital-signatures">
          <name>Content Provenance and Digital Signatures</name>
          <t>ADS integrates with Sigstore, a security framework for OCI storage, to provide
comprehensive content provenance and authenticity guarantees:</t>
          <t><strong>Sigstore Integration</strong>: The system leverages Sigstore's security framework to
provide verifiable proof of when and by whom agent records were signed. This
creates an immutable audit trail that cannot be retroactively modified,
enabling forensic analysis of agent deployment history.</t>
          <t><strong>Keyless Signing</strong>: Sigstore's keyless signing approach eliminates the
complexity and security risks associated with long-lived cryptographic keys:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Identity-Based Authentication</strong>: Uses OpenID Connect (OIDC) <xref target="OpenID.Auth"/>
tokens from trusted identity providers (GitHub, Google, Microsoft) to
authenticate publishers at signing time</t>
            </li>
            <li>
              <t><strong>Short-Lived Certificates</strong>: Issues ephemeral signing certificates valid only
for minutes, reducing the window of potential key compromise</t>
            </li>
            <li>
              <t><strong>Automatic Key Rotation</strong>: Eliminates the need for manual key management,
distribution, and rotation procedures</t>
            </li>
            <li>
              <t><strong>Scalable Trust</strong>: Publishers don't need to maintain or distribute public
keys, making the system accessible to individual developers and large
organizations alike</t>
            </li>
          </ul>
          <t><strong>Transparency and Verification</strong>: All signatures are stored directly in OCI
storage alongside the agent artifacts and public keys, providing:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Public Auditability</strong>: Anyone can verify the signing history of agent
records stored in accessible registries</t>
            </li>
            <li>
              <t><strong>Non-Repudiation</strong>: Publishers cannot deny having signed records that are
cryptographically linked to their identity</t>
            </li>
            <li>
              <t><strong>Supply Chain Security</strong>: Enables detection of compromised or unauthorized
agent publications</t>
            </li>
          </ul>
        </section>
        <section anchor="trust-boundaries-and-isolation">
          <name>Trust Boundaries and Isolation</name>
          <t><strong>Organizational Isolation</strong>: Separate registries maintain security boundaries
between different organizations, allowing each entity to control their own
agent ecosystem while still participating in the broader federated network.</t>
          <t><strong>Content Verification</strong>: Nodes can validate artifact integrity and signature
authenticity without trusting transport layers or intermediate storage systems.
This zero-trust approach ensures security even when using untrusted storage
infrastructure.</t>
          <t><strong>Reputation Systems</strong>: The cryptographic foundation enables the development of
reputation systems based on verifiable evidence rather than subjective claims.
Publishers with consistent signing practices and high-quality agents can build
measurable trust over time.</t>
        </section>
        <section anchor="threat-mitigation">
          <name>Threat Mitigation</name>
          <t>The security model addresses several key threats to distributed agent directories:</t>
          <t><strong>Supply Chain Attacks</strong>: Sigstore integration and transparency logs make it
difficult for attackers to inject malicious agents without detection, as all
publications are cryptographically signed and publicly auditable.</t>
          <t><strong>Data Integrity Attacks</strong>: Automatic hash verification prevents tampering with
agent records during storage or transmission, ensuring users receive authentic
content.</t>
          <t><strong>Identity Spoofing</strong>: OIDC-based keyless signing prevents attackers from
impersonating legitimate publishers without compromising their identity
provider credentials.</t>
          <t><strong>Availability Attacks</strong>: The distributed nature of the system, combined with
content replication across multiple registries, provides resilience against
denial-of-service attacks targeting individual nodes.</t>
        </section>
        <section anchor="access-control">
          <name>Access Control</name>
          <ul spacing="normal">
            <li>
              <t><strong>Registry-level permissions</strong> control who can publish and retrieve agent
records</t>
            </li>
            <li>
              <t><strong>Fine-grained policies</strong> can restrict access to specific agent categories or
capability types</t>
            </li>
            <li>
              <t><strong>Audit trails</strong> leverage existing registry logging capabilities to track
access patterns</t>
            </li>
          </ul>
        </section>
        <section anchor="trust-boundaries">
          <name>Trust Boundaries</name>
          <ul spacing="normal">
            <li>
              <t><strong>Organizational isolation</strong> through separate registries maintains security
boundaries</t>
            </li>
            <li>
              <t><strong>Content verification</strong> allows nodes to validate artifact integrity without
trusting transport layers</t>
            </li>
            <li>
              <t><strong>Reputation systems</strong> can build on cryptographic proofs of past agent
performance</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="performance-optimizations">
        <name>Performance Optimizations</name>
        <t>The architecture incorporates several optimizations for the specific
requirements of agent discovery:</t>
        <section anchor="bandwidth-optimization">
          <name>Bandwidth Optimization</name>
          <ul spacing="normal">
            <li>
              <t><strong>Incremental updates</strong> use OCI layer semantics to transmit only changed
portions of agent records</t>
            </li>
            <li>
              <t><strong>Content compression</strong> reduces storage and transmission costs for large agent
definitions</t>
            </li>
            <li>
              <t><strong>Selective replication</strong> based on query patterns minimizes unnecessary data
transfer</t>
            </li>
          </ul>
        </section>
        <section anchor="scalability-architecture">
          <name>Scalability Architecture</name>
          <t>The system scales horizontally through several mechanisms:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Registry sharding</strong> distributes storage load across multiple OCI registry
instances</t>
            </li>
            <li>
              <t><strong>Index partitioning</strong> in the DHT allows query load to scale with the number
of participating nodes</t>
            </li>
            <li>
              <t><strong>Lazy loading</strong> defers retrieval of detailed agent specifications until
actually needed</t>
            </li>
          </ul>
          <t>This architecture provides a robust foundation for a decentralized agent
directory that can scale to support the growing ecosystem of AI agents while
maintaining the security and reliability requirements of production systems.</t>
        </section>
      </section>
    </section>
    <section anchor="ai-catalog-interoperability">
      <name>AI Catalog Interoperability</name>
      <t>ADS natively interoperates with the AI Catalog model <xref target="AI-Catalog"/>, a typed,
nestable JSON container for discovering heterogeneous AI artifacts (such as MCP
servers, A2A agents, agent skills, and nested catalogs). ADS projects its
content-addressed OASF records into AI Catalog documents and serves them through
discovery APIs. This section specifies that projection and the surfaces through
which AI Catalog consumers access ADS content. The AI Catalog specification
version referenced here is 1.0; each catalog document's <tt>specVersion</tt> member
<bcp14>MUST</bcp14> identify the version to which that document conforms.</t>
      <section anchor="overview">
        <name>Overview</name>
        <t>The two models operate at complementary layers:</t>
        <ul spacing="normal">
          <li>
            <t><strong>OASF Records</strong> provide a deep, strongly typed agent model stored on a
content-addressed substrate (OCI artifacts, see <xref target="storage-architecture"/>) and
routed through the distributed hash table (see <xref target="mas-data-discovery"/>).</t>
          </li>
          <li>
            <t><strong>AI Catalog</strong> provides a thin, artifact-agnostic interoperability and
discovery surface. A catalog identifies each artifact by media type and either
references it (<tt>url</tt>) or embeds it (<tt>data</tt>), without requiring consumers to
parse the artifact's internal schema.</t>
          </li>
        </ul>
        <t>ADS treats AI Catalog as a <em>consumption surface</em> projected from records: the OCI
and DHT layers remain the storage and routing substrate, while AI Catalog
documents are derived views suitable for generic, schema-agnostic clients. The
AI Catalog media type is <tt>application/ai-catalog+json</tt>.</t>
      </section>
      <section anchor="catalog-data-model">
        <name>Catalog Data Model</name>
        <t>ADS-generated catalog documents <bcp14>MUST</bcp14> conform to the AI Catalog data model
<xref target="AI-Catalog"/>. An <tt>AICatalog</tt> <bcp14>MUST</bcp14> contain <tt>specVersion</tt> and <tt>entries</tt>. It <bcp14>MAY</bcp14>
also contain <tt>host</tt>, <tt>extensions</tt>, <tt>signature</tt>, and <tt>additionalSignatures</tt> as
defined by that specification. Producers <bcp14>SHOULD</bcp14> omit the reserved
<tt>additionalSignatures</tt> member; consumers <bcp14>MUST</bcp14> accept and ignore it. ADS-specific
information that is not defined by AI Catalog <bcp14>MUST NOT</bcp14> be represented using an
undefined top-level member such as <tt>metadata</tt>.</t>
        <t>Each <tt>CatalogEntry</tt> <bcp14>MUST</bcp14> contain <tt>identifier</tt>, <tt>type</tt>, and exactly one of <tt>url</tt>
or <tt>data</tt>. It <bcp14>MAY</bcp14> also contain <tt>displayName</tt>, <tt>description</tt>, <tt>tags</tt>, <tt>version</tt>,
<tt>updatedAt</tt>, <tt>extensions</tt>, <tt>publisher</tt>, <tt>digest</tt>, and <tt>trustManifests</tt>.</t>
        <t>The <tt>type</tt> member identifies the artifact's media type, such as
<tt>application/mcp-server-card+json</tt>, <tt>application/a2a-agent-card+json</tt>, or
<tt>application/ai-catalog+json</tt> for a nested catalog. Member names and semantics
are those defined by AI Catalog; in particular, producers <bcp14>MUST</bcp14> use <tt>type</tt>,
<tt>displayName</tt>, and <tt>updatedAt</tt>, not <tt>media_type</tt>, <tt>display_name</tt>, or
<tt>updated_at</tt>.</t>
        <t>The optional <tt>host</tt> member identifies the catalog operator. The optional
<tt>publisher</tt> member on an entry identifies the artifact publisher. Trust
contributions are represented by the entry's <tt>trustManifests</tt> array. Each
<tt>TrustManifest</tt> identifies a <tt>contributor</tt> and <bcp14>MAY</bcp14> include <tt>subject</tt>,
<tt>signature</tt>, <tt>trustSchema</tt>, <tt>attestations</tt>, <tt>provenance</tt>, and <tt>extensions</tt>,
subject to the AI Catalog validity and verification requirements. ADS
implementations <bcp14>MUST</bcp14> preserve the distinction between the catalog host, the
artifact publisher, and each trust manifest contributor.</t>
      </section>
      <section anchor="catalog-projection-and-identifiers">
        <name>Catalog Projection and Identifiers</name>
        <t>ADS derives catalog entries from OASF records through a deterministic
projection. The projection is keyed on the OASF <em>integration modules</em> a record
carries; modules that have no AI Catalog representation are ignored. Projected
entries <bcp14>MUST</bcp14> use the AI Catalog member names and <bcp14>MUST</bcp14> provide exactly one of
<tt>url</tt> or <tt>data</tt>. An inline <tt>data</tt> value <bcp14>MUST</bcp14> contain the complete artifact
document identified by <tt>type</tt>.</t>
        <t>A record is projectable only if it carries at least one <em>known</em> module. The
following modules are recognized and map to the indicated entry media types:</t>
        <table>
          <thead>
            <tr>
              <th align="left">OASF module</th>
              <th align="left">Catalog entry type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>integration/mcp</tt></td>
              <td align="left">
                <tt>application/mcp-server-card+json</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>integration/a2a</tt></td>
              <td align="left">
                <tt>application/a2a-agent-card+json</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>core/language_model/agentskills</tt></td>
              <td align="left">
                <tt>application/agent-skills+md</tt></td>
            </tr>
          </tbody>
        </table>
        <t>The projection produces one of three outcomes:</t>
        <ul spacing="normal">
          <li>
            <t><strong>No known module</strong>: the record is not projectable and <bcp14>MUST NOT</bcp14> produce a
catalog entry.</t>
          </li>
          <li>
            <t><strong>Exactly one known module</strong>: the record projects to a <em>leaf</em> entry whose
<tt>type</tt> is the module's media type and whose <tt>data</tt> or <tt>url</tt> identifies the
corresponding native artifact.</t>
          </li>
          <li>
            <t><strong>Two or more known modules</strong>: the record projects to a <em>container</em> entry with
<tt>type</tt> <tt>application/ai-catalog+json</tt> whose <tt>data</tt> embeds a nested <tt>AICatalog</tt>
containing one entry per known module. The nested catalog <bcp14>MUST</bcp14> use
<tt>specVersion</tt> and <tt>entries</tt> as defined by AI Catalog.</t>
          </li>
        </ul>
        <t>Entry fields are derived from the record: <tt>displayName</tt> from the record name,
and <tt>version</tt>, <tt>description</tt>, <tt>updatedAt</tt>, and <tt>tags</tt> from the corresponding
record fields when present. Since AI Catalog recommends omitting <tt>displayName</tt>
when the referenced artifact already carries its canonical name, the projection
<bcp14>SHOULD</bcp14> omit it in that case unless an intentional display override is required.
Entries within a container <bcp14>MUST</bcp14> be emitted in a deterministic order so that
identical records yield byte-identical catalogs.</t>
        <section anchor="projected-identifiers">
          <name>Projected Identifiers</name>
          <t>The entry <tt>identifier</tt> identifies the logical artifact and <bcp14>MUST</bcp14> remain stable
across versions and retrieval-URL changes. When an OASF record contains a
publisher-authorized <tt>urn:air</tt> identifier, ADS <bcp14>MUST</bcp14> preserve it exactly.
Otherwise, ADS <bcp14>MAY</bcp14> preserve a stable source identifier or assign an identifier
under its control. An ADS-assigned identifier <bcp14>MUST NOT</bcp14> be reassigned to another
artifact. A content identifier that changes when the record changes <bcp14>MUST NOT</bcp14> be
used as the logical artifact identifier. ADS <bcp14>MAY</bcp14> expose the record's content
identifier in an ADS-namespaced <tt>extensions</tt> member. ADS <bcp14>SHOULD</bcp14> set <tt>digest</tt> to
the digest of the exact artifact representation when it can be expressed using
the AI Catalog digest format. A record content identifier alone does not
establish publisher identity or trust. The <tt>urn:air</tt> identifier syntax is
defined by AI Catalog; URNs are specified in <xref target="RFC8141"/>.</t>
        </section>
      </section>
      <section anchor="trust-projection">
        <name>Trust Projection</name>
        <t>ADS projects its existing record-signing model (see <xref target="security-model"/>) into the
AI Catalog <tt>trustManifests</tt> array. A projected manifest <bcp14>MUST</bcp14> use the AI Catalog
member names and satisfy its manifest validity requirements. A signed manifest
<bcp14>MUST</bcp14> include a <tt>subject</tt> binding the manifest to the entry's <tt>identifier</tt>,
<tt>type</tt>, <tt>digest</tt>, and, when present, <tt>version</tt>. The entry <bcp14>MUST</bcp14> include the
matching <tt>digest</tt>; the digest is computed over the retrieved artifact bytes for
<tt>url</tt>, or over the JCS-canonicalized JSON value for <tt>data</tt>.</t>
        <t>Consistent with <xref target="AI-Catalog"/>, each trust manifest is a peer element of the
entry; it does not wrap or modify the artifact. ADS carries signatures, public
keys, and trust metadata through its OCI referrer model (see
<xref target="content-provenance-and-digital-signatures"/>). AI Catalog signatures use
detached JWS <xref target="RFC7515"/> over a JSON Canonicalization Scheme <xref target="RFC8785"/> payload
as specified by AI Catalog. An OCI or Sigstore <xref target="Sigstore"/> signature <bcp14>MUST NOT</bcp14>
be represented as a verified AI Catalog endorsement unless its signature,
signer profile, and subject binding satisfy the AI Catalog verification
requirements. Where ADS cannot produce a conforming manifest, it <bcp14>MAY</bcp14> retain the
signature as an OCI referrer without projecting it into <tt>trustManifests</tt>.</t>
      </section>
      <section anchor="ai-finder-service">
        <name>AI Finder Service</name>
        <t>ADS exposes AI Catalog content through the AI Finder service, offered over gRPC
and, via a gateway, as a REST API. The REST surface comprises:</t>
        <ul spacing="normal">
          <li>
            <t><tt>GET /v1/agents</tt>: list catalog entries with deterministic, cacheable browsing
semantics. Results are filtered and ordered server-side (database filtering and
ordering, without relevance ranking) and paginated.</t>
          </li>
          <li>
            <t><tt>GET /v1/agents/{cid}</tt>: retrieve a single <tt>CatalogEntry</tt> by record CID,
providing a stable detail URL for any entry discovered through listing.</t>
          </li>
          <li>
            <t><tt>GET /v1/agents/{cid}/export</tt>: render the full agent record in a requested
export format. Supported formats include <tt>oasf</tt>, <tt>a2a</tt>, <tt>agent-skill</tt>, and
<tt>mcp-ghcopilot</tt>; the response carries the rendered bytes with an appropriate
content type.</t>
          </li>
          <li>
            <t><tt>GET /.well-known/ai-catalog.json</tt>: return an AI Catalog document at the
well-known URI <xref target="RFC8615"/>. The response <bcp14>MUST</bcp14> be a conforming <tt>AICatalog</tt>
containing <tt>specVersion</tt> and <tt>entries</tt>; it <bcp14>MAY</bcp14> include <tt>host</tt> and other
standard AI Catalog members. AI Catalog does not define a <tt>WellKnownCatalog</tt>
type or a <tt>collections</tt> member.</t>
          </li>
        </ul>
        <t>An ADS host <bcp14>MAY</bcp14> also advertise its catalog using the <tt>ai-catalog</tt> link relation
defined by <xref target="AI-Catalog"/>, in an HTTP <tt>Link</tt> header or an HTML <tt>link</tt> element.
Clients <bcp14>SHOULD</bcp14> check for this relation during website discovery and <bcp14>MAY</bcp14> fall
back to the well-known URI when no relation is advertised.</t>
        <t>The export operation is the heterogeneity bridge: a single content-addressed
OASF record can be materialized into the native format of several ecosystems
(A2A agent cards, agent skills, MCP server descriptors) without changing its
canonical storage representation.</t>
      </section>
      <section anchor="discovery-integration">
        <name>Discovery Integration</name>
        <t>The AI Finder surface is <em>host-local</em>: the well-known document and the REST API
describe the records held or indexed by a single host, and the AI Catalog
nesting mechanism composes such documents into hierarchies. ADS complements this
with <em>global</em> discovery: the distributed hash table (see
<xref target="dht-based-discovery-process"/>) routes capability queries across hosts, which
base AI Catalog—relying only on the well-known URI and nested references—does not
provide. The AI Catalog specification does not define queryable collections or
dynamic discovery semantics. ADS <bcp14>MAY</bcp14> expose dynamic queries through its own
REST or gRPC interfaces; these interfaces are separate from the AI Catalog data
model. A catalog entry <bcp14>MAY</bcp14> reference a nested AI Catalog, but that document
<bcp14>MUST</bcp14> itself conform to the standard catalog schema. In this arrangement ADS
acts as the content-routing backbone beneath AI Catalog's decentralized,
nestable composition.</t>
      </section>
      <section anchor="conformance-and-trust-layers">
        <name>Conformance and Trust Layers</name>
        <t>ADS supports the conformance levels defined by <xref target="AI-Catalog"/>:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Level 1, Minimal Catalog</strong>: entries carrying <tt>identifier</tt>, <tt>type</tt>, and
exactly one of <tt>url</tt> or <tt>data</tt>.</t>
          </li>
          <li>
            <t><strong>Level 2, Discoverable Catalog</strong>: a catalog with a <tt>host</tt> object; it <bcp14>MAY</bcp14> be
served at the well-known URI.</t>
          </li>
          <li>
            <t><strong>Level 3, Trusted Catalog</strong>: trust manifests and signatures are verified,
including signer authentication, subject-to-entry release binding, and
artifact digest verification, before their claims are relied upon.</t>
          </li>
        </ul>
        <t>Because ADS addresses records by cryptographic content identifiers, consumers
can detect substitution of a retrieved record by verifying its identifier.
This does not, by itself, protect the catalog snapshot or authenticate the
publisher. Consumers requiring snapshot integrity <bcp14>SHOULD</bcp14> verify the catalog
signature according to AI Catalog or use an authenticated content-addressed
mechanism. ADS deployments claiming Level 3 conformance <bcp14>SHOULD</bcp14> provide one of
these mechanisms. Consumers verifying signed trust manifests <bcp14>MUST</bcp14> also verify
the entry digest and the manifest's release binding.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="RFC8141">
          <front>
            <title>Uniform Resource Names (URNs)</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="April" year="2017"/>
            <abstract>
              <t>A Uniform Resource Name (URN) is a Uniform Resource Identifier (URI) that is assigned under the "urn" URI scheme and a particular URN namespace, with the intent that the URN will be a persistent, location-independent resource identifier. With regard to URN syntax, this document defines the canonical syntax for URNs (in a way that is consistent with URI syntax), specifies methods for determining URN-equivalence, and discusses URI conformance. With regard to URN namespaces, this document specifies a method for defining a URN namespace and associating it with a namespace identifier, and it describes procedures for registering namespace identifiers with the Internet Assigned Numbers Authority (IANA). This document obsoletes both RFCs 2141 and 3406.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8141"/>
          <seriesInfo name="DOI" value="10.17487/RFC8141"/>
        </reference>
        <reference anchor="RFC8615">
          <front>
            <title>Well-Known Uniform Resource Identifiers (URIs)</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="May" year="2019"/>
            <abstract>
              <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
              <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8615"/>
          <seriesInfo name="DOI" value="10.17487/RFC8615"/>
        </reference>
        <reference anchor="RFC8785">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
              <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>
        <reference anchor="OpenID.Auth" target="https://openid.net/specs/openid-authentication-2_0.txt">
          <front>
            <title>OpenID Authentication 2.0 - Final</title>
            <author initials="O." surname="Foundation" fullname="OpenID Foundation">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="AI-Catalog" target="https://ai-catalog.io/specification/">
          <front>
            <title>AI Catalog Specification</title>
            <author initials="A. C. W." surname="Group" fullname="Agent Card Working Group">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="AGNTCY-OASF" target="https://github.com/agntcy/oasf">
          <front>
            <title>Open Agent Schema Framework (OASF)</title>
            <author initials="A." surname="Community" fullname="AGNTCY Community">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="OCI.Image" target="https://github.com/opencontainers/image-spec">
          <front>
            <title>OCI Image Format Specification</title>
            <author initials="O. C." surname="Initiative" fullname="Open Container Initiative">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="OCI.Manifest" target="https://github.com/opencontainers/image-spec/blob/v1.1.1/manifest.md">
          <front>
            <title>OCI Image Manifest Specification</title>
            <author initials="O. C." surname="Initiative" fullname="Open Container Initiative">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="OCI.Artifact" target="https://github.com/opencontainers/image-spec/blob/v1.1.1/artifacts-guidance.md">
          <front>
            <title>OCI Artifacts Guidance Specification</title>
            <author initials="O. C." surname="Initiative" fullname="Open Container Initiative">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="OCI.Distribution" target="https://github.com/opencontainers/distribution-spec">
          <front>
            <title>OCI Distribution Specification</title>
            <author initials="O. C." surname="Initiative" fullname="Open Container Initiative">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="DHT">
          <front>
            <title>Kademlia: A peer-to-peer information system based on the xor metric</title>
            <author initials="P." surname="Maymounkov" fullname="Petar Maymounkov">
              <organization/>
            </author>
            <author initials="D." surname="Mazieres" fullname="David Mazieres">
              <organization/>
            </author>
            <date year="2001"/>
          </front>
          <seriesInfo name="IPTPS '01" value=""/>
        </reference>
        <reference anchor="Sigstore" target="https://www.sigstore.dev">
          <front>
            <title>Sigstore: A New Standard for Signing, Verifying and Protecting Software</title>
            <author initials="C. N. C." surname="Foundation" fullname="Cloud Native Computing Foundation">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="libp2p-kad-dht" target="https://github.com/libp2p/go-libp2p-kad-dht">
          <front>
            <title>go-libp2p-kad-dht: A Kademlia DHT implementation on go-libp2p</title>
            <author initials="libp2p" surname="Community" fullname="libp2p Community">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="AGNTCY-ADS" target="https://arxiv.org/abs/2509.18787">
          <front>
            <title>The AGNTCY Agent Directory Service: Architecture and Implementation</title>
            <author initials="L." surname="Muscariello" fullname="Luca Muscariello">
              <organization/>
            </author>
            <author initials="V." surname="Pandey" fullname="Vijoy Pandey">
              <organization/>
            </author>
            <author initials="R." surname="Polic" fullname="Ramiz Polic">
              <organization/>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="AI-Registry-Evolution" target="https://arxiv.org/abs/2508.03095">
          <front>
            <title>Evolution of AI Agent Registry Solutions: Centralized, Enterprise, and Distributed Approaches</title>
            <author initials="A." surname="Singh" fullname="Aditi Singh">
              <organization/>
            </author>
            <author initials="A." surname="Ehtesham" fullname="Abul Ehtesham">
              <organization/>
            </author>
            <author initials="M." surname="Lambe" fullname="Mahesh Lambe">
              <organization/>
            </author>
            <author initials="J. J." surname="Grogan" fullname="Jared James Grogan">
              <organization/>
            </author>
            <author initials="A." surname="Singh" fullname="Abhishek Singh">
              <organization/>
            </author>
            <author initials="S." surname="Kumar" fullname="Saket Kumar">
              <organization/>
            </author>
            <author initials="L." surname="Muscariello" fullname="Luca Muscariello">
              <organization/>
            </author>
            <author initials="V." surname="Pandey" fullname="Vijoy Pandey">
              <organization/>
            </author>
            <author initials="G." surname="Sauvage De Saint Marc" fullname="Guillaume Sauvage De Saint Marc">
              <organization/>
            </author>
            <author initials="P." surname="Chari" fullname="Pradyumna Chari">
              <organization/>
            </author>
            <author initials="R." surname="Raskar" fullname="Ramesh Raskar">
              <organization/>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="Oracle-AgentSpec" target="https://oracle.github.io/agent-spec/index.html">
          <front>
            <title>Open Agent Spec Documentation</title>
            <author initials="" surname="Oracle" fullname="Oracle">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
GWItM6upDjvFqgRVIBJK8gucg+DvxMvMFeCAWuw557YmVNfCqMAdn023J1OZ
Y71gswqUFazgnUermgpg9ZqtWFSuN4H/LqTwUwrUqTgI8GEOZIlPj8IfQHSW
qya4w8UxQC0BrhulMjxZNlz9lK8t3eEVsbbDP3XLnjwYLku40PsaGXj18adu
gTvC6B2qYD1NBEgxEi3Yo9/Ar5GnO5vCJ0ontqkOOZxxVWaQ+4X7nhxJL9jA
2CxWcDVcwReXM/anbYRUyDEn3Ce4CEIYrBGZMgEyRF11A5X5QJF4I/RxDv05
uj+r8+ToppFtYuoNt5ag3iWBNOXKtITngeGmw0MuomZeEX7g2gmn/OGeNihW
tjiY4XFHjy8GRp/vlAWWzmvRmE2noMXu8V3Tvs4weQ1jKw0BlApJOBnYvKIr
JpfOz0UxVyKlZDjAbNRsrTEEJ2EkxrvYUEMhZEOhdQuBUyRKlWYLCuQ02JHB
6DBsdepl604nFaD23KuhC9idy2yVqSV1CHxVaETAGpBce6NIraZd4JyGnPDW
QYH2b03AICo6pjCiyTH3rl6B612mJy7FJKK6yn7FwubAu/2uqJpAsN0WlCto
AgYNpr65vW9ccynC/OoZ2VB1za2w4BxsV2I/V7gLZ0f8LTuFMcJVq64hvJCK
GwdSBY6qDtXVmQ2z8hwYVdQxNkQrJVD+MyGNYUtH2BeqdsDYwVHbvqsRjEv1
GW00pmzBL9rUZP9a3iVslnGjXk0segCLUr5P2EzdulyOUnA9IhAJMyVdWuUX
6XNWpAZWpILwZBaXctwaZYBIVXpLW6Bes/wQcYDYbpqqwLFB3c7w/WmBhgP1
/yIBJVTjH4pYglt+bdUNBPartaNvRnjIsvAYEZf1kWmCXQsdCTx1lZVReGIV
FLRzMV11VVHVFAZNI23KIyTKgX+vLrzt7xmgyo97o2JFupdlJU1kpFwWb9PR
+mxNIavB52AlvCUr4Z1YCW7pvfZFU1VYqxFJn3SYNSiPpE7CdTfG3OAcuL0e
bZtbP98lHO5Tih3mX5qaPHN0v9kXt4tLHd59t6Ex0r1l1Nmtv9A8sHWgNqza
gU6PiEFbMTamqcODZMccfVTNyiFTuraAbtC1KwdO6yRmmq3uAkAS8SWgfxFV
lX7JejvJKLa0hRZc6ibRFWHwpzJ9WIjQ75EIbUXiHhEm/iZOi6AsDUqAVxdY
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
QmOoBGD2RR3oAGK5YpbRKuRim3xl1iRMctKlkOhFcPA4HCoFCaizdk+eaY+L
0XoI/ICMyRNxRKnoJWcuG9RAFCslUqSqeWx1XyKGzaoStM0qv/wwuLOzsPgD
RBQRM9oLNu5Jbd4I//pv/zP800Y7RxsnfLVrN5zPTB3Gxk/BRn/O8IbUAbjL
m8RlZylTooBLdUoKNkL7j7eUKR1wlrK7h6UIV1CVj3J3kZ6lTMmAs5QpBoCl
rJNcJZpqkG5vf2SPG0i0oYlv1U7ii+ofQY/+seHGuKS8SBoNUUSpJ6vfEDMN
U/KTq5T1YxoBUMWqncYpWAr4gih6kqZVG0trrFJNXDTtwzjhqbhAeHxI2e7s
j2R9DUvBgm7prLcVwVdd3ev1i5jbuVi5ue2dwyffluUPr+ZXHxdX316d//jm
m6s//Fy8ebV8/uOkevnDuvzD5R+vXhenzcFu9Co+TF/PnI4G/j9mtT+s/1h9
d/X1Lyd/vn/Fp7OvM0SxDla3dvdHefPnrPvp3b35Ovvm8u3ifXny59P6fPX9
NSwLUAHaBFLcnxwkR9M38+Ofv83fFR88rJXMVD8jxUZX9zjTWhUT3yWrKC5T
t3zpYeekwdVTka5pgsza0BF7ZHW8maKx5g+TZkytwxCF3Fxh1P0wfUpME+Hg
Nr1elCeugZnx/nTckFcH07bSAnxVTZ5rEGDtsUPGj3bzIJnLxAiblTwUipV2
8O7Ala8xpeecDqutcKmkNNNuiuhl9xMJXJe6eNT3OGGAFJE/fRslQ9jiT/7M
FB5voZ0a/Xj9xCnjD2TscmtGpZiyoJ1kzaoReXl88vqM1VqU6Tc3/tRlcqsQ
NvXjp/zz5bD1z5f3//5X/Be+7z06XvGDT/3esCBSsT/1+9+6H/nnv3/Wr3rf
3X1j+4P+Pfz66Q/cx3TVK1nSfHI1bH1y1fvaX2mkGyARAX4f3+Z/9KrzycGv
/gKhuYs/hPy8/eTHzid/vOMAX7YP8GX7APaTz4FbB2x33JP5nW7w6CNzm088
177O7vV+Fo7dh7e6o1PLIIPgNbDsPWy/wldSS1GJ02+WnEFAS9goBUnK8h0d
aQFyXliHMKEaG5Doghztwydxkge7S7RIYZeXrFLQXrCNZlaTRiIzLElPFxOe
fv7UrpqU1wUFFL2uI8x/TTMbdtxIeYscmLN2bNxL46uJahyWXVJTGieb/8gk
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
blCDqo3b4P8B1/dA4QXxAAA=

-->

</rfc>
