<?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.38 (Ruby 3.2.11) -->


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

<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3986 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3986.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8259 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8259.xml">
<!ENTITY RFC9110 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9110.xml">
<!ENTITY RFC9176 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9176.xml">
]>


<rfc ipr="noModificationTrust200902" docName="draft-payment-discovery-00" category="info" consensus="true" submissionType="IETF">
  <front>
    <title abbrev="Payment Discovery">Service Discovery for HTTP Payment Authentication</title>

    <author initials="B." surname="Ryan" fullname="Brendan Ryan">
      <organization>Tempo Labs</organization>
      <address>
        <email>brendan@tempo.xyz</email>
      </address>
    </author>
    <author initials="J." surname="Moxey" fullname="Jake Moxey">
      <organization>Tempo Labs</organization>
      <address>
        <email>jake@tempo.xyz</email>
      </address>
    </author>
    <author initials="R." surname="Sproule" fullname="Ryan Sproule">
      <organization>Merit Systems</organization>
      <address>
        <email>ryan@merit.systems</email>
      </address>
    </author>
    <author initials="S." surname="Ragsdale" fullname="Sam Ragsdale">
      <organization>Merit Systems</organization>
      <address>
        <email>sam@merit.systems</email>
      </address>
    </author>

    <date year="2026" month="May" day="18"/>

    
    
    

    <abstract>


<?line 79?>

<t>This document defines a service discovery framework for
the "Payment" HTTP authentication scheme. Services
publish an OpenAPI document annotated with payment
extensions that describe pricing, payment methods, and
intent types. The OpenAPI document serves as the
canonical machine-readable contract, providing both
payment metadata and input schemas so that agents can
discover and invoke endpoints. The runtime 402
challenge remains authoritative for all payment
parameters.</t>



    </abstract>



  </front>

  <middle>


<?line 92?>

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

<t>The "Payment" HTTP authentication scheme
<xref target="I-D.httpauth-payment"/> enables servers to require
payment for resource access using the HTTP 402 status
code. While the 402 challenge provides all information
needed to complete a single paid exchange, clients and
agents benefit from discovering payment-enabled services
before initiating requests.</t>

<t>This specification defines a discovery mechanism based
on OpenAPI <xref target="OPENAPI"/>. Services publish an OpenAPI
document annotated with two extensions:</t>

<t><list style="symbols">
  <t><spanx style="verb">x-service-info</spanx>: Top-level service metadata
including categories and documentation links.</t>
  <t><spanx style="verb">x-payment-info</spanx>: Per-operation payment requirements
including one or more payment offers.</t>
</list></t>

<t>OpenAPI provides both payment metadata and input
schemas, enabling agents to discover and invoke
endpoints without additional documentation.</t>

<t>Discovery is <bcp14>OPTIONAL</bcp14>. Servers <bcp14>MAY</bcp14> implement this
mechanism to improve client experience. Clients <bcp14>MUST
NOT</bcp14> require discovery to function; the 402 challenge in
<xref target="I-D.httpauth-payment"/> is always authoritative.</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>Service</dt>
  <dd>
    <t>An HTTP origin that accepts payment via the "Payment"
authentication scheme.</t>
  </dd>
  <dt>Payable Operation</dt>
  <dd>
    <t>An API operation that requires payment, indicated by
a 402 response and <spanx style="verb">x-payment-info</spanx> extension in the
OpenAPI document.</t>
  </dd>
  <dt>Payment Offer</dt>
  <dd>
    <t>A discovered payment alternative for a payable
operation. Multiple payment offers correspond to
alternative runtime Payment challenges for the same
operation.</t>
  </dd>
</dl>

</section>
<section anchor="openapi-discovery"><name>OpenAPI Discovery</name>

<t>Services that support discovery <bcp14>MUST</bcp14> publish an OpenAPI
3.x <xref target="OPENAPI"/> document that describes their API
surface, including payment-enabled operations.</t>

<section anchor="document-location"><name>Document Location</name>

<t>The OpenAPI document <bcp14>MUST</bcp14> be accessible at:</t>

<figure><artwork><![CDATA[
GET /openapi.json
]]></artwork></figure>

<t>The document <bcp14>MUST</bcp14> be served over HTTPS with
<spanx style="verb">Content-Type: application/json</spanx>.</t>

