<?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.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-zahed-acap-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="ACAP">Agent Capability Advertisement Protocol (ACAP)</title>
    <seriesInfo name="Internet-Draft" value="draft-zahed-acap-00"/>
    <author fullname="Zaheduzzaman Sarker">
      <organization>Nokia</organization>
      <address>
        <email>zaheduzzaman.sarker@nokia.com</email>
      </address>
    </author>
    <author fullname="Tirumaleswar Reddy">
      <organization>Nokia</organization>
      <address>
        <email>k.tirumaleswar_reddy@nokia.com</email>
      </address>
    </author>
    <date year="2026" month="June" day="25"/>
    <area>xxxxxx</area>
    <workgroup>xxxxx</workgroup>
    <keyword>AI agents</keyword>
    <keyword>capability advertisement</keyword>
    <keyword>agent discovery</keyword>
    <keyword>QUIC</keyword>
    <keyword>WebTransport</keyword>
    <abstract>
      <?line 68?>

<t>This document specifies the Agent Capability Advertisement Protocol (ACAP),
a REST-like protocol built on HTTP/3 that defines a structured registry and
exchange format for Agent Capability Documents (ACDs). ACAP enables the
discovery of AI agents deployed across different administrative domains on the
Internet. Each agent exposes an ACAP endpoint, hosted at a well-known URI,
that serves ACDs describing the capabilities, authentication requirements, and operational metadata for agents within that domain. ACAP supports three core operations: retrieval, registration, and capability-based search. In 
deployments where multiple agent operators share hosting infrastructure, 
ACDs are cryptographically signed to enable secure, decentralized 
agent discovery.</t>
    </abstract>
  </front>
  <middle>
    <?line 80?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The proliferation of AI agents deployed across heterogeneous administrative
domains on the Internet creates a fundamental interoperability challenge: how
can an agent or orchestration system discover the capabilities of agents it has
never previously encountered, without relying on centralized registries or
out-of-band coordination?</t>
      <t>This document specifies the Agent Capability Advertisement Protocol (ACAP), a
structured discovery protocol that fills this gap. ACAP is inspired by RFC 8615
(Well-Known URIs) <xref target="RFC8615"/> and the WebFinger protocol <xref target="RFC7033"/> and
provides richer capability advertisement than DNS-SD TXT records.</t>
      <t>ACAP defines:</t>
      <ul spacing="normal">
        <li>
          <t>A well-known URI scheme for locating ACAP endpoints.</t>
        </li>
        <li>
          <t>An Agent Capability Document (ACD) format encoded as JSON,
optionally carried as the payload of a JWT <xref target="RFC7519"/> when
signing is required.</t>
        </li>
        <li>
          <t>Three HTTP/3 <xref target="RFC9114"/> operations: GET (retrieve), PUT (register/update),
and POST (query by capability).</t>
        </li>
        <li>
          <t>A signing mechanism based on JSON Web Signature (JWS) <xref target="RFC7515"/>
to ensure ACD integrity and agent operator authenticity.</t>
        </li>
      </ul>
      <t>A key motivation for ACD signatures is the multi-tenant deployment model,
where multiple agent operators share the same hosting infrastructure.
In such environments, the TLS end-entity certificate belongs to the
infrastructure provider, not the agent operator. ACD signatures allow
the agent operator to bind their identity directly to the ACD content,
independent of the hosting infrastructure.</t>
      <t>Note: A future revision of this document will provide a formal CDDL
<xref target="RFC8610"/> representation covering both JSON and CBOR encodings,
enabling the same ACD content to be represented in either encoding.
When CBOR encoding is supported, COSE <xref target="RFC9052"/> will be used
for signing in place of JWS. Clients and servers will negotiate
the encoding using the <tt>Accept</tt> and <tt>Content-Type</tt> headers.</t>
      <section anchor="requirements-language">
        <name>Requirements Language</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" 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>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <dl>
        <dt>Agent:</dt>
        <dd>
          <t>An autonomous software entity capable of performing tasks on behalf of a
principal, potentially communicating with other agents.</t>
        </dd>
        <dt>Agent Capability Document (ACD):</dt>
        <dd>
          <t>A structured JSON document that describes an agent's identity,
capabilities, and authentication requirements.
In Model 2, an ACD MUST be carried as the payload of a JWT <xref target="RFC7519"/>.
In Model 1, an ACD MAY be carried as plain JSON.</t>
        </dd>
        <dt>ACAP Endpoint:</dt>
        <dd>
          <t>An HTTP/3 server exposing ACD resources at well-known URIs.</t>
        </dd>
        <dt>Trust Domain:</dt>
        <dd>
          <t>An administrative domain that operates one or more ACAP endpoints and
issues or validates agent identities within that domain.</t>
        </dd>
        <dt>Capability Descriptor:</dt>
        <dd>
          <t>A structured record within an ACD that describes a single capability
offered by the agent.</t>
        </dd>
        <dt>Agent Operator:</dt>
        <dd>
          <t>The entity responsible for deploying and managing an agent, which
holds the private key used to sign the ACD.</t>
        </dd>
      </dl>
    </section>
    <section anchor="motivation">
      <name>Motivation</name>
      <t>When the domain of an agent operator is already known, the DNS provides
what is needed to connect to it. Service Binding (SVCB) records <xref target="RFC9460"/>
convey connection parameters such as the supported application protocols,
port, and IP addresses in a single cached lookup, before any connection
is established. ACAP does not duplicate this connection-layer information.</t>
      <t>What the DNS does not provide is a way to learn what an agent can do.
Agent capability information is structured and evolving: each capability
has its own input and output types, performance characteristics, and
authentication requirements, and discovery includes searching for agents
by capability, not only resolving a known name. This is not a connection
hint; it is capability data, and querying it is an application-layer
operation. Encoding such data in the DNS is also a poor fit:
capability data is far larger than a connection hint, and packing it
into DNS records inflates response sizes and risks fragmentation and
fallback to TCP.</t>
      <t>ACAP therefore addresses a different concern than connection bootstrap. 
