<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 4.0.1) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-artamokhov-dawn-marketplace-discovery-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Marketplace Discovery">A Discovery Document and Signed Catalogue for Capability Marketplaces</title>

    <author initials="A." surname="Artamokhov" fullname="Aleksandr Artamokhov">
      <organization>Independent</organization>
      <address>
        <email>alexar76@rambler.ru</email>
      </address>
    </author>

    <date year="2026" month="October" day="30"/>

    <area>Internet</area>
    <workgroup>Network Working Group</workgroup>
    <keyword>agents</keyword> <keyword>discovery</keyword> <keyword>marketplace</keyword> <keyword>well-known</keyword> <keyword>signed catalogue</keyword>

    <abstract>


<?line 63?>

<t>Autonomous software agents obtain capabilities from services catalogued by independently
operated indexes. For an agent, or another index, to use such a catalogue it must first learn a
small set of public properties of the index: what it is called, which protocol versions it
speaks, where its catalogue is, and which key signs that catalogue. This document specifies a
JSON discovery document served at a well-known URI that carries exactly those properties, and
the requirements a signed catalogue referenced from it has to meet so that a reader can verify
it without trusting the transport or the operator. It specifies nothing about how indexes find
one another, exchange catalogues, or decide whom to trust; those are the subject of a
companion document.</t>



    </abstract>



  </front>

  <middle>


<?line 75?>

<section anchor="introduction"><name>Introduction</name>

<t>Machine-readable catalogues of invocable capabilities have appeared alongside protocols for
machine payment <xref target="X402"/>, agent-to-agent interaction <xref target="A2A"/> and tool registries <xref target="MCPREG"/>.
Each catalogue is operated by one party. Before a client can use one, it needs to know a few
things about the operator's index that are public by nature: a name, the protocol versions in
use, the location of the catalogue, and the public key under which the catalogue is signed.</t>

<t><xref target="I-D.jimenez-dawn-discovery-landscape"/> surveys the mechanisms through which such properties
are published today and finds them fragmented: each system defines its own well-known resource,
its own schema and, where a signature is present, its own unstated canonicalisation. This
document specifies the smallest discovery document the authors found sufficient in operation,
and it specifies the one thing most signed-catalogue systems leave implicit: the exact byte
string under a catalogue signature.</t>

<t>The document is written for discussion in the DAWN working group. Its subject matter — the
public properties of an AI resource that a client needs before interacting with it, and the
integrity of that information — is within that group's charter. Catalogue exchange between
indexes, admission of peers and trust are outside this document; they are specified in
<xref target="FEDERATION"/>, which is offered as input to the gap analysis in
<xref target="I-D.jimenez-dawn-discovery-landscape"/> rather than as chartered work.</t>

<section anchor="scope"><name>Scope and non-goals</name>

<t>This document specifies:</t>

<t><list style="symbols">
  <t>a discovery document served at a well-known URI (<xref target="discovery"/>);</t>
  <t>the requirements a signed catalogue referenced from that document has to meet
(<xref target="catalogue"/>), including the obligation on any signature profile to state its signed
byte string, and one such profile (<xref target="profile"/>);</t>
  <t>how a reader pins and verifies the signing key (<xref target="keys"/>).</t>
</list></t>

<t>This document does not specify: how an index learns that other indexes exist; how catalogues
are exchanged, merged or ranked; how a capability is invoked or paid for; the identity system
naming a provider; or any reputation mechanism. The discovery document is compatible with all
of them and depends on none.</t>

</section>
<section anchor="requirements-language"><name>Requirements Language</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="terminology"><name>Terminology</name>

<dl>
  <dt>Index:</dt>
  <dd>
    <t>A server that catalogues capabilities and answers queries about them. The authors'
implementation calls it a hub.</t>
  </dd>
  <dt>Capability:</dt>
  <dd>
    <t>A named, invocable unit of work offered by a provider and catalogued by an index.</t>
  </dd>
  <dt>Catalogue:</dt>
  <dd>
    <t>The signed document, referenced from the discovery document, that lists an index's
capabilities. The authors' implementation calls it a manifest.</t>
  </dd>
  <dt>Discovery document:</dt>
  <dd>
    <t>The JSON document defined in <xref target="discovery"/>.</t>
  </dd>
  <dt>Reader:</dt>
  <dd>
    <t>Any party retrieving the discovery document or the catalogue: an agent, a client library,