</section>
<section anchor="required-top-level-fields"><name>Required Top-Level Fields</name>

<t>The OpenAPI document <bcp14>MUST</bcp14> include the following
standard fields:</t>

<t><list style="symbols">
  <t><spanx style="verb">openapi</spanx>: The OpenAPI version (e.g., <spanx style="verb">"3.1.0"</spanx>).</t>
  <t><spanx style="verb">info.title</spanx>: The service name.</t>
  <t><spanx style="verb">info.version</spanx>: The API version.</t>
  <t><spanx style="verb">paths</spanx>: At least one path with operations.</t>
</list></t>

</section>
<section anchor="x-service-info"><name>Service Extension: x-service-info</name>

<t>The OpenAPI document <bcp14>MAY</bcp14> include a top-level
<spanx style="verb">x-service-info</spanx> extension object to provide service
metadata that is not part of the standard OpenAPI
specification.</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">categories</spanx></c>
      <c>array</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Service categories (see <xref target="categories"/>).</c>
      <c><spanx style="verb">docs</spanx></c>
      <c>object</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Documentation and reference links (see <xref target="docs-schema"/>).</c>
</texttable>

<section anchor="categories"><name>Categories</name>

<t>The <spanx style="verb">categories</spanx> field, when present, <bcp14>MUST</bcp14> be an array
of strings. Category values are free-form; services
<bcp14>MAY</bcp14> use any string value. The following values are
<bcp14>RECOMMENDED</bcp14> as a starting vocabulary:</t>

<figure><artwork><![CDATA[
communication, compute, data, developer-tools,
media, search, social, storage, travel
]]></artwork></figure>

<t>Category values <bcp14>SHOULD</bcp14> be lowercase, use hyphens for
multi-word values, and be concise. Registries <bcp14>SHOULD</bcp14>
limit services to no more than 5 categories. Clients
<bcp14>SHOULD</bcp14> ignore category values they do not recognize.</t>

</section>
<section anchor="docs-schema"><name>Documentation Links</name>

<t>The <spanx style="verb">docs</spanx> field, when present, <bcp14>MUST</bcp14> be a JSON object
with the following optional fields:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">apiReference</spanx></c>
      <c>string (URI)</c>
      <c>API reference documentation URL.</c>
      <c><spanx style="verb">homepage</spanx></c>
      <c>string (URI)</c>
      <c>Main documentation or landing page.</c>
      <c><spanx style="verb">llms</spanx></c>
      <c>string (URI)</c>
      <c>LLM-friendly documentation URL (see <xref target="LLMS-TXT"/>).</c>
</texttable>

<t>All URI values <bcp14>MUST</bcp14> conform to <xref target="RFC3986"/>.</t>

</section>
</section>
<section anchor="x-payment-info"><name>Payment Extension: x-payment-info</name>

<t>Each payable operation <bcp14>MUST</bcp14> include the
<spanx style="verb">x-payment-info</spanx> extension object on the operation.
This extension describes one or more payment offers for
the operation.</t>

<t>The extension supports two equivalent forms:</t>

<t><list style="symbols">
  <t>Single-offer shorthand: an object containing the
fields of a single payment offer directly.</t>
  <t>Multi-offer form: an object containing an <spanx style="verb">offers</spanx>
array of one or more payment offer objects.</t>
</list></t>

<t>Servers publishing new discovery documents <bcp14>SHOULD</bcp14> use
the multi-offer form. Clients and registries <bcp14>MUST</bcp14>
accept both forms. When the single-offer shorthand is
used, clients and registries <bcp14>MUST</bcp14> treat it as
equivalent to a multi-offer form containing exactly one
payment offer.</t>

<t>When multiple offers are present, clients <bcp14>SHOULD</bcp14> treat
them as alternative ways to access the same operation.
At runtime, the client selects one offer and fulfills
the corresponding 402 challenge.</t>