It defines the Agent Capability Document, its retrieval, and 
capability-based search, served over HTTPS at well-known URIs. 
Placing capability description at the application layer lets the protocol 
carry rich and extensible structure, be queried, and be signed by the 
agent operator independently of the infrastructure that hosts it (<xref target="deployment-models"/>). Because the format is an
application-layer document, new capabilities and fields can be
introduced in future revisions without defining new DNS record types
or registering new parameters. DNS-based connection discovery and ACAP are 
complementary: the former locates and connects to a known domain, 
while ACAP describes the capabilities of the agents within it and 
enables discovery across them.</t>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>ACAP operates as follows:</t>
      <ol spacing="normal" type="1"><li>
          <t>An agent operator registers an ACD at their ACAP endpoint by issuing a
PUT request to the well-known URI for that agent.</t>
        </li>
        <li>
          <t>A discovering party retrieves an ACD by issuing a GET request to the
agent's well-known URI, or discovers agents by capability by issuing a
POST query to the domain-level query endpoint.</t>
        </li>
        <li>
          <t>Upon receipt of a signed ACD, the recipient MUST verify the JWS signature
and check that the ACD has not expired.</t>
        </li>
      </ol>
      <t>The following diagram illustrates the basic discovery flow:</t>
      <figure anchor="fig-overview">
        <name>Basic ACAP Discovery Flow</name>
        <artwork><![CDATA[
   Requester                                           ACAP Endpoint
       |                                                     |
       |--- GET https://{domain}/.well-known/            --->|
       |        agents[/{agent-local-id}]/acap               |
       |                                                     |
       |<------- 200 OK {JWT or JSON ACD} ------------------ |
       |                                                     |
       |         [If signed: Verify JWS signature]           |
       |         [If signed: Check exp claim]                |
       |                                                     |
       |-- Connect to agent endpoint (QUIC/WebTransport) --->|
]]></artwork>
      </figure>
    </section>
    <section anchor="deployment-models">
      <name>Deployment Models</name>
      <t>This section describes two common deployment models. Other deployment models are possible and may be defined in future revisions of this document.</t>
      <section anchor="model-1-domain-hosted-internal-agents">
        <name>Model 1: Domain-Hosted Internal Agents</name>
        <t>In this model, an organization deploys agents within its own domain for
internal use. The domain operator and agent operator are the same entity.
For example, <tt>example.com</tt> may deploy multiple internal agents, a
scheduling agent, a document processing agent, and a customer support
agent, all hosted within its own infrastructure:</t>
        <artwork><![CDATA[
https://example.com/.well-known/agents/scheduler/acap
https://example.com/.well-known/agents/docproc/acap
https://example.com/.well-known/agents/support/acap
]]></artwork>
        <t>Since the domain operator and agent operator are the same entity, TLS
authentication of the ACAP endpoint is sufficient to establish trust in
the ACD content. ACD signatures are OPTIONAL in this model. The
<tt>{agent-local-id}</tt> path component MUST be present when multiple agents
are deployed within the same domain.</t>
      </section>
      <section anchor="model-2-operator-hosted-third-party-agents">
        <name>Model 2: Operator-Hosted Third-Party Agents</name>
        <t>In this model, the hosting infrastructure is operated independently from the agent operator. For example, example.com may deploy multiple agents on a third-party hosting platform, where the TLS certificate belongs to the hosting provider rather than example.com. The ACD is discovered at https://{agent-domain}/.well-known/agents[/{agent-local-id}]/acap and the ACAP endpoint URI is conveyed within the ACD content. The {agent-local-id} path component MUST be present when multiple agents are deployed within the same domain. While TLS authenticates the hosting infrastructure, it cannot guarantee the integrity of the ACD content, a compromised host could tamper with the advertised capabilities. Agent operators MUST therefore sign their ACD as described in <xref target="signing"/>.</t>
      </section>
    </section>
    <section anchor="wellknown">
      <name>Well-Known URIs</name>
      <t>ACAP endpoints MUST be accessible at the following well-known URI
(<xref target="RFC8615"/>):</t>
      <artwork><![CDATA[
https://{domain}/.well-known/agents[/{agent-local-id}]/acap
]]></artwork>
      <t>where <tt>{domain}</tt> is the fully qualified domain name of the agent operator
and <tt>{agent-local-id}</tt> is a domain-local identifier for the agent, which
MUST be URL-safe and MUST NOT contain path separator characters.
<tt>{agent-local-id}</tt> MUST be present when multiple agents are deployed within
the same domain.</t>
      <t>A domain-level index of all agents available within a domain MUST be
accessible at:</t>
      <artwork><![CDATA[
https://{domain}/.well-known/agents
]]></artwork>
      <t>The domain index resource SHOULD return a JSON array of ACDs available
within that domain.</t>
      <t>A domain-level capability query endpoint MUST be accessible at:</t>
      <artwork><![CDATA[
https://{domain}/.well-known/agents/_query
]]></artwork>
      <t>ACAP endpoints MUST be served over HTTPS with a valid TLS certificate.
Servers MUST support HTTP/3 <xref target="RFC9114"/>.</t>
      <t>NOTE : Support for HTTP/2 as a fallback MAY need to be considered.</t>
      <section anchor="obtaining-the-locator">
        <name>Obtaining the Locator</name>
        <t>Before retrieving an ACD, a discovering party needs the domain at which
to issue the first request. The locator may be obtained in several ways:</t>
        <ul spacing="normal">
          <li>
            <t>it is configured or otherwise known to the client;</t>
          </li>
          <li>
            <t>it is learned from the network as the access network domain name
(see <xref target="network-discovery"/>);</t>
          </li>
          <li>
            <t>it is provided by from another agent; or</t>
          </li>
          <li>
            <t>it is resolved through DNS-based agent discovery.</t>
          </li>
        </ul>
        <t>Once the domain is known, the client constructs the well-known URI
(<xref target="wellknown"/>) and proceeds with the operations in <xref target="operations"/>.</t>
      </section>
      <section anchor="network-discovery">
        <name>Network-Based Agent Discovery</name>
        <t>ACAP's well-known URI scheme enables network-based agent discovery.
An endpoint that has joined a network can obtain the access network
domain name provisioned by the network operator via DHCP,
DHCPv4 option 213 (OPTION_V4_ACCESS_DOMAIN) or DHCPv6 option 57
(OPTION_V6_ACCESS_DOMAIN) as defined in <xref target="RFC5986"/>, and use it to
construct the ACAP discovery URI:</t>
        <artwork><![CDATA[
https://{access-network-domain}/.well-known/agents
]]></artwork>
        <t>This allows the endpoint to discover agents offered by the network