or another index.</t>
  </dd>
  <dt>Signature profile:</dt>
  <dd>
    <t>A named rule set stating which algorithm signs a catalogue, over which byte string, and how
a reader verifies it.</t>
  </dd>
</dl>

</section>
</section>
<section anchor="discovery"><name>Discovery document</name>

<t>An index <bcp14>MUST</bcp14> serve a discovery document at the well-known URI
<spanx style="verb">/.well-known/agent-marketplace</spanx> (<xref target="RFC8615"/>, <xref target="iana-wk"/>) under the "https" scheme. It <bcp14>MUST</bcp14>
answer both GET and HEAD requests for it, and <bcp14>SHOULD</bcp14> honour conditional requests
(<xref target="RFC9110"/>, Section 13) so that readers polling on a timer transfer nothing when nothing
changed.</t>

<t>The document is a JSON object <xref target="RFC8259"/> with media type <spanx style="verb">application/json</spanx>. The following
members are defined:</t>

<texttable>
      <ttcol align='left'>Member</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Requirement</ttcol>
      <c><spanx style="verb">name</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c><spanx style="verb">protocol_versions</spanx></c>
      <c>array of string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c><spanx style="verb">catalogue_url</spanx></c>
      <c>string (URI)</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c><spanx style="verb">signer_public_key</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14> when the catalogue is signed</c>
      <c><spanx style="verb">signature_profile</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14> when the catalogue is signed</c>
      <c><spanx style="verb">capabilities_count</spanx></c>
      <c>number</c>
      <c><bcp14>RECOMMENDED</bcp14></c>
      <c><spanx style="verb">generated_at</spanx></c>
      <c>string (date-time)</c>
      <c><bcp14>RECOMMENDED</bcp14></c>
      <c><spanx style="verb">peers</spanx></c>
      <c>array of string (URI)</c>
      <c><bcp14>OPTIONAL</bcp14></c>
</texttable>

<t><spanx style="verb">name</spanx> is a human-readable label chosen by the operator. It carries no identity: two indexes
<bcp14>MAY</bcp14> have the same name, and a reader <bcp14>MUST NOT</bcp14> key any decision on it.</t>

<t><spanx style="verb">protocol_versions</spanx> lists the versions of the catalogue and query interfaces the index
serves, as opaque strings. A reader that recognises none of them <bcp14>MUST</bcp14> treat the index as
unusable and <bcp14>MUST NOT</bcp14> guess.</t>

<t><spanx style="verb">catalogue_url</spanx> is an absolute URI <xref target="RFC3986"/> under the "https" scheme from which the
catalogue (<xref target="catalogue"/>) is retrieved. It <bcp14>MAY</bcp14> be on a different host from the discovery
document.</t>

<t><spanx style="verb">signer_public_key</spanx> is the public key under which the catalogue is signed, encoded as the
signature profile requires. <spanx style="verb">signature_profile</spanx> names that profile (<xref target="profile"/>). A reader
<bcp14>MUST</bcp14> treat the pair as a claim to be pinned, not as proof of anything (<xref target="keys"/>).</t>

<t><spanx style="verb">capabilities_count</spanx> is the number of entries in the catalogue at the time the discovery
document was generated, and <spanx style="verb">generated_at</spanx> is that time in <xref target="RFC3339"/> format. Both exist so
that a reader can decide whether retrieving the catalogue is worthwhile; neither is
authoritative, and a reader <bcp14>MUST NOT</bcp14> treat a mismatch with the catalogue as an error on its
own.</t>

<t><spanx style="verb">peers</spanx>, when present, lists the discovery-document URIs of other indexes the operator has
chosen to publish. This document assigns the member no semantics beyond "the operator chose
to publish these"; <xref target="FEDERATION"/> constrains what an index that exchanges catalogues <bcp14>MAY</bcp14> put
here.</t>

<t>An index <bcp14>MUST</bcp14> ignore members it does not recognise, and <bcp14>MUST NOT</bcp14> fail to parse a document
because it carries an unknown member. Extension by addition is the intended evolution path.
A member defined by this document <bcp14>MUST NOT</bcp14> change its type or meaning in a later version;
a changed meaning is a new member.</t>