<section anchor="payment-offer-object"><name>Payment Offer Object</name>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">intent</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c><spanx style="verb">"charge"</spanx> (per-request) or <spanx style="verb">"session"</spanx> (pay-as-you-go).</c>
      <c><spanx style="verb">method</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Payment method identifier (e.g., <spanx style="verb">"tempo"</spanx>, <spanx style="verb">"stripe"</spanx>).</c>
      <c><spanx style="verb">amount</spanx></c>
      <c>string or null</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Cost in base currency units. <spanx style="verb">null</spanx> indicates dynamic pricing.</c>
      <c><spanx style="verb">currency</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Currency identifier. For blockchain methods: token contract address. For fiat: ISO 4217 code.</c>
      <c><spanx style="verb">description</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Human-readable pricing note.</c>
</texttable>

<t>The <spanx style="verb">amount</spanx> field is <bcp14>REQUIRED</bcp14> but its value <bcp14>MAY</bcp14> be
<spanx style="verb">null</spanx> to support offers where pricing depends on
request parameters (e.g., variable-cost operations).
When non-null, the value <bcp14>MUST</bcp14> be a string of ASCII
digits (<spanx style="verb">0</spanx>-<spanx style="verb">9</spanx>) representing a non-negative integer in
the smallest denomination of the currency (e.g., cents
for USD, wei for ETH). Leading zeros <bcp14>MUST NOT</bcp14> be used
except for the value <spanx style="verb">"0"</spanx>. This format is consistent
with the <spanx style="verb">amount</spanx> field defined in the request object
of <xref target="I-D.httpauth-payment"/>.</t>

</section>
<section anchor="payment-offer-examples"><name>Payment Offer Examples</name>

<t>The following examples illustrate common multi-offer
patterns.</t>

<section anchor="same-intent-different-currency"><name>Same Intent, Different Currency</name>

<t>The same <spanx style="verb">charge</spanx> intent can be offered in multiple
currencies for the same operation:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "x-payment-info": {
    "offers": [
      {
        "intent": "charge",
        "method": "tempo",
        "amount": "500",
        "currency":
          "0x20c00000000000000000000000000000000000"
      },
      {
        "intent": "charge",
        "method": "tempo",
        "amount": "500",
        "currency":
          "0x20c000000000000000000000b9537d11c60e8b50"
      }
    ]
  }
}
]]></sourcecode></figure>

</section>
<section anchor="multiple-methods-under-one-intent"><name>Multiple Methods Under One Intent</name>

<t>The same <spanx style="verb">charge</spanx> intent can be offered through
different payment methods:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "x-payment-info": {
    "offers": [
      {
        "intent": "charge",
        "method": "tempo",
        "amount": "500",
        "currency":
          "0x20c000000000000000000000b9537d11c60e8b50"
      },
      {
        "intent": "charge",
        "method": "stripe",
        "amount": "5",
        "currency": "usd"
      }
    ]
  }
}
]]></sourcecode></figure>

</section>
<section anchor="fixed-and-dynamic-offers"><name>Fixed and Dynamic Offers</name>

<t>An operation can mix fixed-price and dynamic-price
offers in the same intent set. In this example,
Tempo is fixed-price while Stripe is dynamic:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "x-payment-info": {
    "offers": [
      {
        "intent": "charge",
        "method": "tempo",
        "amount": "500",
        "currency":
          "0x20c000000000000000000000b9537d11c60e8b50"
      },
      {
        "intent": "charge",
        "method": "stripe",
        "amount": null,
        "currency": "usd",
        "description":
          "Price varies by processor fees and request size."
      }
    ]
  }
}
]]></sourcecode></figure>

</section>
<section anchor="multiple-methods-and-intents"><name>Multiple Methods and Intents</name>

<t>An operation can advertise multiple methods and
multiple intents at the same time:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "x-payment-info": {
    "offers": [
      {
        "intent": "session",
        "method": "tempo",
        "amount": "500",
        "currency":
          "0x20c00000000000000000000000000000000000"
      },
      {
        "intent": "charge",
        "method": "tempo",
        "amount": "750",
        "currency":
          "0x20c000000000000000000000b9537d11c60e8b50"
      },
      {
        "intent": "charge",
        "method": "stripe",
        "amount": "8",
        "currency": "usd"
      }
    ]
  }
}
]]></sourcecode></figure>

</section>
</section>
</section>
<section anchor="response-declaration"><name>402 Response Declaration</name>

<t>Each payable operation <bcp14>MUST</bcp14> include a <spanx style="verb">402</spanx> response
in its <spanx style="verb">responses</spanx> object:</t>