operator without any out-of-band configuration.</t>
      </section>
    </section>
    <section anchor="acd-format">
      <name>Agent Capability Document (ACD) Format</name>
      <t>ACDs are JSON objects. In Model 2 (<xref target="deployment-models"/>), ACDs MUST be
carried as the payload of a JWT <xref target="RFC7519"/>, signed using JWS Compact
Serialization <xref target="RFC7515"/> as described in <xref target="signing"/>. In Model 1, ACDs
MAY be signed.</t>
      <t>The JWT payload for a signed ACD contains the following fields.
The JWT registered claims <xref target="RFC7519"/> MUST be present:</t>
      <dl>
        <dt><tt>iss</tt>:</dt>
        <dd>
          <t>The agent operator's domain URI (e.g., <tt>"https://example.com"</tt>).</t>
        </dd>
        <dt><tt>iat</tt>:</dt>
        <dd>
          <t>The time at which the ACD was signed, as a NumericDate value
(seconds since the Unix epoch) per <xref target="RFC7519"/>.</t>
        </dd>
        <dt><tt>exp</tt>:</dt>
        <dd>
          <t>The expiration time of the ACD, as a NumericDate value per <xref target="RFC7519"/>.
Recipients MUST NOT use an ACD whose <tt>exp</tt> time has passed.</t>
        </dd>
      </dl>
      <t>The JWT registered claims <tt>iss</tt>, <tt>iat</tt>, and <tt>exp</tt> are defined by
<xref target="RFC7519"/> and are included here to clarify their specific semantics
and requirements within the ACAP context. Implementations MUST follow
<xref target="RFC7519"/> for encoding and processing these claims.</t>
      <t>The following ACD-specific fields MUST also be present in the JWT payload:</t>
      <artwork><![CDATA[
{
  "iss"          : string,       ; Agent operator domain URI (JWT)
  "iat"          : integer,      ; Signing time NumericDate (JWT)
  "exp"          : integer,      ; Expiration time NumericDate (JWT)
  "id"           : string,       ; Agent Identifier URN
  "version"      : string,       ; Framework version (e.g., "1.0")
  "domain"       : string,       ; Agent operator domain name
  "name"         : string,       ; Human-readable agent name (UTF-8)
  "description"  : string,       ; Short description (UTF-8)
  "endpoint"     : string,       ; Primary QUIC/WebTransport endpoint URI
  "alt_endpoints": [string],     ; Alternate endpoints
  "capabilities" : {             ; Capability taxonomy map
    string => CapabilityDescriptor
  },
  "auth"         : AuthConfig,       ; Authentication and authorization config
  "transport"    : TransportConfig,  ; Transport configuration
  "context"      : ContextConfig,    ; Context and session parameters
  "jwks_uri"     : string,           ; URI of the agent operator's JWK Set
}
]]></artwork>
      <t>Field definitions:</t>
      <dl>
        <dt><tt>id</tt>:</dt>
        <dd>
          <t>A URN uniquely identifying the agent.</t>
        </dd>
        <dt><tt>version</tt>:</dt>
        <dd>
          <t>The IETF protocol suite version to which this ACD conforms (e.g., <tt>"1.0"</tt>).</t>
        </dd>
        <dt><tt>domain</tt>:</dt>
        <dd>
          <t>The fully qualified domain name of the agent operator (e.g., <tt>"example.com"</tt>).
MUST match the domain portion of the well-known URI from which this ACD was served.</t>
        </dd>
        <dt><tt>name</tt>:</dt>
        <dd>
          <t>A human-readable display name for the agent. MUST be encoded as UTF-8.</t>
        </dd>
        <dt><tt>description</tt>:</dt>
        <dd>
          <t>A short, human-readable description of the agent's capabilities and
intended use. MUST be encoded as UTF-8.</t>
        </dd>
        <dt><tt>endpoint</tt>:</dt>
        <dd>
          <t>The URI of the agent's primary QUIC or WebTransport endpoint to which
connections SHOULD be established after discovery.</t>
        </dd>
        <dt><tt>alt_endpoints</tt>:</dt>
        <dd>
          <t>An array of alternative endpoint URIs for load balancing or failover.
MAY be empty.</t>
        </dd>
        <dt><tt>capabilities</tt>:</dt>
        <dd>
          <t>A map from capability name strings to CapabilityDescriptor objects
(see <xref target="capability-descriptor"/>).</t>
        </dd>
        <dt><tt>auth</tt>:</dt>
        <dd>
          <t>An AuthConfig object describing supported authentication and authorization
schemes (see <xref target="auth-config"/>).</t>
        </dd>
        <dt><tt>transport</tt>:</dt>
        <dd>
          <t>A TransportConfig object describing the agent endpoint's transport
configuration (see <xref target="transport-config"/>).</t>
        </dd>
        <dt><tt>context</tt>:</dt>
        <dd>
          <t>A ContextConfig object describing session and context parameters.
The structure of ContextConfig is left to the IETF agentic protocol
suite profile specification.</t>
        </dd>
        <dt><tt>jwks_uri</tt>:</dt>
        <dd>
          <t>A URI at which the agent operator's JSON Web Key Set <xref target="RFC7517"/> MAY
be retrieved. Used by recipients to obtain the public key for JWS
signature verification. MUST be present in Model 2 (<xref target="deployment-models"/>).</t>
        </dd>
      </dl>
      <section anchor="capability-descriptor">
        <name>Capability Descriptor</name>
        <artwork><![CDATA[
CapabilityDescriptor = {
  "id"         : string,   ; Capability URN
  "version"    : string,   ; Capability version
  "input_type" : [string], ; Accepted input modalities/formats
  "output_type": [string], ; Produced output modalities/formats
  "latency_ms" : integer,  ; Expected p50 latency in milliseconds
  ? "rate_limit": integer, ; Requests per second limit (optional)
  ? "cost_unit" : string,  ; Pricing unit, informational (optional)
}
]]></artwork>
        <dl>
          <dt><tt>id</tt>:</dt>
          <dd>
            <t>A URN identifying the capability.</t>
          </dd>
          <dt><tt>version</tt>:</dt>
          <dd>
            <t>The version of this capability's interface.</t>
          </dd>
          <dt><tt>input_type</tt>:</dt>
          <dd>
            <t>An array of MIME types or modality identifiers accepted as input.</t>
          </dd>
          <dt><tt>output_type</tt>:</dt>
          <dd>
            <t>An array of MIME types or modality identifiers produced as output.</t>
          </dd>
          <dt><tt>latency_ms</tt>:</dt>
          <dd>
            <t>The expected p50 (median) end-to-end latency for this capability in