<section anchor="example"><name>Example</name>

<figure><artwork><![CDATA[
{
  "name": "Example Capability Hub",
  "protocol_versions": ["v1", "v2"],
  "catalogue_url": "https://hub.example/catalogue",
  "signer_public_key": "11qYAYKxCrfVS/7TyWQHOg7hcvPapiMlrwIaaPcHURo=",
  "signature_profile": "ed25519-pipe-2",
  "capabilities_count": 47,
  "generated_at": "2026-10-30T09:00:00Z",
  "peers": [
    "https://other.example/.well-known/agent-marketplace"
  ]
}
]]></artwork></figure>

</section>
<section anchor="relationship-to-the-api-catalog-well-known-resource"><name>Relationship to the api-catalog well-known resource</name>

<t><xref target="RFC9727"/> defines <spanx style="verb">/.well-known/api-catalog</spanx> for a host to list its APIs. The two resources
answer different questions. An api-catalog lists what a host offers; the document specified
here identifies a party that catalogues what <em>other</em> hosts offer, under a key, with a version
list a reader negotiates against. An index <bcp14>MAY</bcp14> additionally publish an api-catalog, and a
future revision of this document may define a link relation between the two.</t>

</section>
</section>
<section anchor="catalogue"><name>The signed catalogue</name>

<t>The resource at <spanx style="verb">catalogue_url</spanx> is a JSON object listing the index's capabilities. Its full
schema belongs to the protocol version in use and is out of scope here; this section
specifies only what any version has to satisfy for the discovery document to be useful.</t>

<section anchor="minimum-content"><name>Minimum content</name>

<t>The catalogue <bcp14>MUST</bcp14> contain:</t>

<dl>
  <dt><spanx style="verb">protocol_version</spanx>:</dt>
  <dd>
    <t>string, one of the values the discovery document lists in <spanx style="verb">protocol_versions</spanx>;</t>
  </dd>
  <dt><spanx style="verb">generated_at</spanx>:</dt>
  <dd>
    <t>the generation time in <xref target="RFC3339"/> format;</t>
  </dd>
  <dt><spanx style="verb">capabilities</spanx>:</dt>
  <dd>
    <t>an array of objects, each with at least a <spanx style="verb">name</spanx> (string), a <spanx style="verb">description</spanx> (string) and
an <spanx style="verb">input_schema</spanx> (object). Other members, such as a price or a measured success rate, are
defined by the protocol version in use.</t>
  </dd>
  <dt><spanx style="verb">signature</spanx>:</dt>
  <dd>
    <t>an object as defined by the signature profile (<xref target="signature-object"/>), when the discovery
document names a profile.</t>
  </dd>
</dl>

</section>
<section anchor="profile-requirements"><name>Requirements on any signature profile</name>

<t>A signature profile <bcp14>MUST</bcp14> state, in text that an implementer can follow without reading any
implementation:</t>

<t><list style="numbers" type="1">
  <t>the signature algorithm and the encoding of public keys and signature values;</t>
  <t>the exact byte string that is signed, derived from the catalogue by a rule that two
independent implementations will apply identically;</t>
  <t>for every member that is digested rather than copied into that byte string, the
serialisation under the digest, including the handling of absent members, member order,
whitespace and non-ASCII characters;</t>
  <t>the verification rule, including which malformed keys or signature values a verifier
<bcp14>MUST</bcp14> reject before evaluating the signature.</t>
</list></t>

<t>Item 3 is where signed-document systems fail in practice. Two implementations that disagree
on whether a missing member hashes as an empty object or is omitted, or on whether a
non-ASCII character is emitted raw or escaped, produce documents that verify against
themselves and fail against each other, and the failure is silent until the two meet in
production. A profile that leaves any of these to the implementation has not specified a
signature; it has specified a hazard.</t>

</section>
<section anchor="signature-object"><name>The signature object</name>

<t>Whatever the profile, the <spanx style="verb">signature</spanx> member of a catalogue is a JSON object, never a bare
string:</t>

<figure><artwork><![CDATA[
{
  "algorithm": "<profile-defined>",
  "public_key": "<encoded public key, OPTIONAL>",
  "value": "<encoded signature>"
}
]]></artwork></figure>

