<?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.39 (Ruby 4.0.6) -->


<!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-01" 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="September" day="09"/>

    
    
    

    <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 payment
metadata and, when declared, input and output 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 payment metadata and can provide input
and output 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="payable-402-response"><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="output-schema"><name>Output Schema</name>

<t>This section reiterates existing OpenAPI response and
schema semantics for payable operations. It defines no
new output-schema extension or schema dialect. The
guidance appears here because successful response shape
is useful to evaluate before payment.</t>

<t>Each payable operation <bcp14>SHOULD</bcp14> describe every successful
response representation it intends to return using the
standard OpenAPI <spanx style="verb">responses</spanx> object. Each JSON response
representation <bcp14>SHOULD</bcp14> include a <spanx style="verb">schema</spanx> member under
its actual media type.</t>

<t>A schema attached to one response status and media type
describes only that representation. It does not describe
other success statuses or media types. A client <bcp14>MUST NOT</bcp14>
treat a schema for one successful representation as an
operation-wide guarantee unless every successful
representation declared by the OpenAPI document entails
the same guarantee.</t>

<figure><sourcecode type="yaml"><![CDATA[
responses:
  "200":
    description: "Successful response"
    content:
      application/json:
        schema:
          type: object
          required:
            - id
          properties:
            id:
              type: string
          additionalProperties: false
  "402":
    description: "Payment Required"
]]></sourcecode></figure>

<t>Output schemas enable agents to evaluate seller-declared
response shapes before invoking an operation. Operations
that omit every successful response schema <bcp14>MAY</bcp14> be marked
"output-schema-missing" by discovery clients and
registries. A document with schemas for only some
successful representations does not provide an
operation-wide output guarantee.</t>

<t>The following <bcp14>MUST NOT</bcp14> be treated as requiredness
guarantees:</t>

<t><list style="symbols">
  <t>the OpenAPI <spanx style="verb">example</spanx> or <spanx style="verb">examples</spanx> fields</t>
  <t>the schema <spanx style="verb">default</spanx> field</t>
  <t>property presence in an example object</t>
  <t>a property listed in <spanx style="verb">properties</spanx> but omitted
from <spanx style="verb">required</spanx></t>
  <t>GraphQL selection sets that are not represented
in the OpenAPI document</t>
</list></t>

<t>Schema interpretation <bcp14>MUST</bcp14> follow the OpenAPI version
and JSON Schema dialect declared by the document. A
<spanx style="verb">required</spanx> property name alone does not establish that
the enclosing instance is an object or that the value
is non-null. A client <bcp14>MUST NOT</bcp14> claim that a response
path is always present and non-null unless every
applicable success status, media type, and valid schema
branch entails that claim, including applicable type,
composition, reference, and array-cardinality semantics.
A client that cannot evaluate the declared dialect or
resolve relevant schema semantics <bcp14>SHOULD</bcp14> fail closed.</t>

<t>Any projected output guarantee remains seller-declared
discovery metadata. It <bcp14>MUST NOT</bcp14> be described as a
runtime observation or runtime validation.</t>

<t>Payable operations still <bcp14>MUST</bcp14> include a 402 response
as specified in <xref target="payable-402-response"/>. Output
schemas are not payment terms. Presence or absence of
an output schema <bcp14>MUST NOT</bcp14> change whether an operation
is payable.</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",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": ["id"],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "model": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": false,
                  "example": {
                    "id": "cmpl_123",
                    "model": "example-model"
                  }
                }
              }
            }
          },
          "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>
  <t>Output schemas describe successful JSON payloads
for evaluation before a request. They are not
payment terms and do not replace the runtime 402
challenge or the actual HTTP response.</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, output 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 729?>

<section anchor="changes-from-draft-payment-discovery-00"><name>Changes from draft-payment-discovery-00</name>

<t>This revision adds an Output Schema section parallel
to Input Schema. It scopes output claims to every
applicable success status, media type, and schema
branch, and distinguishes seller-declared schema
evidence from runtime validation. The example OpenAPI
document includes one JSON 200 schema and keeps a
second paid operation description-only. Information
Disclosure now covers output schemas. Payment
challenges remain authoritative. No payment method,
intent, amount, currency, or settlement behavior is
specified or changed.</t>

</section>
<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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
BM8wHBhs03N0vkFI/7ns2f8ASAER+xJlAAA=

-->

</rfc>