milliseconds, under normal operating conditions.</t>
          </dd>
          <dt><tt>rate_limit</tt>:</dt>
          <dd>
            <t>If present, the maximum number of requests per second this agent will
accept for this capability.</t>
          </dd>
          <dt><tt>cost_unit</tt>:</dt>
          <dd>
            <t>If present, a human-readable string describing the pricing unit for
invoking this capability (e.g., <tt>"USD per 1K tokens"</tt>). This field is
informational only and does not constitute a binding pricing commitment.</t>
          </dd>
        </dl>
      </section>
      <section anchor="auth-config">
        <name>Authentication Configuration</name>
        <t>The <tt>auth</tt> field contains an OAuth 2.0 Protected Resource Metadata object
as defined in <xref target="RFC9728"/>. Clients MUST use the <tt>authorization_servers</tt>
field to discover the Authorization Server and obtain access tokens. Only
fields not defined in <xref target="RFC9728"/> are described below.</t>
        <artwork><![CDATA[
AuthConfig = {
  "schemes"               : [string], ; e.g., ["spiffe", "oauth2", "mtls"]
  "authorization_servers" : [string], ; OAuth 2.0 AS URIs (per RFC9728)
  "scopes_supported"      : [string], ; OAuth 2.0 scopes (per RFC9728)
}
]]></artwork>
        <dl>
          <dt><tt>schemes</tt>:</dt>
          <dd>
            <t>An array of supported authentication scheme identifiers. Defined values
include <tt>"spiffe"</tt>, <tt>"oauth2"</tt>, and <tt>"mtls"</tt>. Additional values MAY be
defined by IETF agentic protocol suite profile specifications.</t>
          </dd>
        </dl>
      </section>
      <section anchor="transport-config">
        <name>Transport Configuration</name>
        <t>The <tt>transport</tt> field carries transport configuration for the agent
endpoint. The specific parameters conveyed are to be defined in a future
revision of this document.</t>
        <artwork><![CDATA[
TransportConfig = {
  "modalities"   : [string],     ; Supported modalities
  "protocols"    : [string],     ; Supported transport protocols
  "pref_add"     : [string],     ; reachable IP addresses
}
]]></artwork>
        <dl>
          <dt><tt>modalities</tt>:</dt>
          <dd>
            <t>An array of modality identifiers (e.g., <tt>"text"</tt>, <tt>"image"</tt>, <tt>"audio"</tt>,
<tt>"video"</tt>) indicating what input and output types the agent can process.</t>
          </dd>
          <dt><tt>protocols</tt>:</dt>
          <dd>
            <t>An array of transport protocols supported by the agent
(e.g., <tt>"quic"</tt>, <tt>"moq"</tt>).</t>
          </dd>
          <dt><tt>pref_add</tt>:</dt>
          <dd>
            <t>Preferred reachable IP addresses. The presentation value will be a comma-separated list of one or more IP addresses of the appropriate family in standard textual format <xref target="RFC5952"/>} <xref target="RFC4001"/>.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="operations">
      <name>ACAP Operations</name>
      <t>ACAP defines three operations over HTTP/3. Requests and responses carrying
signed ACDs MUST use <tt>Content-Type: application/jwt</tt>. Requests and responses
carrying unsigned ACDs MUST use <tt>Content-Type: application/json</tt>.</t>
      <section anchor="get-retrieve-an-agent-capability-document">
        <name>GET — Retrieve an Agent Capability Document</name>
        <t>A discovering party retrieves a specific agent's ACD with an HTTP GET:</t>
        <artwork><![CDATA[
GET https://{domain}/.well-known/agents[/{agent-local-id}]/acap  HTTP/3
Accept: application/jwt, application/json

200 OK
Content-Type: application/jwt  (Model 2) or application/json (Model 1)
Cache-Control: max-age=300

<JWT or JSON>
]]></artwork>
        <t>Servers MUST set <tt>Cache-Control: max-age</tt> to a value no greater than
the number of seconds remaining until the ACD's <tt>exp</tt> time.
Servers MUST return <tt>404 Not Found</tt> if no ACD exists for the requested
<tt>agent-local-id</tt>.</t>
      </section>
      <section anchor="put-op">
        <name>PUT — Register or Update an Agent Capability Document</name>
        <t>An agent operator registers or updates an ACD with an HTTP PUT:</t>
        <artwork><![CDATA[
PUT https://{domain}/.well-known/agents[/{agent-local-id}]/acap  HTTP/3
Content-Type: application/jwt  (Model 2) or application/json (Model 1)

<JWT or JSON>

204 No Content
]]></artwork>
        <t>If the ACD is signed, the server MUST verify the JWS signature of the
ACD payload as specified in <xref target="signing"/>. A successful signature verification
constitutes proof of possession of the agent operator's private key and is
sufficient to authenticate the request. Servers MUST return <tt>400 Bad Request</tt>
if verification fails.</t>
        <t>Authorization policy for agent registration is a matter of local policy
and is out of scope for this document.</t>
      </section>
      <section anchor="query-op">
        <name>POST — Query Agents by Capability</name>
        <t>A discovering party searches for agents matching specific criteria using
an HTTP POST to the domain-level query endpoint:</t>
        <artwork><![CDATA[
POST https://{domain}/.well-known/agents/_query  HTTP/3
Content-Type: application/json

{
  "capability"    : "urn:ietf:cap:translate",
  "modalities"    : ["text"],
  "domain_hint"   : "*.example.com",
  "max_latency_ms": 500
}

200 OK
Content-Type: application/json

{
  "results"    : [ <JWT or JSON ACD>, ... ],
  "next_cursor": "string"
}
]]></artwork>
        <section anchor="query-request-fields">
          <name>Query Request Fields</name>
          <dl>
            <dt><tt>capability</tt>:</dt>
            <dd>
              <t>REQUIRED. The capability URN to search for. Agents whose ACD includes a