<t><spanx style="verb">public_key</spanx> <bcp14>MAY</bcp14> be omitted where the reader already holds a pinned key for the index
(<xref target="keys"/>). A reader <bcp14>MUST NOT</bcp14> fail on additional members: a profile that adds, for example,
a post-quantum signature next to the primary one does so by adding members.</t>

<t>A reader that encounters a bare string where the object is expected <bcp14>MUST</bcp14> reject the
catalogue as unsigned. The authors added this rule after three separate implementations
crashed on exactly that input.</t>

</section>
</section>
<section anchor="keys"><name>Key pinning and verification</name>

<t>A reader <bcp14>MUST</bcp14> verify a catalogue against the key it has pinned for the index, never against
a key carried inside the catalogue or in the discovery document retrieved in the same
operation. A document signed by an attacker's key verifies perfectly against that same key.</t>

<t>On first contact a reader has nothing to compare against. It <bcp14>SHOULD</bcp14> pin the key the discovery
document advertises (trust on first use), record when it did so, and thereafter:</t>

<t><list style="symbols">
  <t><bcp14>MUST NOT</bcp14> accept a different key automatically;</t>
  <t><bcp14>SHOULD</bcp14> record a rejected key together with the time and the document that carried it, so
an operator can distinguish a rotation from a takeover;</t>
  <t><bcp14>MAY</bcp14> accept a new key through an out-of-band operator decision.</t>
</list></t>

<t>A key rotation is therefore an operator decision on the reading side, by design. The cost is
that an index which rotates its key loses every reader until each reader's operator acts; the
alternative is that a party able to alter the discovery document in transit, or to compromise
the host serving it, silently replaces the key and every subsequent catalogue.</t>

<t>Pinning establishes continuity, not identity. A pinned key proves that the party publishing
today holds the same key as the party a reader first met. It proves nothing about who that
party is, and an interface <bcp14>MUST NOT</bcp14> present a verified signature as evidence of the
operator's identity or good faith.</t>

</section>
<section anchor="profile"><name>The ed25519-pipe-2 signature profile</name>

<t>This section defines the profile the authors deploy, identified by the <spanx style="verb">signature_profile</spanx>
value <spanx style="verb">ed25519-pipe-2</spanx>. It is specified here because the discovery document is useless
without at least one profile a reader can implement, and because every rule in it exists
because its absence caused a concrete failure.</t>

<section anchor="algorithm-and-encodings"><name>Algorithm and encodings</name>

<t>The signature is Ed25519 <xref target="RFC8032"/> over the UTF-8 encoding of the canonical string defined
in <xref target="canonical"/>. Public keys and signature values are base64-encoded with the standard
alphabet and padding (<xref target="RFC4648"/>, Section 4). The <spanx style="verb">algorithm</spanx> member of the signature object
is the string <spanx style="verb">ed25519</spanx>.</t>

</section>
<section anchor="canonical"><name>Canonical string</name>

<t>The canonical string is the concatenation of the following five <spanx style="verb">name:value</spanx> pairs, in this
order, joined by the ASCII vertical bar (U+007C), with no whitespace anywhere:</t>

<figure><artwork><![CDATA[
capabilities_count:<n>|generated_at:<t>|protocol_version:<v>|
tools_hash:<h1>|by_hub_hash:<h2>
]]></artwork></figure>

<t>(shown on two lines for width; the string contains no line break)</t>

<t>where:</t>