<figure><sourcecode type="yaml"><![CDATA[
responses:
  "402":
    description: "Payment Required"
]]></sourcecode></figure>

<t>This signals to clients that the operation may return
a 402 challenge requiring payment.</t>

</section>
<section anchor="input-schema"><name>Input Schema</name>

<t>Each operation <bcp14>SHOULD</bcp14> define its input schema using
the standard OpenAPI <spanx style="verb">requestBody</spanx> field:</t>

<figure><sourcecode type="yaml"><![CDATA[
requestBody:
  content:
    application/json:
      schema:
        type: object
        properties:
          prompt:
            type: string
        required:
          - prompt
]]></sourcecode></figure>

<t>Input schemas enable agents to construct valid requests
without additional documentation. Operations that omit
input schemas <bcp14>MAY</bcp14> be marked as "schema-missing" by
discovery clients and registries.</t>

</section>
<section anchor="caching"><name>Caching</name>

<t>Servers <bcp14>SHOULD</bcp14> include <spanx style="verb">Cache-Control</spanx> headers. A
maximum age of 5 minutes is <bcp14>RECOMMENDED</bcp14> for services
whose capabilities change infrequently:</t>

<figure><sourcecode type="http"><![CDATA[
Cache-Control: max-age=300
]]></sourcecode></figure>

<t>Clients <bcp14>SHOULD</bcp14> respect cache headers and refetch when
capabilities may have changed.</t>

</section>
<section anchor="example-openapi-document"><name>Example OpenAPI Document</name>

<figure><sourcecode type="json"><![CDATA[
{
  "openapi": "3.1.0",
  "info": {
    "title": "Example AI API",
    "version": "1.0.0"
  },
  "x-service-info": {
    "categories": ["compute"],
    "docs": {
      "homepage": "https://api.example.com/docs",
      "llms": "https://api.example.com/llms.txt",
      "apiReference":
        "https://api.example.com/reference"
    }
  },
  "paths": {
    "/v1/chat/completions": {
      "post": {
        "summary": "Chat completions",
        "x-payment-info": {
          "offers": [
            {
              "intent": "charge",
              "method": "tempo",
              "amount": "500",
              "currency":
                "0x20c00000000000000000000000000000000000"
            },
            {
              "intent": "charge",
              "method": "tempo",
              "amount": "500",
              "currency":
                "0x20c000000000000000000000b9537d11c60e8b50",
              "description":
                "Alternative Tempo asset for the same route."
            }
          ]
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "model": { "type": "string" },
                  "messages": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "role": {
                          "type": "string"
                        },
                        "content": {
                          "type": "string"
                        }
                      },
                      "required": ["role",
                        "content"]
                    }
                  }
                },
                "required": ["model", "messages"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "402": {
            "description": "Payment Required"
          }
        }
      }
    },
    "/v1/embeddings": {
      "post": {
        "summary": "Text embeddings",
        "x-payment-info": {
          "intent": "charge",
          "method": "tempo",
          "amount": null,
          "currency":
            "0x20c00000000000000000000000000000000000",
          "description": "Price varies by model
            and token count."
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "model": { "type": "string" },
                  "input": { "type": "string" }
                },
                "required": ["model", "input"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "402": {
            "description": "Payment Required"
          }
        }
      }
    }
  }
}
]]></sourcecode></figure>

</section>
</section>
<section anchor="relationship-to-the-402-challenge"><name>Relationship to the 402 Challenge</name>

<t>Discovery metadata is advisory. The 402 challenge
defined in <xref target="I-D.httpauth-payment"/> is always
authoritative.</t>

<t>Specifically:</t>

<t><list style="symbols">
  <t>If discovery indicates payment offer details that
differ from the 402 challenge, including method,
intent, amount, or currency, the 402 challenge takes
precedence.</t>
  <t>Clients <bcp14>MUST NOT</bcp14> cache discovery data as a
substitute for processing 402 challenges.</t>
</list></t>

<t>Discovery exists to help clients and agents find and
evaluate services before making requests, not to
replace the runtime payment negotiation defined by the
core protocol.</t>

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

<section anchor="discovery-spoofing"><name>Discovery Spoofing</name>