CapabilityDescriptor with a matching <tt>id</tt> MUST be included in results.</t>
            </dd>
            <dt><tt>modalities</tt>:</dt>
            <dd>
              <t>OPTIONAL. An array of required modalities. If present, only agents
supporting all listed modalities MUST be returned.</t>
            </dd>
            <dt><tt>domain_hint</tt>:</dt>
            <dd>
              <t>OPTIONAL.  A glob pattern or exact domain name restricting results 
to agents within matching domains.</t>
            </dd>
            <dt><tt>max_latency_ms</tt>:</dt>
            <dd>
              <t>OPTIONAL. If present, only agents whose relevant CapabilityDescriptor
<tt>latency_ms</tt> value is less than or equal to this value MUST be returned.</t>
            </dd>
          </dl>
        </section>
        <section anchor="query-response-fields">
          <name>Query Response Fields</name>
          <dl>
            <dt><tt>results</tt>:</dt>
            <dd>
              <t>An array of JWT or JSON ACDs matching the query criteria. MAY be empty
if no matching agents are found.</t>
            </dd>
            <dt><tt>next_cursor</tt>:</dt>
            <dd>
              <t>If present, the response is paginated. The client MUST include this
cursor value as a <tt>cursor</tt> field in a subsequent query request to
retrieve the next page of results.</t>
            </dd>
          </dl>
        </section>
      </section>
    </section>
    <section anchor="signing">
      <name>ACD Signing and Verification</name>
      <t>ACDs are signed using JWS Compact Serialization <xref target="RFC7515"/>. The signed
ACD is represented as:</t>
      <artwork><![CDATA[
Base64url(JWS Protected Header)
  || '.'
  || Base64url(JWT Payload)
  || '.'
  || Base64url(Signature)
]]></artwork>
      <section anchor="jws-protected-header">
        <name>JWS Protected Header</name>
        <t>The JWS Protected Header MUST contain:</t>
        <dl>
          <dt><tt>alg</tt>:</dt>
          <dd>
            <t>The signature algorithm. Algorithm requirements will be
specified in a future version of this document.</t>
          </dd>
          <dt><tt>kid</tt>:</dt>
          <dd>
            <t>The key identifier of the agent operator's signing key, referencing
an entry in the JWK Set at the <tt>jwks_uri</tt> field of the ACD.</t>
          </dd>
        </dl>
      </section>
      <section anchor="signing-procedure">
        <name>Signing Procedure</name>
        <ol spacing="normal" type="1"><li>
            <t>Construct the JWT payload as a JSON object containing the JWT
registered claims (<tt>iss</tt>, <tt>iat</tt>, <tt>exp</tt>) and all ACD-specific
fields as defined in <xref target="acd-format"/>.</t>
          </li>
          <li>
            <t>Serialize the JWT payload to JSON and base64url-encode the result
to form the JWS Payload.</t>
          </li>
          <li>
            <t>Sign using the agent operator's private key to produce the JWT.</t>
          </li>
        </ol>
      </section>
      <section anchor="verification-procedure">
        <name>Verification Procedure</name>
        <t>Recipients MUST perform the following steps before acting on any signed ACD:</t>
        <ol spacing="normal" type="1"><li>
            <t>Parse the JWT to extract the Protected Header,
Payload, and Signature.</t>
          </li>
          <li>
            <t>Decode the Protected Header to obtain <tt>alg</tt> and <tt>kid</tt>. Fetch the
agent operator's JWK Set from <tt>jwks_uri</tt> in the decoded payload
and locate the key matching <tt>kid</tt>.</t>
          </li>
          <li>
            <t>Verify the JWS signature. If verification fails, the ACD MUST
be rejected.</t>
          </li>
          <li>
            <t>Check the <tt>exp</tt> claim. If the current time exceeds <tt>exp</tt>, the
ACD MUST be rejected as expired.</t>
          </li>
        </ol>
      </section>
      <section anchor="freshness">
        <name>Freshness</name>
        <t>Agent operators SHOULD re-sign and re-publish their ACDs well before
the <tt>exp</tt> time to ensure continuous discoverability.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>ACAP endpoints are served over HTTPS, which protects the confidentiality
and integrity of ACDs in transit and authenticates the server hosting the
ACAP endpoint. However, TLS alone is not sufficient to establish trust in
the content of an ACD.</t>
      <t>As discussed in <xref target="deployment-models"/>, in the multi-tenant deployment model
the TLS certificate belongs to the infrastructure provider, not the agent
operator. The ACD signature addresses this gap. By signing the ACD with
a private key under the agent operator's control, separate from the
hosting platform's TLS key, the agent operator binds their identity
directly to the content of the ACD, including the <tt>endpoint</tt> URI.
Without signature verification, a compromised or malicious hosting
platform could redirect connecting agents to a fraudulent endpoint.
A recipient that verifies the signature can confirm that the agent
operator, not just the hosting infrastructure, authorized that specific
ACD.</t>
      <t>Recipients MUST verify ACD signatures before acting on any signed ACD content,
regardless of whether the ACD was retrieved directly from the ACAP
endpoint or obtained through a registry or other intermediary.</t>
      <section anchor="transport-security">
        <name>Transport Security</name>
        <t>All ACAP traffic MUST be carried over HTTPS (TLS 1.3 or later) with
server certificate validation. ACAP servers MUST NOT operate over
unencrypted HTTP.</t>
      </section>
      <section anchor="validity-period-and-freshness">
        <name>Validity Period and Freshness</name>
        <t>Short validity periods reduce the window in which a compromised or
revoked ACD remains in circulation. Operators SHOULD set <tt>exp</tt> to a
value appropriate to their operational context. Very long validity
periods SHOULD be avoided for agents whose capabilities or endpoints
may change.</t>
      </section>
      <section anchor="cross-domain-trust">
        <name>Cross-Domain Trust</name>
        <t>ACAP does not itself define a cross-domain trust hierarchy. Trust in
an ACD is derived from: (a) TLS server certificate validation of the
ACAP endpoint, and (b) JWS signature verification using the agent
operator's public key obtained from <tt>jwks_uri</tt>.</t>
        <t>Operators SHOULD establish explicit trust relationships with foreign
domains before relying on ACDs served by those domains.</t>
      </section>
      <section anchor="key-fetch-security">
        <name>Key Fetch Security</name>
        <t>The security of ACD signature verification depends on the integrity of
