<?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.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mp-agntcy-ads-02" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="agent-dir">Agent Directory Service</title>
    <seriesInfo name="Internet-Draft" value="draft-mp-agntcy-ads-02"/>
    <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="July" day="06"/>
    <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 145?>

<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 153?>

<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 does not store a
separate catalog: it projects its content-addressed OASF records into AI Catalog
documents on demand and serves them through a discovery API. This section
specifies that projection and the surfaces through which AI Catalog consumers
access ADS content.</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
canonical AI Catalog media type is <tt>application/ai-catalog+json</tt>, and ADS emits
documents conforming to AI Catalog specification version <tt>1.0</tt>.</t>
      </section>
      <section anchor="catalog-data-model">
        <name>Catalog Data Model</name>
        <t>ADS adopts the AI Catalog object model <xref target="AI-Catalog"/>. The top-level <tt>AICatalog</tt>
object carries a <tt>spec_version</tt>, an optional <tt>host</tt> descriptor, a list of
<tt>entries</tt>, and free-form <tt>metadata</tt>.</t>
        <t>Each <tt>CatalogEntry</tt> carries:</t>
        <ul spacing="normal">
          <li>
            <t><tt>identifier</tt>: a stable, globally unique identifier (a URN <xref target="RFC8141"/>; see
<xref target="record-to-catalog-projection"/>)</t>
          </li>
          <li>
            <t><tt>display_name</tt>: a human-readable name</t>
          </li>
          <li>
            <t><tt>media_type</tt>: the artifact's media type (for example
<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)</t>
          </li>
          <li>
            <t>exactly one of <tt>url</tt> (a reference to the artifact) or <tt>data</tt> (the artifact
embedded inline)</t>
          </li>
          <li>
            <t>optional <tt>version</tt>, <tt>description</tt>, <tt>tags</tt>, <tt>publisher</tt>, <tt>trust_manifest</tt>, and
<tt>updated_at</tt></t>
          </li>
        </ul>
        <t>Trust metadata is carried by the <tt>TrustManifest</tt> object (<tt>identity</tt>,
<tt>trust_schema</tt>, <tt>attestations</tt>, <tt>provenance</tt>, and a detached signature; see
<xref target="trust-projection"/>). The <tt>HostInfo</tt> and <tt>Publisher</tt> objects identify the
catalog operator and the publishing entity, respectively. ADS profiles these
objects per <xref target="AI-Catalog"/>; field-level semantics follow that specification.</t>
        <section anchor="dynamic-collections">
          <name>Dynamic Collections</name>
          <t>ADS extends the model with a <tt>WellKnownCatalog</tt> object served at the well-known
URI (see <xref target="ai-finder-service"/>). In addition to statically published <tt>entries</tt>,
it advertises <tt>collections</tt>: each <tt>CatalogCollection</tt> names a dynamic, queryable
view whose <tt>url</tt> resolves to a list of records (for example a nested
<tt>AICatalog</tt>) matching a server-side query. Collections let a host expose
large or frequently changing record sets without materializing a single static
document.</t>
        </section>
      </section>
      <section anchor="record-to-catalog-projection">
        <name>Record-to-Catalog Projection</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.</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 media 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/agentskill+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. A catalog entry <bcp14>MUST</bcp14>
reference an artifact, and a record carrying no known module exposes nothing to
project.</t>
          </li>
          <li>
            <t><strong>Exactly one known module</strong>: the record projects to a <em>leaf</em> entry whose
<tt>media_type</tt> is the module's media type and whose <tt>data</tt> carries the module's
structured data inline.</t>
          </li>
          <li>
            <t><strong>Two or more known modules</strong>: the record projects to a <em>container</em> entry with
media type <tt>application/ai-catalog+json</tt> whose <tt>data</tt> embeds a nested
<tt>AICatalog</tt> containing one entry per known module.</t>
          </li>
        </ul>
        <t>Entry fields are derived from the record: <tt>display_name</tt> from the record name,