<t><list style="symbols">
  <t><spanx style="verb">&lt;n&gt;</spanx> is the decimal value of <spanx style="verb">capabilities_count</spanx>, or <spanx style="verb">0</spanx> when the member is absent;</t>
  <t><spanx style="verb">&lt;t&gt;</spanx> is the string value of <spanx style="verb">generated_at</spanx>, or the empty string when absent;</t>
  <t><spanx style="verb">&lt;v&gt;</spanx> is the string value of <spanx style="verb">protocol_version</spanx>, or <spanx style="verb">v1</spanx> when absent;</t>
  <t><spanx style="verb">&lt;h1&gt;</spanx> is the digest (<xref target="digest"/>) of the <spanx style="verb">capabilities</spanx> array (named <spanx style="verb">tools</spanx> in the
authors' current wire format, which is why the pair is called <spanx style="verb">tools_hash</spanx>);</t>
  <t><spanx style="verb">&lt;h2&gt;</spanx> is the digest of the <spanx style="verb">by_hub</spanx> object, which carries per-peer metadata in the
authors' format. When the member is absent it <bcp14>MUST</bcp14> be digested as the empty object <spanx style="verb">{}</spanx>,
so that an index serving no peer metadata agrees with one that serves an empty map.</t>
</list></t>

<t>Both digests are load-bearing. Without the first, an intermediary can rewrite every price in
the catalogue under a still-valid signature; without the second it can rewrite per-peer
metadata the same way. An implementation of this profile <bcp14>MUST</bcp14> compute both and <bcp14>MUST NOT</bcp14> sign
a canonical string with fewer pairs. The authors' published vectors did exactly that for two
months in 2026 and taught the insecure shape to anyone implementing from them.</t>

</section>
<section anchor="digest"><name>Digest rule</name>

<t>The digest of a JSON value is the lowercase hexadecimal SHA-256 <xref target="RFC6234"/> of the UTF-8
encoding of the value's serialisation under the following rules:</t>

<t><list style="numbers" type="1">
  <t>object members are emitted in ascending order of member name, compared by Unicode code
point;</t>
  <t>the member separator is the two characters <spanx style="verb">, </spanx> (comma, space) and the name/value
separator is <spanx style="verb">: </spanx> (colon, space);</t>
  <t>non-ASCII characters are emitted as themselves, not as <spanx style="verb">\uXXXX</spanx> escapes;</t>
  <t>integers are emitted without a fractional part; non-integral numbers are emitted in the
shortest decimal form that round-trips to the same IEEE 754 double;</t>
  <t>there is no leading or trailing whitespace.</t>
</list></t>

<t>Rule 2 is the point at which this profile differs from JSON Canonicalization Scheme
<xref target="RFC8785"/>, which emits no whitespace. The authors' deployment and every published vector
use the separators above; moving this profile to <xref target="RFC8785"/> would change every signature and
is a decision for a working group, not for a -00. A later profile name, not a revision of
this one, is the right vehicle for that change.</t>

</section>
<section anchor="verify"><name>Verification rule</name>

<t><xref target="RFC8032"/> permits more than one verification rule, and widely used libraries pick the
permissive one. Under that rule the public key encoding the identity point, together with a
signature whose first 32 octets encode the base point and whose scalar is 1, verifies for
every message, and anybody can produce it since no private key exists for that public key.</t>

<t>A verifier implementing this profile <bcp14>MUST</bcp14> therefore reject a signature before evaluating the
group equation when either of the following holds:</t>

<t><list style="numbers" type="1">
  <t>the public key, or the point R in the first 32 octets of the signature, encodes a point of
order dividing 8 (after clearing the top bit of the final octet: the encodings
<spanx style="verb">00..00</spanx>, <spanx style="verb">01 00..00</spanx>, <spanx style="verb">26e8958f..fc05</spanx>, <spanx style="verb">c7176a70..037a</spanx>, <spanx style="verb">ecff..ff7f</spanx>, and the
non-canonical <spanx style="verb">edff..ff7f</spanx> and <spanx style="verb">eeff..ff7f</spanx>);</t>
  <t>the scalar S in the last 32 octets, read little-endian, is not strictly less than the
group order L = 2^252 + 27742317777372353535851937790883648493.</t>
</list></t>

<t>The rule costs honest signers nothing: a key and nonce derived per <xref target="RFC8032"/> are of small
order with negligible probability. It matters wherever the key was chosen by someone other
than the verifier, which in a federation is always.</t>

</section>
<section anchor="test-vectors"><name>Test vectors</name>

<t>Signed example catalogues, together with negative vectors that a conforming verifier <bcp14>MUST</bcp14>
reject (tampered members, wrong signer, version downgrade, small-order key) and a runner that
exercises them offline, are published at <xref target="VECTORS"/>. A -01 of this document will carry a
minimal vector set inline so that the document is self-contained.</t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<section anchor="transport-is-not-enough"><name>Transport is not enough</name>

<t>The discovery document is served over HTTPS and could, in principle, be trusted on that basis
alone. It is not, for two reasons. First, the catalogue may be served from a different host
(<xref target="discovery"/>), by a content distribution network, or from a cache, and the chain of custody
is not the reader's to audit. Second, a reader that stores a catalogue and serves queries
from the stored copy, which <xref target="FEDERATION"/> requires, needs to be able to re-verify it later
without the connection that delivered it. A signature over a specified byte string gives a
reader both.</t>

</section>
<section anchor="what-a-verified-signature-proves"><name>What a verified signature proves</name>

<t>A verified signature proves that the catalogue was produced by the holder of the pinned key
and was not altered since. It proves nothing about whether the listed capabilities exist,
perform as described, or cost what the catalogue says. An index makes no such claim by
publishing a signed catalogue, and a reader's interface <bcp14>MUST NOT</bcp14> imply that it does.</t>

</section>
<section anchor="retrieval-of-operator-supplied-uris"><name>Retrieval of operator-supplied URIs</name>

<t><spanx style="verb">catalogue_url</spanx> and every entry of <spanx style="verb">peers</spanx> are URIs supplied by another party. A reader <bcp14>MUST</bcp14>,
before retrieving any of them, apply the server-side request forgery safeguards specified in
<xref target="FEDERATION"/>: refuse private, loopback, link-local, multicast and unspecified address
ranges including IPv4-mapped forms, re-check the resolved address at connection time, refuse
automatic redirects, and bound response size and time.</t>

</section>
<section anchor="key-rotation"><name>Key rotation</name>

<t><xref target="keys"/> makes rotation an operator decision on every reader, which is a denial-of-service
exposure for the index that rotates. An index <bcp14>SHOULD</bcp14> therefore plan rotation as an announced
event and <bcp14>SHOULD</bcp14> serve the old and new keys side by side for a period, using the extension
path in <xref target="signature-object"/>, so that readers can pin the successor before the predecessor
stops signing. The mechanism for that announcement is a candidate for a future revision.</t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="iana-wk"><name>Well-Known URI registration</name>

<t>IANA is requested to register the following in the "Well-Known URIs" registry established by
<xref target="RFC8615"/>:</t>

<dl>
  <dt>URI suffix:</dt>
  <dd>
    <t>agent-marketplace</t>
  </dd>
  <dt>Change controller:</dt>
  <dd>
    <t>IETF</t>
  </dd>
  <dt>Specification document:</dt>
  <dd>
    <t>This document, <xref target="discovery"/></t>
  </dd>
  <dt>Status:</dt>
  <dd>
    <t>permanent</t>
  </dd>
  <dt>Related information:</dt>
  <dd>
    <t>The resource is a JSON object identifying a capability index: its name, protocol versions,
catalogue location and catalogue signing key.</t>
  </dd>
</dl>

</section>
<section anchor="signature-profile-names"><name>Signature profile names</name>

<t>This document defines one profile name, <spanx style="verb">ed25519-pipe-2</spanx> (<xref target="profile"/>). Should a second
profile be defined, a registry with a Specification Required policy would be the appropriate
home; one is not requested for a single value.</t>

</section>
</section>
<section anchor="implementation-status"><name>Implementation Status</name>

<t>This section records the state of implementation at the time of writing, per <xref target="RFC7942"/>,
and is to be removed before publication as an RFC.</t>

<t>The authors operate a reference implementation of the discovery document and the
<spanx style="verb">ed25519-pipe-2</spanx> profile, distributed under Apache-2.0, deployed on six public indexes they
operate or are affiliated with. The discovery document is currently served at
<spanx style="verb">/.well-known/ai-market.json</spanx> with the member names of the authors' pre-standard wire format
(<spanx style="verb">manifest_url</spanx> for <spanx style="verb">catalogue_url</spanx>, <spanx style="verb">tools</spanx> for <spanx style="verb">capabilities</spanx>); an implementation
submitting this document plans to serve both names during a transition.</t>

<t>Three further implementations of the profile exist, written from the specification text and
the vectors without reading the reference source: a Go directory node, a Rust verifier for
catalogues and announcements, and a JavaScript verifier for receipts. All three are by the
specification's editor, so they demonstrate that the text is implementable and found four
places where it was not (each now fixed), but they do not demonstrate interoperability between
parties with no common operator.</t>

<t>Two indexes admitted to the authors' federation are operated by parties unrelated to the
authors. Neither runs the reference implementation; one publishes no catalogue. <strong>No
independent implementation of this document exists.</strong> The authors consider that the material
open question for this work and would rather state it than have a reviewer find it.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC3339">
  <front>
    <title>Date and Time on the Internet: Timestamps</title>
    <author fullname="G. Klyne" initials="G." surname="Klyne"/>
    <author fullname="C. Newman" initials="C." surname="Newman"/>
    <date month="July" year="2002"/>
    <abstract>
      <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3339"/>
  <seriesInfo name="DOI" value="10.17487/RFC3339"/>
</reference>
<reference anchor="RFC3986">
  <front>
    <title>Uniform Resource Identifier (URI): Generic Syntax</title>
    <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
    <author fullname="R. Fielding" initials="R." surname="Fielding"/>
    <author fullname="L. Masinter" initials="L." surname="Masinter"/>
    <date month="January" year="2005"/>
    <abstract>
      <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="66"/>
  <seriesInfo name="RFC" value="3986"/>
  <seriesInfo name="DOI" value="10.17487/RFC3986"/>
</reference>
<reference anchor="RFC4648">
  <front>
    <title>The Base16, Base32, and Base64 Data Encodings</title>
    <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
    <date month="October" year="2006"/>
    <abstract>
      <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4648"/>
  <seriesInfo name="DOI" value="10.17487/RFC4648"/>
</reference>
<reference anchor="RFC6234">
  <front>
    <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
    <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
    <author fullname="T. Hansen" initials="T." surname="Hansen"/>
    <date month="May" year="2011"/>
    <abstract>
      <t>Federal Information Processing Standard, FIPS</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6234"/>
  <seriesInfo name="DOI" value="10.17487/RFC6234"/>
</reference>
<reference anchor="RFC8032">
  <front>
    <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
    <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
    <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
    <date month="January" year="2017"/>
    <abstract>
      <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA). The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves. An example implementation and test vectors are provided.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8032"/>
  <seriesInfo name="DOI" value="10.17487/RFC8032"/>
