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

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

<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 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="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="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="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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
l+V3z+fr94v11+ur71/+bv37H4uXz5dPv59Uz77blL+//cP6RXHRHO9Hz+OT
9MXMKWz3/5jRfr/5Q/XN+qufz3+6f8THs68yRLEOVrdm9wf58ueM++nZvfwq
+93tq8Wb8vyni/pq9e07GBagArQJpHg0OU5Opy/nZz9+nb8u3npYK2mLfrqC
Db0dcsKtSi3fX6coLuco+V5ke/IVbD3VappeuCwqT9ldpwdWKRprGimpTdRB
ClHITRlFxQBza0RvFQ5us6xFsnIpxIznpwfIeOUQbRU+wE/V5NYEed0+SEad
LEwF7hkZX2FCxxWtRlueUulgpl3z0Mfqh5Fdh6r4Uw85XEyHZfzx6ygZwRx+
8I+54BMJtCOfH62dOOXagZyU2zpWUAyZAqRns2pEIJ6dv7hkpQZ1lA8f/INy
yagmdOlHQPnz5aj158v7n/8T/oXfe4NuN7zwqecNjyEF61PP/9L5yJ///llP
9X67+8X2hf45/OnTF9zXdNS1DGmurEetK+vez/6JTuECJCLAH+HX/EvPO1eO
/+QPEJq9+H3I79sr33eu/OGOBXzZXsCX7QXYK58Dtw7Y7tgn85xO8PQ9s5NP
vNfezu72fhaO3Ye3OqMLywGD4AXw5ENss8FbUkvxgNNXlFwBQEvYEANJyvId
PXIHBLmwDmFCNTaa0AE51oNv4qEMbCxrivo+D1mloJ5gu8SsJpVDjh0M56U9
xwMff2xHTcp3BYWTvO4SzGBN0xI226WMQRbMORs26qHRtURVCssuqfmIk8t9
alKtjMHNcmyJnSVqdkhpVi93t6PmIVL0FpiAjbUktc8IQuGbJTZsqG1WhSrx
ClWO0rjHMjCTN5G6gDm0Y+9iLiBpVtT5w6g4LkionwnKQNafzP5jPgjYoeJA
ECOnktNm1UUM06slsGUkBZv3F8YfoCXbTplCKWVbqC6m6Wg5x/YYopP2AN6O
hZPl8QeOU0W8W78feGXSkeJTYMLmON1wLUfFs1nM8Hcg437KdENxaspgjKGP
1KR4I+oFDELtmc/6J6OudF4hn8DRbAZQNsA/Vtdfq15Kj8kxjUGdVgIB5mnT
0ajUrwLtWlJ2DIjFGGbZaveGyZ0geBjeb5sdvTkhmwItzmvA2OtJREX81CXp
b//2v4Jz2rUdkwOE+ifhQ0iy94/3Dv/DL7H9fjBD9s3nM4YyZbE81BmV34uH
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
sfal4PTFD4e8b2ny3wYUhB58DP4fsgzd9tXBAAA=

-->

</rfc>