the <tt>jwks_uri</tt> endpoint. Recipients MUST perform PKIX validation of the
TLS certificate of the <tt>jwks_uri</tt> host before trusting any key material
retrieved from it. The security considerations of <xref target="RFC7517"/> apply.</t>
      </section>
      <section anchor="privacy-considerations">
        <name>Privacy Considerations</name>
        <t>ACDs are publicly accessible capability advertisements by design.
Operators SHOULD avoid including personally identifiable information
or sensitive operational details in ACDs. Capability descriptors and
latency metadata SHOULD be expressed at a level of granularity that
does not reveal implementation internals.</t>
      </section>
      <section anchor="denial-of-service">
        <name>Denial of Service</name>
        <t>ACAP endpoints are public-facing HTTP/3 services and are subject to
denial-of-service attacks. Implementations SHOULD apply rate limiting
to all ACAP operations, particularly the query endpoint (<xref target="query-op"/>).
The PUT operation (<xref target="put-op"/>) MUST require authentication to prevent
unauthorised registration.</t>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="well-known-uri-registration">
        <name>Well-Known URI Registration</name>
        <t>This document requests IANA to register the following well-known URI
prefix in the "Well-Known URIs" registry established by <xref target="RFC8615"/>:</t>
        <dl>
          <dt>URI suffix:</dt>
          <dd>
            <t><tt>agents</tt></t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification document(s):</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>Permanent</t>
          </dd>
        </dl>
      </section>
      <section anchor="media-type">
        <name>Media Type</name>
        <t>This document uses the <tt>application/jwt</tt> media type for signed ACD
payloads and <tt>application/json</tt> for unsigned ACD payloads.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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>
        <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="RFC9114">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment. This document describes a mapping of HTTP semantics over QUIC. This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </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="RFC7517">
          <front>
            <title>JSON Web Key (JWK)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7517"/>
          <seriesInfo name="DOI" value="10.17487/RFC7517"/>
        </reference>
        <reference anchor="RFC7518">
          <front>
            <title>JSON Web Algorithms (JWA)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification registers cryptographic algorithms and identifiers to be used with the JSON Web Signature (JWS), JSON Web Encryption (JWE), and JSON Web Key (JWK) specifications. It defines several IANA registries for these identifiers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7518"/>
          <seriesInfo name="DOI" value="10.17487/RFC7518"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</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 Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8414">
          <front>
            <title>OAuth 2.0 Authorization Server Metadata</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8414"/>
          <seriesInfo name="DOI" value="10.17487/RFC8414"/>
        </reference>
        <reference anchor="RFC9728">
          <front>
            <title>OAuth 2.0 Protected Resource Metadata</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <author fullname="A. Parecki" initials="A." surname="Parecki"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client or authorization server can use to obtain the information needed to interact with an OAuth 2.0 protected resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9728"/>
          <seriesInfo name="DOI" value="10.17487/RFC9728"/>
        </reference>
        <reference anchor="RFC5986">
          <front>
            <title>Discovering the Local Location Information Server (LIS)</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <author fullname="J. Winterbottom" initials="J." surname="Winterbottom"/>
            <date month="September" year="2010"/>
            <abstract>
              <t>Discovery of the correct Location Information Server (LIS) in the local access network is necessary for Devices that wish to acquire location information from the network. A method is described for the discovery of a LIS in the access network serving a Device. Dynamic Host Configuration Protocol (DHCP) options for IP versions 4 and 6 are defined that specify a domain name. This domain name is then used as input to a URI-enabled NAPTR (U-NAPTR) resolution process. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5986"/>
          <seriesInfo name="DOI" value="10.17487/RFC5986"/>
        </reference>
        <reference anchor="RFC5952">
          <front>
            <title>A Recommendation for IPv6 Address Text Representation</title>
            <author fullname="S. Kawamura" initials="S." surname="Kawamura"/>
            <author fullname="M. Kawashima" initials="M." surname="Kawashima"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>As IPv6 deployment increases, there will be a dramatic increase in the need to use IPv6 addresses in text. While the IPv6 address architecture in Section 2.2 of RFC 4291 describes a flexible model for text representation of an IPv6 address, this flexibility has been causing problems for operators, system engineers, and users. This document defines a canonical textual representation format. It does not define a format for internal storage, such as within an application or database. It is expected that the canonical format will be followed by humans and systems when representing IPv6 addresses as text, but all implementations must accept and be able to handle any legitimate RFC 4291 format. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5952"/>
          <seriesInfo name="DOI" value="10.17487/RFC5952"/>
        </reference>
        <reference anchor="RFC4001">
          <front>
            <title>Textual Conventions for Internet Network Addresses</title>
            <author fullname="M. Daniele" initials="M." surname="Daniele"/>
            <author fullname="B. Haberman" initials="B." surname="Haberman"/>
            <author fullname="S. Routhier" initials="S." surname="Routhier"/>
            <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder"/>
            <date month="March" year="2005"/>
            <abstract>
              <t>This MIB module defines textual conventions to represent commonly used Internet network layer addressing information. The intent is that these textual conventions will be imported and used in MIB modules that would otherwise define their own representations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4001"/>
          <seriesInfo name="DOI" value="10.17487/RFC4001"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7033">
          <front>
            <title>WebFinger</title>
            <author fullname="P. Jones" initials="P." surname="Jones"/>
            <author fullname="G. Salgueiro" initials="G." surname="Salgueiro"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Smarr" initials="J." surname="Smarr"/>
            <date month="September" year="2013"/>
            <abstract>
              <t>This specification defines the WebFinger protocol, which can be used to discover information about people or other entities on the Internet using standard HTTP methods. WebFinger discovers information for a URI that might not be usable as a locator otherwise, such as account or email URIs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7033"/>
          <seriesInfo name="DOI" value="10.17487/RFC7033"/>
        </reference>
        <reference anchor="RFC8555">
          <front>
            <title>Automatic Certificate Management Environment (ACME)</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="J. Hoffman-Andrews" initials="J." surname="Hoffman-Andrews"/>
            <author fullname="D. McCarney" initials="D." surname="McCarney"/>
            <author fullname="J. Kasten" initials="J." surname="Kasten"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>Public Key Infrastructure using X.509 (PKIX) certificates are used for a number of purposes, the most significant of which is the authentication of domain names. Thus, certification authorities (CAs) in the Web PKI are trusted to verify that an applicant for a certificate legitimately represents the domain name(s) in the certificate. As of this writing, this verification is done through a collection of ad hoc mechanisms. This document describes a protocol that a CA and an applicant can use to automate the process of verification and certificate issuance. The protocol also provides facilities for other certificate management functions, such as certificate revocation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8555"/>
          <seriesInfo name="DOI" value="10.17487/RFC8555"/>
        </reference>
        <reference anchor="RFC9901">
          <front>
            <title>Selective Disclosure for JSON Web Tokens</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="K. Yasuda" initials="K." surname="Yasuda"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="November" year="2025"/>
            <abstract>
              <t>This specification defines a mechanism for the selective disclosure