<t>Discovery information is not cryptographically
authenticated beyond HTTPS transport security. Clients
<bcp14>MUST NOT</bcp14> rely on discovery metadata for security
decisions. The 402 challenge is authoritative for all
payment parameters.</t>

</section>
<section anchor="information-disclosure"><name>Information Disclosure</name>

<t>OpenAPI documents reveal payment capabilities, endpoint
structure, input schemas, and pricing to
unauthenticated clients. Service operators <bcp14>SHOULD</bcp14>
consider whether this disclosure is acceptable for
their use case.</t>

</section>
<section anchor="cross-origin-requests"><name>Cross-Origin Requests</name>

<t>Browser-based clients may need to access discovery
endpoints cross-origin. Servers that intend to support
browser-based clients <bcp14>SHOULD</bcp14> include appropriate CORS
headers on OpenAPI document responses.</t>

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

<t>This document has no IANA actions.</t>

</section>


  </middle>

  <back>


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

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

&RFC2119;
&RFC3986;
&RFC8174;
&RFC8259;
&RFC9110;
<reference anchor="OPENAPI" target="https://spec.openapis.org/oas/v3.1.0">
  <front>
    <title>OpenAPI Specification v3.1.0</title>
    <author >
      <organization>OpenAPI Initiative</organization>
    </author>
    <date year="2021"/>
  </front>
</reference>
<reference anchor="I-D.httpauth-payment" target="https://datatracker.ietf.org/doc/draft-ryan-httpauth-payment/">
  <front>
    <title>The 'Payment' HTTP Authentication Scheme</title>
    <author initials="B." surname="Ryan" fullname="Brendan Ryan">
      <organization></organization>
    </author>
    <date year="2026" month="January"/>
  </front>
</reference>


    </references>

    <references title='Informative References' anchor="sec-informative-references">

&RFC9176;
<reference anchor="A2A" target="https://github.com/a2aproject/A2A">
  <front>
    <title>Agent2Agent Protocol Specification</title>
    <author >
      <organization>Google</organization>
    </author>
    <date year="2025"/>
  </front>
</reference>
<reference anchor="MCP-REGISTRY" target="https://github.com/modelcontextprotocol/registry">
  <front>
    <title>Model Context Protocol Registry</title>
    <author >
      <organization>Anthropic</organization>
    </author>
    <date year="2025"/>
  </front>
</reference>
<reference anchor="X402" target="https://github.com/coinbase/x402">
  <front>
    <title>x402: HTTP Payment Protocol</title>
    <author >
      <organization>Coinbase</organization>
    </author>
    <date year="2025"/>
  </front>
</reference>
<reference anchor="ERC-8004" target="https://eips.ethereum.org/EIPS/eip-8004">
  <front>
    <title>ERC-8004: Trustless Agents Registry</title>
    <author >
      <organization></organization>
    </author>
    <date year="2025"/>
  </front>
</reference>
<reference anchor="LLMS-TXT" target="https://llmstxt.org/">
  <front>
    <title>llms.txt - A Proposal to Standardise LLM-Friendly Documentation</title>
    <author >
      <organization></organization>
    </author>
    <date year="2024"/>
  </front>
</reference>


    </references>

</references>


<?line 623?>

<section anchor="registry-and-aggregator-guidance"><name>Registry and Aggregator Guidance</name>

<t>This appendix provides informative guidance for
building registries and aggregators on top of the
discovery mechanism defined in this specification.</t>

<section anchor="registries"><name>Registries</name>

<t>A registry is a server that discovers, validates, and
indexes payment-enabled services into a searchable
catalog. Registries <bcp14>MAY</bcp14> discover services by:</t>

<t><list style="symbols">
  <t>Crawling OpenAPI documents from submitted domains.</t>
  <t>Accepting domain submissions from service operators.</t>
  <t>Consuming snapshots from other registries.</t>
</list></t>

<t>If a domain serves a valid OpenAPI document with
<spanx style="verb">x-payment-info</spanx> extensions over HTTPS, that
constitutes sufficient proof of domain ownership.</t>

<t>Registries <bcp14>SHOULD</bcp14> re-crawl services periodically (at
least every 24 hours is <bcp14>RECOMMENDED</bcp14>). If the discovery
document becomes invalid or unreachable, the registry
<bcp14>SHOULD</bcp14> delist the service after 7 or more consecutive
failures.</t>