</reference>
<reference anchor="RFC8259">
  <front>
    <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
    <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
    <date month="December" year="2017"/>
    <abstract>
      <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
      <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="90"/>
  <seriesInfo name="RFC" value="8259"/>
  <seriesInfo name="DOI" value="10.17487/RFC8259"/>
</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="RFC9110">
  <front>
    <title>HTTP Semantics</title>
    <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
    <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
    <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
    <date month="June" year="2022"/>
    <abstract>
      <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
      <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="97"/>
  <seriesInfo name="RFC" value="9110"/>
  <seriesInfo name="DOI" value="10.17487/RFC9110"/>
</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 title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC7942">
  <front>
    <title>Improving Awareness of Running Code: The Implementation Status Section</title>
    <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
    <author fullname="A. Farrel" initials="A." surname="Farrel"/>
    <date month="July" year="2016"/>
    <abstract>
      <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
      <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="205"/>
  <seriesInfo name="RFC" value="7942"/>
  <seriesInfo name="DOI" value="10.17487/RFC7942"/>
</reference>
<reference anchor="RFC8785">
  <front>
    <title>JSON Canonicalization Scheme (JCS)</title>
    <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
    <author fullname="B. Jordan" initials="B." surname="Jordan"/>
    <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
    <date month="June" year="2020"/>
    <abstract>
      <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
      <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8785"/>
  <seriesInfo name="DOI" value="10.17487/RFC8785"/>