of individual elements of a JSON data structure used as the payload
of a JSON Web Signature (JWS). The primary use case is the selective
disclosure of JSON Web Token (JWT) claims.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9901"/>
          <seriesInfo name="DOI" value="10.17487/RFC9901"/>
        </reference>
        <reference anchor="RFC9460">
          <front>
            <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <author fullname="M. Bishop" initials="M." surname="Bishop"/>
            <author fullname="E. Nygren" initials="E." surname="Nygren"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document specifies the "SVCB" ("Service Binding") and "HTTPS" DNS resource record (RR) types to facilitate the lookup of information needed to make connections to network services, such as for HTTP origins. SVCB records allow a service to be provided from multiple alternative endpoints, each with associated parameters (such as transport protocol configuration), and are extensible to support future uses (such as keys for encrypting the TLS ClientHello). They also enable aliasing of apex domains, which is not possible with CNAME. The HTTPS RR is a variation of SVCB for use with HTTP (see RFC 9110, "HTTP Semantics"). By providing more information to the client before it attempts to establish a connection, these records offer potential benefits to both performance and privacy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9460"/>
          <seriesInfo name="DOI" value="10.17487/RFC9460"/>
        </reference>
        <reference anchor="I-D.farrel-dawn-terminology">
          <front>
            <title>Terminology for the Discovery of Agents, Workloads, and Named Entities (DAWN)</title>
            <author fullname="Adrian Farrel" initials="A." surname="Farrel">
              <organization>Old Dog Consulting</organization>
            </author>
            <author fullname="Kehan Yao" initials="K." surname="Yao">
              <organization>China Mobile</organization>
            </author>
            <author fullname="Roland Schott" initials="R." surname="Schott">
              <organization>Deutsche Telekom</organization>
            </author>
            <author fullname="Nic Williams" initials="N." surname="Williams">
              <organization>Infoblox</organization>
            </author>
            <date day="4" month="June" year="2026"/>
            <abstract>
              <t>   The proliferation of distributed systems, Artificial Intelligence
   (AI) agents, cloud workloads, and network services has created a need
   for interoperable mechanisms to discover entities.  Entities may
   include AI agents, software services, compute workloads, and other
   named resources that need to be found and characterised before
   interaction can begin.

   This document defines terminology for Discovery of Agents, Workloads,
   and Named Entities (DAWN).  The intention is that this common set of
   terms can be used by other documents related to DAWN and so achieve
   consistency of meaning across the space.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-farrel-dawn-terminology-02"/>
        </reference>
        <reference anchor="SPIFFE" target="https://spiffe.io/docs/latest/spiffe-about/overview/">
          <front>
            <title>Secure Production Identity Framework for Everyone (SPIFFE)</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="WebTransport" target="https://www.w3.org/TR/webtransport/">
          <front>
            <title>WebTransport</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SD-CARD" target="https://datatracker.ietf.org/doc/draft-nandakumar-agent-sd-jwt/">
          <front>
            <title>SD Agent: Selective Disclosure for Agent Discovery and Identity Management</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="A2A-v1.0" target="https://a2a-protocol.org/latest/whats-new-v1/">
          <front>
            <title>What's New in A2A Protocol v1.0</title>
            <author>
              <organization/>
            </author>
            <date year="2026" month="March"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 752?>

<section anchor="appendix-a-example-acd-jwt">
      <name>Appendix A — Example ACD (JWT)</name>
      <t>The following is a non-normative example of a signed ACD.</t>
      <t>The JWS Protected Header is:</t>
      <artwork><![CDATA[
{
  "alg": "ES256",
  "kid": "operator-key-1"
}
]]></artwork>
      <t>The JWT Payload is:</t>
      <artwork><![CDATA[
{
  "iss":         "https://example.com",
  "iat":         1744887600,
  "exp":         1744891200,
  "id":          "urn:ietf:agent:example.com:translator-v1",
  "version":     "1.0",
  "domain":      "example.com",
  "name":        "Example Translation Agent",
  "description": "Translates text between supported language pairs",
  "endpoint":    "https://agent.example.com:4433/translator",
  "alt_endpoints": ["https://agent2.example.com:4433/translator"],
  "capabilities": {
    "translate": {
      "id":          "urn:ietf:cap:translate",
      "version":     "1.0",
      "input_type":  ["text/plain"],
      "output_type": ["text/plain"],
      "latency_ms":  350,
      "rate_limit":  100,
      "cost_unit":   "USD per 1M characters"
    }
  },
  "auth": {
    "schemes":               ["oauth2", "mtls"],
    "authorization_servers": ["https://auth.example.com"],
    "scopes_supported":      ["agent:invoke"],
  },
 "transport": {
   "modalities":  ["text"],
   "protocols":   ["quic"],
   "pref_add":    ["192.0.2.10"]
 },
  "jwks_uri": "https://agent.example.com/.well-known/jwks.json"
}
]]></artwork>
      <t>The complete signed ACD is the JWT:</t>
      <artwork><![CDATA[
<Base64url(Header)>.<Base64url(Payload)>.<Base64url(Signature)>
]]></artwork>
    </section>
    <section anchor="appendix-b-relationship-to-existing-protocols">
      <name>Appendix B — Relationship to Existing Protocols</name>
      <t>ACAP is designed to complement, rather than replace, existing discovery
and identity protocols:</t>
      <ul spacing="normal">
        <li>
          <t><strong>WebFinger (RFC 7033)</strong>: WebFinger provides lightweight identity