and <tt>version</tt>, <tt>description</tt>, <tt>updated_at</tt>, and <tt>tags</tt> from the corresponding
record fields. Entries within a container <bcp14>MUST</bcp14> be emitted in a deterministic
order so that identical records yield byte-identical catalogs.</t>
        <section anchor="catalog-identifiers">
          <name>Catalog Identifiers</name>
          <t>Each projected entry is identified by a content-addressed URN of the form:</t>
          <artwork><![CDATA[
urn:ai:org.agntcy:cid:<cid>[:<suffix>]
]]></artwork>
          <t>where <tt>&lt;cid&gt;</tt> is the record's content identifier (see
<xref target="content-addressed-storage"/>) and the optional <tt>&lt;suffix&gt;</tt> disambiguates the
per-module entries nested inside a container. Because the identifier is derived
from the record CID, catalog identity inherits the immutability and
verifiability properties of the underlying content addressing.</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>TrustManifest</tt>. Signatures associated with a record are surfaced as
the entry's <tt>trust_manifest</tt>, exposing publisher identity and provenance as
<tt>attestations</tt> and <tt>provenance</tt> links.</t>
        <t>Consistent with <xref target="AI-Catalog"/>, the trust manifest is a <em>peer element</em>: it sits
alongside the artifact within the catalog entry and does not wrap or modify the
artifact. ADS carries these objects through its referrer model, in which
signatures, public keys, and trust metadata are stored as referrer objects
associated with a record (see <xref target="content-provenance-and-digital-signatures"/>).
Where a catalog-native, self-contained signature is required, the trust manifest
<bcp14>MAY</bcp14> carry a detached JWS <xref target="RFC7515"/> computed over its JSON Canonicalization
<xref target="RFC8785"/> serialization.</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 the host's <tt>WellKnownCatalog</tt>
document (host descriptor, statically published entries, and dynamic
collections) at the well-known URI <xref target="RFC8615"/>.</t>
          </li>
        </ul>
        <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. A <tt>CatalogCollection.url</tt> <bcp14>MAY</bcp14> therefore resolve to a nested <tt>AICatalog</tt>
that is itself backed by a DHT or search query, allowing a static catalog entry
point to expand into globally routed results. 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 progressive-complexity levels defined by <xref target="AI-Catalog"/>:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Minimal</strong>: entries carrying <tt>identifier</tt>, <tt>media_type</tt>, and <tt>url</tt> or <tt>data</tt>.</t>
          </li>
          <li>
            <t><strong>Discoverable</strong>: a <tt>host</tt> descriptor served at the well-known URI.</t>
          </li>
          <li>
            <t><strong>Trusted</strong>: entries carrying <tt>trust_manifest</tt>, <tt>publisher</tt>, attestations, and
provenance.</t>
          </li>
        </ul>
        <t>Because ADS addresses every record by a cryptographic content identifier, it
natively satisfies the AI Catalog content-addressing trust layer: substitution
of catalog content is structurally detectable through CID verification,
independent of transport or signature checks.</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="RFC6920">
          <front>
            <title>Naming Things with Hashes</title>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="D. Kutscher" initials="D." surname="Kutscher"/>
            <author fullname="C. Dannewitz" initials="C." surname="Dannewitz"/>
            <author fullname="B. Ohlman" initials="B." surname="Ohlman"/>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <author fullname="P. Hallam-Baker" initials="P." surname="Hallam-Baker"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>This document defines a set of ways to identify a thing (a digital object in this case) using the output from a hash function. It specifies a new URI scheme for this purpose, a way to map these to HTTP URLs, and binary and human-speakable formats for these names. The various formats are designed to support, but not require, a strong link to the referenced object, such that the referenced object may be authenticated to the same degree as the reference to it. The reason for this work is to standardise current uses of hash outputs in URLs and to support new information-centric applications and other uses of hash outputs in protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6920"/>
          <seriesInfo name="DOI" value="10.17487/RFC6920"/>
        </reference>
        <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://agent-card.github.io/ai-catalog/">
          <front>
            <title>AI Catalog Specification</title>
            <author initials="A. C." surname="Community" fullname="Agent Card Community">
              <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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

-->

</rfc>