</reference>
<reference anchor="RFC9727">
  <front>
    <title>api-catalog: A Well-Known URI and Link Relation to Help Discovery of APIs</title>
    <author fullname="K. Smith" initials="K." surname="Smith"/>
    <date month="June" year="2025"/>
    <abstract>
      <t>This document defines the "api-catalog" well-known URI and link relation. It is intended to facilitate automated discovery and usage of published Application Programming Interfaces (APIs). A request to the api-catalog resource will return a document providing information about, and links to, the Publisher's APIs.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9727"/>
  <seriesInfo name="DOI" value="10.17487/RFC9727"/>
</reference>

<reference anchor="I-D.jimenez-dawn-discovery-landscape">
   <front>
      <title>A Survey of AI Agent Discovery Mechanisms</title>
      <author fullname="Jaime Jimenez" initials="J." surname="Jimenez">
         <organization>Ericsson</organization>
      </author>
      <author fullname="Jim Feng" initials="J." surname="Feng">
         <organization>Ericsson</organization>
      </author>
      <author fullname="Jari Arkko" initials="J." surname="Arkko">
         <organization>Ericsson</organization>
      </author>
      <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
         <organization>Ericsson</organization>
      </author>
      <author fullname="Rajat Kandoi" initials="R." surname="Kandoi">
         <organization>Ericsson</organization>
      </author>
      <date day="3" month="July" year="2026"/>
      <abstract>
	 <t>   This document surveys mechanisms for AI agent discovery being
   developed at the IETF, at AAIF, at 3GPP, and in open-source projects.
   It compares them by discovery model, scope, dynamism, cross-domain
   reach, and semantic capability.  It identifies gaps, overlaps, and
   conflicts between the approaches to inform future standardization
   work.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-jimenez-dawn-discovery-landscape-00"/>
   