lookup tied to email-like identifiers. ACAP provides richer, capability-
oriented discovery tied to HTTPS well-known URIs.</t>
        </li>
        <li>
          <t><strong>DNS-SD / mDNS</strong>: Suitable for local network discovery; does not scale
to Internet-wide agent discovery or carry semantic capability metadata.</t>
        </li>
        <li>
          <t><strong>OAuth 2.0 (RFC 6749)</strong>: ACAP references OAuth 2.0 for access token
issuance but does not specify authorisation flows; those are left to
IETF agentic protocol suite profile specifications.</t>
        </li>
        <li>
          <t><strong>A2A Agent Cards</strong>: The Agent2Agent Protocol uses a similar well-known
URI pattern for agent discovery. ACAP differs in its richer ACD schema,
its three-operation model including capability search, and its
HTTP/3 transport mandate.</t>
        </li>
        <li>
          <t><strong>SD-Card (<xref target="SD-CARD"/>)</strong>: SD-Card applies SD-JWT
<xref target="RFC9901"/> to A2A Agent Cards to enable selective disclosure of agent
capabilities in privacy-sensitive contexts. ACAP differs in that ACDs
are publicly accessible capability advertisements served from well-known
URIs; selective disclosure is not applicable to ACAP's design. Access
control to specific capabilities is enforced at invocation time through
the <tt>auth</tt> and <tt>scopes_supported</tt> fields in the ACD, not at discovery time.</t>
        </li>
        <li>
          <t><strong>DAWN (<xref target="I-D.farrel-dawn-terminology"/>)</strong>: The Discovery of Agents,
Workloads, and Named Entities (DAWN) effort treats discovery as
locating an entity to communicate with, and explicitly places
capability exposure and capability exchange out of scope while noting
they are essential to agent selection and operation. ACAP provides that
function: an ACD is a capability card in DAWN's terms, and
ACAP's retrieval, registration, and query operations are how an agent's
capabilities are exposed and exchanged.</t>
        </li>
      </ul>
    </section>
    <section anchor="appendix-c-example-discovery-flow">
      <name>Appendix C — Example Discovery Flow</name>
      <t>This example walks through a complete discovery of the
translation agent from Appendix A, hosted at <tt>example.com</tt>.</t>
      <ol spacing="normal" type="1"><li>
          <t>Obtain the domain. The discovering party knows the domain
<tt>example.com</tt>, for example from configuration (see the methods in
<xref target="wellknown"/>)</t>
        </li>
        <li>
          <t>Find the agent. The party queries the domain for agents offering the
translation capability:</t>
        </li>
      </ol>
      <artwork><![CDATA[
POST https://example.com/.well-known/agents/_query
Content-Type: application/json

{ "capability": "urn:ietf:cap:translate" }

200 OK
Content-Type: application/json

{
  "results": [ "<signed ACD for translator-v1; see Appendix A>" ]
}
]]></artwork>
      <ol spacing="normal" type="1"><li>
          <t>Verify the ACD. The party fetches the JWK Set from the <tt>jwks_uri</tt> in
the ACD, verifies the JWS signature using the key matching <tt>kid</tt>, and
checks that the <tt>exp</tt> time has not passed.</t>
        </li>
        <li>
          <t>Connect. Having confirmed the agent operator signed the ACD, the
party connects to the <tt>endpoint</tt>
(<tt>https://agent.example.com:4433/translator</tt>) and uses the agent's
translation capability.</t>
        </li>
      </ol>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Thanks to Mohamed Boucadair for the review and suggestions.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA61963bbxpLufzxFD/MjUhYJXXxL6CQzsmRPtBNbGkuOZ5+s
LAsiQRERCHADoGRG0V7zEPOE50lOfVXVF4Ck7ORsrayYJIDu6uq6XxqDwSBq
siZPh6Z3cJUWjTlM5slllmfN0hyMb9Kqyep0hgunVdmUozI3WweHB6fbvSi5
vKzSGzxI33vRKGnSq7JaDk3djKNoXI6KZEbjjqtk0gx+T6bpeJCMkvlgdzeq
F5ezrK6zsmiWc7rn+OX5q6hYzC7TahiNyqJOi3pRD01TLdKIpngUJVWaDM1H
/otuy+r6qioXc/0luk6X9Nt4GJmBOTg2CVZS48vIryYJV4NrfJcZZ/WopCtL
/PRf744P8e/79PK8Sop6XlZNFCWLZlpWGDwy9DdZ5Lks7f9gUYvff09mSWHO
kuo6rfiOsrpKiuz3pKEFDs2b8jpL+Pd0lmT50PwePBbX/Nh/FLgpHpWz1VnO
s2oxS/K0vk0q8zYdj5efM8l13ATPfajwXDBLVJTVjJ69SWld5u2rw/29vW/0
49d7zx7bj0/3nujHb/b27K/Pnrhf6eMz//Fr/9EO9vTZY/vxm90n+37cXfvx
sRv3m2f7doQn33z91H10jz3e3d0bRlFWTDrQP9t99MiO9+SJA/kb3C4fHz/l
CY8HR/Ekqao0H4yT22LQpNUsK8q8vFri8tnp8atXL4eMSMsXZ+loUaWg//Fi
BGyb4zFRDmjqVUU7BGo0BJB5CTIqi9RsyTDEIzxOUl2lzdBMm2ZeD3d26nk2
maRxVu4Qj9Q7OfFN3eivg+SyXDQ7IMibLL3doQFCWmwDFl5ZP9Xt7W18+ygm
Utk5f7tzm1429n6MfHY0ODx4e9RZ7ZFhQTA0Z2mejoBjc0Q8kpc1sIB1iqA4
soxjkmLsUfI6KYixwGPrQRonTUJQjIjo4yxtJgwcIWJH5ERBgyXXRLfVgPlz
UI8Hv90yuAf7B4ObvXi3g4Rp0nxZmzfprckK3OMFFW5eD0SynwzmehsDoJtw
S4PVgyK9pYl2+EkCl2bZ391/Oth9FEWDAcmNyxoLIMFwPs1qQ7AvWEDW83SU
TbK0Ns00NX9OmvajxLx9eXY+yLPr1FjQzOUiyxtDFPfD+fnpziMaOCGJlU6y
gmZJSNBWRJG0LWNTpVcZfeXNiNKPo2lSXPFuEZsEmxbAc6Rw1wDhqN6ODSAx
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

-->

</rfc>