<t>Registries <bcp14>SHOULD</bcp14> enforce crawl constraints: HTTPS
only, 10-second timeouts, 64 KB size limits, and
rate limiting.</t>

</section>
<section anchor="aggregators"><name>Aggregators</name>

<t>Aggregators consume registry data and layer on their
own views: curating (filtering by quality or vertical),
enriching (adding trust scores, uptime, volume data),
reshaping (exposing agent-native formats such as
llms.txt <xref target="LLMS-TXT"/>), or federating (merging data
from multiple registries).</t>

<t>Aggregators are not required to use the registry API
schema. The only universal contract is the OpenAPI
discovery mechanism defined in <xref target="openapi-discovery"/>.</t>

</section>
</section>
<section anchor="comparison-with-prior-art"><name>Comparison with Prior Art</name>

<section anchor="core-resource-directory-rfc-9176"><name>CoRE Resource Directory (RFC 9176)</name>

<t>The CoRE Resource Directory <xref target="RFC9176"/> defines push
registration with leased lifetimes for constrained IoT
devices. This specification uses crawl-based
registration, which better suits HTTP services.</t>

</section>
<section anchor="agent2agent-protocol-a2a"><name>Agent2Agent Protocol (A2A)</name>

<t>The A2A Protocol <xref target="A2A"/> uses
<spanx style="verb">/.well-known/agent-card.json</spanx> as a self-describing
service endpoint. This specification uses OpenAPI as
the discovery mechanism, providing richer schema
information.</t>

</section>
<section anchor="mcp-registry"><name>MCP Registry</name>

<t>The MCP Registry <xref target="MCP-REGISTRY"/> implements a
three-layer architecture with reverse-DNS namespacing
and SHA-256 package integrity. This specification
uses domain authority rather than OAuth-based
registration.</t>

</section>
<section anchor="x402-protocol"><name>x402 Protocol</name>

<t>The x402 protocol <xref target="X402"/> uses HTTP 402 responses as
the primary payment signal. This specification
separates discovery (pre-request) from the payment
challenge (at-request).</t>

</section>
<section anchor="openapi-first-discovery-x402scan"><name>OpenAPI-First Discovery (x402scan)</name>

<t>The x402scan project uses OpenAPI documents as the
canonical discovery signal, with <spanx style="verb">/.well-known/x402</spanx>
as a fallback. This specification adopts the same
OpenAPI-first approach, using <spanx style="verb">x-payment-info</spanx> as
the payment extension with fields consistent with the
Payment authentication scheme.</t>

</section>
<section anchor="erc-8004-trustless-agents"><name>ERC-8004 (Trustless Agents)</name>

<t>ERC-8004 <xref target="ERC-8004"/> defines on-chain identity
registries and domain verification. This specification
operates entirely off-chain but is compatible with
future on-chain anchoring.</t>

</section>
</section>
<section anchor="json-schema-for-x-payment-info"><name>JSON Schema for x-payment-info</name>

<t>The following JSON Schema defines the structure of
the <spanx style="verb">x-payment-info</spanx> OpenAPI extension. Tooling
authors <bcp14>SHOULD</bcp14> validate payment extensions against
this schema.</t>