</reference>

<reference anchor="FEDERATION" >
  <front>
    <title>Federation Between Capability Indexes: Crawl, Reciprocal Identification and Admission</title>
    <author initials="A." surname="Artamokhov">
      <organization></organization>
    </author>
    <date year="2026" month="October"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-artamokhov-dawn-index-federation-00"/>
</reference>
<reference anchor="A2A" target="https://a2a-protocol.org/latest/specification/">
  <front>
    <title>Agent2Agent (A2A) Protocol Specification, version 1.0</title>
    <author >
      <organization></organization>
    </author>
    <date year="2026" month="March"/>
  </front>
</reference>
<reference anchor="MCPREG" target="https://registry.modelcontextprotocol.io/">
  <front>
    <title>Model Context Protocol Registry</title>
    <author >
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
</reference>
<reference anchor="X402" target="https://github.com/x402-foundation/x402/blob/main/specs/x402-specification-v2.md">
  <front>
    <title>x402 Payment Protocol Specification, version 2</title>
    <author >
      <organization></organization>
    </author>
    <date year="2025" month="December"/>
  </front>
</reference>
<reference anchor="VECTORS" target="https://github.com/alexar76/aimarket-protocol/tree/main/test-vectors">
  <front>
    <title>AIMarket Protocol v2 test vectors and conformance runner</title>
    <author >
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
</reference>


    </references>

</references>


<?line 508?>

<section numbered="false" anchor="mapping-to-the-authors-current-wire-format"><name>Mapping to the authors' current wire format</name>

<t>For readers of the authors' deployed protocol, the correspondence is:</t>

<texttable>
      <ttcol align='left'>This document</ttcol>
      <ttcol align='left'>Deployed format</ttcol>
      <c><spanx style="verb">/.well-known/agent-marketplace</spanx></c>
      <c><spanx style="verb">/.well-known/ai-market.json</spanx></c>
      <c><spanx style="verb">catalogue_url</spanx></c>
      <c><spanx style="verb">manifest_url</spanx></c>
      <c><spanx style="verb">capabilities</spanx></c>
      <c><spanx style="verb">tools</spanx></c>
      <c><spanx style="verb">signature_profile</spanx></c>
      <c>implied; always <spanx style="verb">ed25519-pipe-2</spanx></c>
      <c><spanx style="verb">peers</spanx> (array of URI)</c>
      <c><spanx style="verb">peers</spanx> (array of object with <spanx style="verb">url</spanx>)</c>
</texttable>

<t>The canonical string, digest rule and verification rule are identical, so a signature valid
under one is valid under the other.</t>

</section>
<section numbered="false" anchor="acknowledgements"><name>Acknowledgements</name>

<t>Every normative rule in <xref target="profile"/> exists because its absence caused a concrete failure in a
deployed system: a missing digest that let one implementation federate nothing, a vector set
that signed too little, a bare-string signature that crashed three verifiers, and a
permissive Ed25519 library that accepted a forgeable key. The authors thank the authors of
<xref target="I-D.jimenez-dawn-discovery-landscape"/> for a survey that made the shape of the gap visible.</t>

</section>


  </back>

<!-- ##markdown-source:
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
UkadW83fSMJcRRkX2sH1GeOc0/8Dv5eNJLxdAAA=

-->

</rfc>