<figure><sourcecode type="json"><![CDATA[
{
  "$schema":
    "https://json-schema.org/draft/2020-12/schema",
  "title": "x-payment-info",
  "oneOf": [
    { "$ref": "#/$defs/offer" },
    {
      "type": "object",
      "required": ["offers"],
      "properties": {
        "offers": {
          "type": "array",
          "minItems": 1,
          "items": { "$ref": "#/$defs/offer" }
        }
      },
      "additionalProperties": false
    }
  ],
  "$defs": {
    "offer": {
      "type": "object",
      "required": ["intent", "method", "amount"],
      "properties": {
        "intent": {
          "type": "string",
          "enum": ["charge", "session"]
        },
        "method": {
          "type": "string"
        },
        "amount": {
          "oneOf": [
            { "type": "null" },
            {
              "type": "string",
              "pattern": "^(0|[1-9][0-9]*)$"
            }
          ]
        },
        "currency": {
          "type": "string"
        },
        "description": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  }
}
]]></sourcecode></figure>

</section>
<section anchor="json-schema-for-x-service-info"><name>JSON Schema for x-service-info</name>

<t>The following JSON Schema defines the structure of
the <spanx style="verb">x-service-info</spanx> OpenAPI extension.</t>

<figure><sourcecode type="json"><![CDATA[
{
  "$schema":
    "https://json-schema.org/draft/2020-12/schema",
  "title": "x-service-info",
  "type": "object",
  "properties": {
    "categories": {
      "type": "array",
      "items": { "type": "string" }
    },
    "docs": {
      "type": "object",
      "properties": {
        "apiReference": {
          "type": "string",
          "format": "uri"
        },
        "homepage": {
          "type": "string",
          "format": "uri"
        },
        "llms": {
          "type": "string",
          "format": "uri"
        }
      }
    }
  }
}
]]></sourcecode></figure>

</section>
<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>The authors thank the contributors to the MPP
Registry reference implementation and the x402scan
project, whose operational experience informed this
specification.</t>

</section>


  </back>

<!-- ##markdown-source:
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
LIxt3P6lS225sxWFnotdyDPQrp+A7ceNj2xafP3aBlS6SLCM9Vuys7rcw1Zt
e9iibTaMXtW1fbA2a3rWsQqiN67pCGhWpz52b9O/sx0O0T8DcD1c34h/Jxex
q5B7U9lUxVh0frpju8LBktZ7T/Zrj9r2R+36toLCdnP+dPfUgbZK3ZXaA0lT
Zx1JTXh8BgMYtmz3/0sLTbnClhd+hfIy2H9p7kOnigCvppytLZICMz/X/33o
Eu52c7pvaMO+7/gmMbpccg9UJ0cPWudCn28dD1Zbx/0YXEqZVChOZq02guZo
dKXdAXBLUk46YYtclucJjLWe9nZDKNsMJH1iz4rYUPTx9NZZhv6GvvhKXisc
OChKFamYuu0B13a/PZ28cSbXaoOgsQLYPLxq6qmB5AoCNorhbFly7QzedCYE
1B1kwJSlL1RadLJjm8AD8akUHig838PjMt+XZedMMnndnjHpU49VpYNSFamM
uDfUtQE7MueQstFwih8/wc5nnnSixhA7fke9wGMFpEuqJU4RmiR2JQFusfVb
GRdazyh9bw1ANFM4rmUyKpdFpeelLBYsFUGrnxuxUEtsZOb22aqUuaGDYWNx
aPrNPFNKRR0bneEZK9qc7vObIMhRQhMvG6ScJHjT3JRvA+nMTVGNqtkabjjV
pi5VM4vSdMiU6kZJP4DVqTf0/WRXwCUaANHvjohxv547Cge21nmXYFZm/CiQ
LZVpXz+hOXBkG5YbcDDRzkd4pGnz1IlDlSPbA5WU1EyIbYW2PFNqY8Jz7ta/
dEWk4E2pb0EkQ5pT8hKMdQycu2q1uXj+tMZpIoLJEwDNiAy32KIGx63mgGC6
caWVIhG4SXBjZYKacnh+OQ5c3UVvGCr0HoDk/GT0frQm493xx4VEKeYnZeS6
lnGMbiqja7bBPB1KbBvN5yV2CYAsfVMnsQS7YiHiyAgYv7tmZqk1cCzm9mHi
xbRO0pg13Hc5sYFwwGlzlS5sk0GwaYysc7y/OoLmOtAd/CAYudVoiknaGT7b
nW/Bmz5XFNGAu7HKWN011nxtNA6Zqgka9rvShAMgIFM977ShYk3Rj2E15o4d
yGEpb2lka13TyEHQTyFUqBmxpoFItOQjEm9qJqGLovnBBPfaqvaQA4DbdYav
mVwWZqHdIpr0qFPAPMHmPQfdzo7aiuua3PFYwNaeRtMaIeizE6QiLnkXYF09
A8ZRPxhID7b0zdzC+jYHvoD7B4TW+noB3zBC6jU0xdkyHbMhFjuwDnfoKxKe
/RdioetytYj6fIBOvGo7wmbUcKoinRGjeesg+XVeKsnc7tvWEjs97kv5KXzn
qoflgpyBpRWvfKMi/ZRFVNNPD8wgNACrZTZuUaEWYbM77ZNL3xJNDc+XjwOc
3eqLvWEI8GhiBtyirtFtfvVC/PsbOjMU1ABtZZpaVOgCtmyRojRqjZrSUsOI
5KXZofBzh6lcYodlzgMtAQ6F3STqFtAC78RDojuzBGtCND68FH+tgX7gc4EC
dOAILHreB8sJjoD6MXckpVv4yx540oleGxCuC24ZvNEp4oHLw1twayELekvd
QS7nBx7DZugILA9KVrTAnkk/fd5pC6YoaqbYOCKwTJVz0imcCiW98MefjWo8
H3RphC2T3AVu2wvBIqCjaUsGD/yQA2RnTRN3dZ6g1ZFp09+WcPekn3h93PDd
36+PMFH7Eih6Bg4eYuCch1Ig0YO9jsDpkOfTl8d4OsdjykfUi4u97TuXbw8F
/izEc2412fYc9UrjczjoZId9i9osArtfjiJoYdQ/QDZNZgo5yZ1JXozhzom+
gkiGtNd2eXWHiYGUhqWf/WRnDeyaB/kBLcX2KmA3Hp/REJ6zCE7A1fovWuyM
9kd2o/CpuX5/D19hZ7hyMNkd3Ko0Da9zEPFdFrJIljGNTk3s9IRKZ6Ftx6Zx
Jav0LizYvi9nSCW3um5gd3sIH1UFd8nniK1YlDd5dnjhvTVvq30FttX+UQ1M
ctzQLsb71QJHS1ir0ZcllaLojbmIIV9pVHj0fkyjUqaQGL4FaAnG70bh/suv
wEdG13Juuwc5tF3fdkDbtsbdBahLAdzkOA4n6vBHVDbwmjeJv4rhWcW7pEtF
wz38PQ7Lvmbi3kdGjtYQUmHBx4exfPa7EWejMFimhlfPoB3IrJruXp/JuV8l
aAJxcEL+Od6CZXr4NilN6xeVxA5uxEQyf97sC78K+0sqXZFpooS1X3RosORN
9ZmJXVFG6JOA5HcGuGK4t1FOZayLqunpdvlAOCPsKTqVOOrDv3KwFgM4alsq
N3MHhJKdE2i6OYXr5vSDptumY/EU0f6midhZ/U0ToKC/eX/vPraslc5DbjTm
HmTIplaCUSui+NMIPqjcJBscXik8pq4SztxmMwubeoQNnZHBw5iKUJw0q0mx
PAoQGKMasDPmcR9uFSBb2SXoavtp+2m3N+4VsNkXoEMMWGOMkyPPEdie1ilp
NemlD0FcTLzORCDVHCNSnApAyrCDWznE/cIV8bgo684s8QE7DsU/fYQ/e7S7
P9wfhnv7u/YdOrT0J7wr1Ve6qXN1PvNHifewXKnwe+/Z7hdAELNLBRhfzvMV
4C3Vw259zh5UfvR3t1QUmxPNTtlt+2FND2LwE3tKs9e54c9utu9kvXbWHBT7
zoeLNqag4PbXdfAV2k6PYK60Z7VL5E8ikK149311u+9L2Z8nWrKpMLxaVu0Q
R+V1xofytr7eNIxtPjn0NffHltj4pi/Id0+uO9Lm/rWKwVi+X6sdr5W1H9kj
U4y7xfGR/9oZfvp+L3z98fsh/Pfb51/83MPTVtfWzyZCt6L7tNd/mUy2ir7r
BrDdp/FrDGB3SHrdAP4dDVen1YRvruvXJk3ptqOsaWfXtLStx+bjCXc0ttrF
sk3bt+lutyPl6RrMISt1EJbJZqFrNdT8LcHarptfDfKx84pRhLFVquI5/+DP
/QEYrCl25P+hR/Les5O/zsNiwHvNczSYASYQMWj+YSm8dnZxEfjwvZm49XF7
M7ZetcLFwIaLmBthP5jvNITIsPnxHVueo1mBxKzO9v8vN2W2eTRUAAA=

-->

</rfc>

