<?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 3.4.7) -->


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

]>


<rfc ipr="trust200902" docName="draft-kavian-offering-discovery-protocol-00" category="std" consensus="true" submissionType="IETF">
  <front>
    <title abbrev="ODP">The Offering Discovery Protocol</title>

    <author initials="N." surname="Kavian" fullname="Nas Kavian">
      <organization>Jarwin, Inc. (InFlow)</organization>
      <address>
        <email>nas@inflowpay.ai</email>
      </address>
    </author>

    <date year="2026" month="August" day="24"/>

    
    
    

    <abstract>


<?line 105?>

<t>The Offering Discovery Protocol (ODP) enables an automated Agent to inspect a Service, discover its
Collections and Offerings, interpret Service-defined structured attributes, and identify links to
subsequent operations. ODP supports catalogs ranging from a few Offerings to large marketplaces
without imposing a universal product taxonomy. This document defines the protocol's scope,
terminology, roles, discovery architecture, extensibility model, composition boundaries, and
conformance model.</t>



    </abstract>



  </front>

  <middle>


<?line 114?>

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

<t>Automated Agents need a deterministic way to learn what a Service offers before selecting an
enrollment, payment, fulfillment, or other downstream protocol. Human-oriented pages and private
catalog interfaces do not provide a common discovery contract. A single rigid product model is also
insufficient for domains as different as flights, downloadable materials, subscriptions, physical
goods, and rented compute capacity.</t>

<t>ODP provides a stable discovery envelope and lets each Service describe domain-specific data with
machine-readable schemas. Discovery begins with the Service document at <spanx style="verb">/.well-known/odp</spanx> and
continues through a fixed set of operations advertised by that document.</t>

<t>ODP representations use JSON as defined by <xref target="RFC8259"/> and HTTP semantics as defined by <xref target="RFC9110"/>.</t>

<t>A directory can help an Agent locate candidate Services. A directory indexes Service metadata, not
complete Offering catalogs. The Agent queries each candidate Service for authoritative Collection
and Offering data.</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="scope"><name>Scope</name>

<t>ODP defines:</t>

<t><list style="symbols">
  <t>discovery of a Service's ODP capabilities through a well-known Service document;</t>
  <t>deterministic navigation and search of Collections and Offerings;</t>
  <t>stable descriptive envelopes for Services, Collections, and Offerings;</t>
  <t>Service-defined structured Offering attributes described by JSON Schema;</t>
  <t>discovery of deterministic search terms, filters, and pagination capabilities;</t>
  <t>terse representations for result sets and full representations for inspection;</t>
  <t>optional links from discovery resources to browser experiences and subsequent operations;</t>
  <t>optional discovery of remote Model Context Protocol endpoints; and</t>
  <t>Agent and Service conformance requirements.</t>
</list></t>

<t>ODP is applicable whether access is public or subject to authentication, enrollment, payment, or
another policy enforced by the Service.</t>

</section>
<section anchor="non-goals"><name>Non-Goals</name>

<t>ODP does not define:</t>

<t><list style="symbols">
  <t>a universal taxonomy or rigid domain model for products and services;</t>
  <t>a protocol for enrollment, authentication, payment, checkout, tax calculation, shipping, pickup,
fulfillment, or delivery;</t>
  <t>MCP transport, capability, tool, resource, prompt, version-negotiation, or authorization behavior;</t>
  <t>a requirement to replicate a Service's full catalog into a directory;</t>
  <t>ranking policy, recommendation policy, or natural-language interpretation;</t>
  <t>a directory protocol or a requirement that a directory exist; or</t>
  <t>the business rules that determine whether an Offering can be acquired.</t>
</list></t>

<t>Examples and domain profiles can demonstrate compute, flight, digital, physical, or other data.
Those examples do not add requirements to the ODP core protocol.</t>

</section>
<section anchor="terminology"><name>Terminology</name>

<dl>
  <dt>Agent</dt>
  <dd>
    <t>Software acting for a user or another principal that discovers and evaluates ODP resources.</t>
  </dd>
  <dt>Service</dt>
  <dd>
    <t>An origin that publishes an ODP Service document and exposes one or more ODP capabilities. A
Service can represent a merchant, marketplace, public organization, software system, or another
discoverable entity. A Service is not necessarily a seller.</t>
  </dd>
  <dt>Service Document</dt>
  <dd>
    <t>The JSON representation published at <spanx style="verb">/.well-known/odp</spanx>. It describes the Service and advertises
the ODP operations that the Service exposes.</t>
  </dd>
  <dt>Collection</dt>
  <dd>
    <t>An optional, Service-defined grouping used to navigate or constrain Offerings. Collections can be
hierarchical, overlapping, or independent and do not impose a universal taxonomy.</t>
  </dd>
  <dt>Offering</dt>
  <dd>
    <t>A discoverable description of something the Service makes available. An Offering can describe a
free or paid item, a physical or digital good, a scheduled resource, a subscription, a rental, or
another Service-defined opportunity.</t>
  </dd>
  <dt>Terse Representation</dt>
  <dd>
    <t>A partial Collection or Offering representation used for listing, search, navigation, and
comparison. It uses the same field names and locations as the Full Representation.</t>
  </dd>
  <dt>Full Representation</dt>
  <dd>
    <t>A resource representation containing the complete ODP description available to the Agent under the
current access policy.</t>
  </dd>
  <dt>Detail Fields</dt>
  <dd>
    <t>An optional, exhaustive list of fields present in the corresponding Full Representation and
omitted from a Terse Representation. Entries are JSON Pointers.</t>
  </dd>
  <dt>Attribute Schema</dt>
  <dd>
    <t>A JSON Schema document that describes Service-defined structured data carried by an Offering.</t>
  </dd>
  <dt>Filter Definition</dt>
  <dd>
    <t>Metadata that describes a deterministic constraint accepted by a search or listing operation.
Filter definitions use short Service-local identifiers and can be embedded or linked and
paginated.</t>
  </dd>
  <dt>Service Origin</dt>
  <dd>
    <t>The canonical ASCII serialization of the origin from which the Service Document was retrieved. The
Service Origin identifies the Service.</t>
  </dd>
  <dt>Local Resource Identifier</dt>
  <dd>
    <t>A Service-created and Service-managed string that identifies a Collection or Offering within one
resource-type namespace at that Service.</t>
  </dd>
  <dt>Resource Identity</dt>
  <dd>
    <t>The tuple of Service Origin, resource type, and Local Resource Identifier. An Agent composes this
tuple; a Service emits the Local Resource Identifier in the resource representation.</t>
  </dd>
  <dt>Resource Reference</dt>
  <dd>
    <t>An origin-relative absolute-path reference or an absolute URL that locates a browser
representation, schema, subsequent operation, or other referenced resource. A Resource Reference
does not define Resource Identity.</t>
  </dd>
  <dt>MCP Endpoint</dt>
  <dd>
    <t>A remote Model Context Protocol Streamable HTTP connection target advertised by a Service. An MCP
Endpoint is not a browser link, ODP operation, or ODP Action.</t>
  </dd>
  <dt>Top-Level Document</dt>
  <dd>
    <t>The outermost JSON object carried by one ODP request or response body. Objects nested within that
object, including terse result items, are not Top-Level Documents.</t>
  </dd>
  <dt>Subsequent Operation</dt>
  <dd>
    <t>An operation linked from an ODP resource whose semantics can be defined by ODP, AEP, MPP, x402, or
another protocol.</t>
  </dd>
</dl>

</section>
<section anchor="roles"><name>Roles</name>

<section anchor="agent-role"><name>Agent Role</name>

<t>An Agent consumes Service Documents and advertised ODP resources. It selects advertised operations,
constructs their fixed paths from <spanx style="verb">http.endpoint_base</spanx>, interprets Service-defined attributes using
the applicable Attribute Schema, and honors live HTTP authentication and payment challenges.</t>

<t>An Agent <bcp14>MUST NOT</bcp14> assume that an unadvertised ODP operation exists. An Agent <bcp14>MUST</bcp14> construct only the
fixed paths defined by this document. An Agent <bcp14>MUST</bcp14> treat content received from a directory as
discovery metadata rather than authoritative Offering data.</t>

</section>
<section anchor="service-role"><name>Service Role</name>

<t>A Service publishes its Service Document and serves the ODP operations it advertises. The Service is
authoritative for its Collections, Offerings, Attribute Schemas, filters, access policy, and
subsequent-operation links.</t>

<t>A Service <bcp14>MUST NOT</bcp14> advertise an ODP operation that it does not support. A Service <bcp14>MUST</bcp14> keep
operation metadata consistent with the behavior available to the Agent under the applicable access
policy.</t>

</section>
<section anchor="directory-relationship"><name>Directory Relationship</name>

<t>A directory is not an ODP protocol role. It is an optional discovery facility that helps an Agent
find Services by indexing public Service metadata. A directory can cache Service documents subject
to its own refresh policy, but it is not authoritative for Service-owned catalog data.</t>

<t>This document defines no directory query, suggestion, filter, facet, count, ranking, or response
wire format. A directory can index localized Service <spanx style="verb">name</spanx>, <spanx style="verb">description</spanx>, and <spanx style="verb">keywords</spanx> values
and combine them with directory-owned signals. Those behaviors belong to the directory
implementation and do not become ODP operations or ODP conformance requirements.</t>

<t>Directory suggestions and facets describe the directory's Service index. Offering-search refinements
describe candidate values for effective Service-owned Filter Definitions. An Agent <bcp14>MUST NOT</bcp14> treat
either one as the other, and <bcp14>MUST</bcp14> retrieve the current Service Document and catalog data from a
selected Service before treating them as authoritative.</t>

<t>ODP conformance does not depend on the use, availability, or implementation of a directory.</t>

</section>
</section>
<section anchor="resource-identity-and-references"><name>Resource Identity and References</name>

<section anchor="service-identity"><name>Service Identity</name>

<t>The Service Origin identifies a Service. An Agent <bcp14>MUST</bcp14> derive it from the final Service Document
response URL using the ASCII serialization algorithm in <xref target="RFC6454"/>. The canonical serialization
<bcp14>MUST</bcp14> use a lowercase scheme and host, <bcp14>MUST</bcp14> omit the default port, and <bcp14>MUST</bcp14> contain no path, query,
fragment, or user information.</t>

<t>The Service Origin scheme <bcp14>MUST</bcp14> be <spanx style="verb">https</spanx>. For local development, <spanx style="verb">http</spanx> is permitted only when the
host is syntactically exactly <spanx style="verb">localhost</spanx>, <spanx style="verb">127.0.0.1</spanx>, or <spanx style="verb">[::1]</spanx>. Resolving another host name to a
loopback address does not qualify.</t>

<t>A Service Document <bcp14>MUST NOT</bcp14> declare another value as the Service's identity. Control of the Service
Origin is established through the origin and transport security rather than a self-asserted global
identifier. Changing the Service Origin changes the Service identity.</t>

</section>
<section anchor="local-resource-identifiers"><name>Local Resource Identifiers</name>

<t>Every Collection and Offering representation <bcp14>MUST</bcp14> contain <spanx style="verb">id</spanx>, a Local Resource Identifier created
and managed by the Service. ODP does not prescribe the Service's identifier-generation algorithm.</t>

<t>A Local Resource Identifier <bcp14>MUST</bcp14> contain between 1 and 128 ASCII characters. Every character <bcp14>MUST</bcp14> be
an ASCII letter, decimal digit, hyphen (<spanx style="verb">-</spanx>), period (<spanx style="verb">.</spanx>), underscore (<spanx style="verb">_</spanx>), or tilde (<spanx style="verb">~</spanx>). The
complete identifier <bcp14>MUST NOT</bcp14> be <spanx style="verb">.</spanx> or <spanx style="verb">..</spanx>. A Service <bcp14>MUST</bcp14> keep the identifier stable for the
resource's lifetime and <bcp14>MUST NOT</bcp14> assign it to another resource in the same resource-type namespace.
Services <bcp14>SHOULD</bcp14> use UUIDs where practical. A Service whose internal identifier does not satisfy this
syntax <bcp14>MUST</bcp14> map it to a stable public ODP identifier.</t>

<t>Collections and Offerings have separate identifier namespaces. The same Local Resource Identifier
<bcp14>MAY</bcp14> identify one Collection and one Offering at a Service. It <bcp14>MUST NOT</bcp14> identify two Collections or
two Offerings at that Service.</t>

<t>Agents <bcp14>MUST</bcp14> treat a Local Resource Identifier as opaque. Comparison is exact and case-sensitive.
Agents <bcp14>MUST NOT</bcp14> trim, case fold, URL-decode, parse, or infer semantics from an identifier.</t>

</section>
<section anchor="complete-resource-identity"><name>Complete Resource Identity</name>

<t>The Resource Identity of a Collection or Offering is the tuple:</t>

<figure><artwork><![CDATA[
(Service Origin, resource type, Local Resource Identifier)
]]></artwork></figure>

<t>The resource type is <spanx style="verb">collection</spanx> or <spanx style="verb">offering</spanx>. Agent implementations <bcp14>SHOULD</bcp14> expose Resource
Identity as a structured value. They <bcp14>SHOULD NOT</bcp14> create an externally visible concatenated form whose
delimiters or escaping would constitute an additional identifier syntax.</t>

<t>The Service is responsible for the Local Resource Identifier. The Agent is responsible for
associating it with the Service Origin and resource type established by the representation context.
The Service does not need to serialize the complete tuple in each representation.</t>

<t>An Agent <bcp14>MUST</bcp14> compare all three tuple members when determining whether two representations identify
the same resource. A Resource Reference, response URL, name, schema, or attribute change does not by
itself change Resource Identity.</t>

</section>
<section anchor="resource-references"><name>Resource References</name>

<t>Fields defined as Resource References, including Service links, Collection and Offering <spanx style="verb">web_url</spanx>,
image <spanx style="verb">src</spanx>, and subsequent-operation <spanx style="verb">href</spanx> values, <bcp14>MUST</bcp14> contain one of:</t>

<t><list style="symbols">
  <t>an origin-relative absolute-path reference beginning with exactly one <spanx style="verb">/</spanx>, resolved against the
Service Origin according to <xref target="RFC3986"/>; or</t>
  <t>an absolute URL using the lowercase <spanx style="verb">https</spanx> scheme.</t>
</list></t>

<t>For local development, an absolute URL <bcp14>MAY</bcp14> use the lowercase <spanx style="verb">http</spanx> scheme only with a host
syntactically equal to <spanx style="verb">localhost</spanx>, <spanx style="verb">127.0.0.1</spanx>, or <spanx style="verb">[::1]</spanx>. Path-relative references,
parent-relative references, scheme-relative references, fragments, and user information are
prohibited.</t>

<t>A same-origin reference <bcp14>SHOULD</bcp14> use the origin-relative form. A cross-origin reference <bcp14>MUST</bcp14> use an
absolute URL. Non-ASCII URL components <bcp14>MUST</bcp14> be percent-encoded before serialization.</t>

<t>An Agent <bcp14>MUST</bcp14> resolve an origin-relative Resource Reference against the Service Origin, not against
the path of the representation containing it.</t>

<t>Following a cross-origin reference does not change the Service Origin or Resource Identity of the
referring ODP resource. An Agent <bcp14>MUST</bcp14> apply origin and credential policy independently to the
resolved target as required by the Security Considerations.</t>

</section>
</section>
<section anchor="versioning-and-compatibility"><name>Versioning and Compatibility</name>

<section anchor="version-syntax"><name>Version Syntax</name>

<t>Every Top-Level Document <bcp14>MUST</bcp14> contain <spanx style="verb">odp_version</spanx>. Its value is a JSON string in <spanx style="verb">MAJOR.MINOR</spanx>
form. <spanx style="verb">MAJOR</spanx> and <spanx style="verb">MINOR</spanx> are unsigned decimal integers without leading zeroes except for the value
<spanx style="verb">0</spanx>. The protocol version defined by this document is <spanx style="verb">1.0</spanx>.</t>

<t>Nested objects <bcp14>MUST NOT</bcp14> repeat <spanx style="verb">odp_version</spanx> unless a specification explicitly defines the nested
object as an independently processable Top-Level Document. Terse items in a list or search response
inherit the version of their containing Top-Level Document.</t>

</section>
<section anchor="compatibility-rules"><name>Compatibility Rules</name>

<t>The major version identifies the compatibility family. An implementation <bcp14>MUST</bcp14> reject a Top-Level
Document whose major version it does not support. Minor versions within one major version are
backward compatible.</t>

<t>A minor-version revision <bcp14>MAY</bcp14> add optional fields, optional enum values, optional capabilities, or
clarifications that preserve existing wire behavior. It <bcp14>MUST NOT</bcp14> remove or redefine an existing
field, value, operation, error, or requirement. It <bcp14>MUST NOT</bcp14> make a new field or capability mandatory
for implementations of an earlier minor version in the same major-version family.</t>

<t>An implementation supporting a major version <bcp14>MUST</bcp14> process Top-Level Documents carrying any minor
version in that major-version family according to the unknown-field and unknown-value rules in this
document. Implementations <bcp14>MUST NOT</bcp14> infer support for an optional capability from a higher minor
version.</t>

<t>Each request and response Top-Level Document declares the version governing that document. The
version is not inherited across HTTP exchanges. A Service receiving a supported major version <bcp14>MUST</bcp14>
apply same-major compatibility rules even when its preferred minor version differs.</t>

</section>
</section>
<section anchor="http-media-types-and-negotiation"><name>HTTP Media Types and Negotiation</name>

<section anchor="odp-json-media-type"><name>ODP JSON Media Type</name>

<t>The media type for ODP request and response documents is <spanx style="verb">application/odp+json</spanx> and uses the JSON
structured syntax suffix defined by <xref target="RFC6839"/>. The media type has no required or optional
parameters. Parameters do not select or modify the ODP protocol version. The <spanx style="verb">odp_version</spanx> member is
the sole protocol-version authority.</t>

<t>An Agent <bcp14>SHOULD</bcp14> send <spanx style="verb">Accept: application/odp+json</spanx> when requesting an ODP resource. A Service <bcp14>MAY</bcp14>
return an ODP representation when <spanx style="verb">Accept</spanx> is absent, includes the wildcard media range, or permits
<spanx style="verb">application/odp+json</spanx>. If the request's <spanx style="verb">Accept</spanx> field excludes <spanx style="verb">application/odp+json</spanx>, the Service
<bcp14>MUST</bcp14> respond with <spanx style="verb">406 Not Acceptable</spanx>.</t>

<t>A request carrying an ODP Top-Level Document <bcp14>MUST</bcp14> use a <spanx style="verb">Content-Type</spanx> whose media-type essence is
<spanx style="verb">application/odp+json</spanx>. A Service <bcp14>MUST</bcp14> respond with <spanx style="verb">415 Unsupported Media Type</spanx> when a request body
intended for an ODP operation has a missing, malformed, or different media type.</t>

<t>A successful response carrying an ODP Top-Level Document <bcp14>MUST</bcp14> use a <spanx style="verb">Content-Type</spanx> whose media-type
essence is <spanx style="verb">application/odp+json</spanx>. An Agent <bcp14>MUST</bcp14> reject a successful ODP response with a missing,
malformed, or different media type.</t>

<t>Media-type essence comparison is case-insensitive. Receivers <bcp14>MUST</bcp14> ignore syntactically valid media
type parameters and <bcp14>MUST NOT</bcp14> interpret a <spanx style="verb">version</spanx> parameter or any other parameter as an ODP
version declaration. HTTP Problem Details responses use <spanx style="verb">application/problem+json</spanx>. Attribute Schema
documents use <spanx style="verb">application/schema+json</spanx>.</t>

</section>
<section anchor="no-separate-version-negotiation"><name>No Separate Version Negotiation</name>

<t>Implementations <bcp14>MUST NOT</bcp14> negotiate the ODP version through a media-type parameter or a separate ODP
version header. An Agent determines whether it can process a received Top-Level Document from
<spanx style="verb">odp_version</spanx> and the compatibility rules in this document.</t>

</section>
</section>
<section anchor="discovery-architecture"><name>Discovery Architecture</name>

<section anchor="service-discovery"><name>Service Discovery</name>

<t>An Agent can begin with a known Service origin or obtain candidate Service origins from a directory
or another source. When a directory is used, the result of the first stage is a set of candidate
Services. The result is not a cross-Service Offering search result.</t>

</section>
<section anchor="service-inspection"><name>Service Inspection</name>

<t>An Agent retrieves the Service Document from <spanx style="verb">/.well-known/odp</spanx> at the Service origin. The Service
Document advertises the ODP operations available to the Agent. The Agent constructs only advertised
operations using the endpoint rules in this document.</t>

</section>
</section>
<section anchor="service-document"><name>Service Document</name>

<section anchor="retrieval-and-access"><name>Retrieval and Access</name>

<t>The Service Document is the response to <spanx style="verb">GET /.well-known/odp</spanx>. This request <bcp14>MUST</bcp14> be available
without enrollment, authentication, or payment. A Service can enforce access policy on catalog
operations advertised by the document.</t>

<t>The successful response <bcp14>MUST</bcp14> be an ODP JSON Top-Level Document. The Service Document <bcp14>MUST</bcp14> be a flat
JSON object and <bcp14>MUST</bcp14> contain <spanx style="verb">odp_version</spanx>, <spanx style="verb">name</spanx>, <spanx style="verb">description</spanx>, <spanx style="verb">language</spanx>, <spanx style="verb">localizations</spanx>,
<spanx style="verb">operations</spanx>, and <spanx style="verb">http</spanx>. It <bcp14>MAY</bcp14> contain <spanx style="verb">branding</spanx>, <spanx style="verb">documentation_url</spanx>, <spanx style="verb">keywords</spanx>, <spanx style="verb">mcp</spanx>,
<spanx style="verb">payment_origins</spanx>, <spanx style="verb">protocols</spanx>, <spanx style="verb">search_capabilities</spanx>, <spanx style="verb">status_url</spanx>, <spanx style="verb">support_url</spanx>, and
<spanx style="verb">website_url</spanx>. It <bcp14>MUST NOT</bcp14> contain a self-asserted Service identifier or <spanx style="verb">web_url</spanx>.</t>

<t><spanx style="verb">name</spanx> is a non-empty string of at most 128 Unicode code points. <spanx style="verb">description</spanx> is a non-empty string
of at most 1024 Unicode code points. <spanx style="verb">keywords</spanx> is an array of at most 32 unique freeform strings,
each containing 1 through 64 Unicode code points and collectively containing at most 1024 Unicode
code points. A keyword <bcp14>MUST</bcp14> begin and end with a non-whitespace code point. A Service <bcp14>SHOULD</bcp14> omit
<spanx style="verb">keywords</spanx> when it has none.</t>

<t>Keywords are localized Service-discovery hints in the language identified by <spanx style="verb">language</spanx>. They do not
draw from a protocol-defined vocabulary, advertise accepted query terms, enumerate a catalog, or
define filters. ODP defines no case folding, normalization, stemming, or semantic equivalence for
them; array uniqueness uses JSON string equality. An Agent <bcp14>MUST NOT</bcp14> restrict a Collection or
Offering search query to Service keywords or assume that a Service supports keyword enumeration or
query completion.</t>

</section>
<section anchor="payment-origins"><name>Payment Origins</name>

<t><spanx style="verb">payment_origins</spanx>, when present, is a non-empty array of at most 16 Service Origins at which the
Service can issue payment challenges. A Service omits <spanx style="verb">payment_origins</spanx> when it issues payment
challenges only from its canonical Service Origin. Declaring an origin does not prove control of it;
a directory can require independent verification before associating payments from that origin with
the Service. A directory treats duplicate origins and the canonical Service Origin as redundant.</t>

</section>
<section anchor="service-links"><name>Service Links</name>

<t>The Service Document <bcp14>MAY</bcp14> include the following Resource References:</t>

<t><list style="symbols">
  <t><spanx style="verb">website_url</spanx> identifies the human-facing Service website or storefront;</t>
  <t><spanx style="verb">documentation_url</spanx> identifies human-readable documentation for using the Service;</t>
  <t><spanx style="verb">support_url</spanx> identifies the Service's support destination; and</t>
  <t><spanx style="verb">status_url</spanx> identifies the Service's operational status page.</t>
</list></t>

<t>These links are descriptive metadata. Their presence does not advertise an ODP operation, alter an
operation's access policy, or replace the machine-readable OpenAPI reference in <spanx style="verb">http.openapi</spanx>.
<spanx style="verb">website_url</spanx> is not a base URL for other Resource References. In particular, a Collection or
Offering <spanx style="verb">web_url</spanx> is resolved against the Service Origin. A Service whose browser resources use a
different origin supplies an absolute URL in each applicable Resource Reference.</t>

</section>
<section anchor="mcp-endpoints"><name>MCP Endpoints</name>

<t><spanx style="verb">mcp</spanx>, when present, is a non-empty array of remote MCP Endpoint descriptors. A Service with no MCP
Endpoint omits <spanx style="verb">mcp</spanx> rather than serializing an empty array.</t>

<t>Each descriptor <bcp14>MUST</bcp14> contain <spanx style="verb">type</spanx> and <spanx style="verb">url</spanx> and <bcp14>MAY</bcp14> contain <spanx style="verb">name</spanx> and <spanx style="verb">description</spanx>. <spanx style="verb">type</spanx> <bcp14>MUST</bcp14>
be <spanx style="verb">streamable-http</spanx>, identifying the MCP Streamable HTTP transport <xref target="MCP"/>. <spanx style="verb">url</spanx> is a Resource
Reference to the remote MCP Endpoint. <spanx style="verb">name</spanx>, when present, is a non-empty human-readable label of
no more than 128 Unicode code points. <spanx style="verb">description</spanx>, when present, is a non-empty explanation of the
endpoint's purpose containing no more than 1024 Unicode code points. <spanx style="verb">name</spanx> and <spanx style="verb">description</spanx> use
the Service Document's <spanx style="verb">language</spanx> and localization rules.</t>

<t>An MCP descriptor locates a connection surface; it does not describe an individual MCP tool. A
Service <bcp14>SHOULD</bcp14> use one descriptor for tools exposed through one MCP connection surface and <bcp14>SHOULD</bcp14>
use multiple descriptors only for distinct connection surfaces. Array order has no protocol
semantics.</t>

<t>Retrieving, validating, or indexing a Service Document <bcp14>MUST NOT</bcp14> invoke an advertised MCP Endpoint.
An MCP-capable client connects only when its caller's operation requires that interface. MCP remains
authoritative for capability discovery, version negotiation, tools, resources, prompts,
authorization, and request behavior. The presence of an MCP descriptor does not state that the
endpoint is public and does not authorize an Agent to send ODP, AEP, payment, or other credentials.</t>

</section>
<section anchor="branding"><name>Branding</name>

<t><spanx style="verb">branding</spanx>, when present, contains exactly <spanx style="verb">icon</spanx> and <spanx style="verb">logo</spanx>. Each member contains a required
Resource Reference <spanx style="verb">src</spanx> and <bcp14>MAY</bcp14> contain a <spanx style="verb">type</spanx> of <spanx style="verb">image/svg+xml</spanx>, <spanx style="verb">image/png</spanx>, or <spanx style="verb">image/webp</spanx>.
<spanx style="verb">type</spanx> is a media-type hint available before retrieval. A Service <bcp14>SHOULD</bcp14> provide it when the
Resource Reference does not have a filename extension that identifies the image format. <spanx style="verb">icon</spanx>
identifies a Service mark intended for a square presentation canvas. <spanx style="verb">logo</spanx> identifies a Service
mark intended for a horizontal 4:1 presentation canvas. Services <bcp14>SHOULD</bcp14> provide sufficient source
resolution to avoid upscaling. SVG resources <bcp14>MUST</bcp14> provide positive intrinsic dimensions or a
positive view-box width and height.</t>

<t>A client that normalizes branding for storage or presentation <bcp14>MUST</bcp14> preserve the source aspect ratio
and <bcp14>MUST NOT</bcp14> crop or stretch the source. The client fits and centers <spanx style="verb">icon</spanx> within a square canvas
and <spanx style="verb">logo</spanx> within a 4:1 canvas. Unused canvas pixels <bcp14>MUST</bcp14> be transparent when the normalized format
supports transparency. The <bcp14>RECOMMENDED</bcp14> normalized dimensions are 200 by 200 pixels for <spanx style="verb">icon</spanx> and
400 by 100 pixels for <spanx style="verb">logo</spanx>.</t>

<t>Branding retrieval is anonymous. A client <bcp14>MUST NOT</bcp14> attach AEP credentials, payment credentials,
cookies, or authorization fields. When <spanx style="verb">type</spanx> is present, the successful response media-type essence
<bcp14>MUST</bcp14> equal the advertised value. A branding response body is limited to 1,048,576 bytes and five
redirects. Redirect and network-address policy follows Supporting Resource Retrieval. Branding
content is untrusted input. A client that displays SVG <bcp14>MUST</bcp14> either sanitize and safely isolate it or
render it to a non-active raster representation before display.</t>

<t><spanx style="verb">protocols</spanx> advertises Service-wide support for enrollment and payment protocols. It contains at
least one of <spanx style="verb">enrollment</spanx> or <spanx style="verb">payments</spanx>. An unsupported category is omitted rather than serialized
as an empty array.</t>

<t><spanx style="verb">enrollment</spanx>, when present, is the single-item array <spanx style="verb">[{"name":"aep"}]</spanx>, identifying AEP <xref target="AEP"/>. An
enrollment descriptor contains only <spanx style="verb">name</spanx>.</t>

<t><spanx style="verb">payments</spanx>, when present, is a non-empty array of no more than two payment descriptors. Each
descriptor contains <spanx style="verb">name</spanx> and <spanx style="verb">authentication</spanx> and <bcp14>MAY</bcp14> contain <spanx style="verb">options</spanx>. <spanx style="verb">name</spanx> is <spanx style="verb">mpp</spanx>,
identifying the <spanx style="verb">Payment</spanx> HTTP Authentication Scheme <xref target="MPP"/>, or <spanx style="verb">x402</spanx>, identifying the x402
protocol <xref target="X402"/>. Names <bcp14>MUST NOT</bcp14> be duplicated. When both descriptors are present, their array
order expresses Service preference. <spanx style="verb">authentication</spanx> is <spanx style="verb">not-required</spanx> or <spanx style="verb">required</spanx> and states
whether the Agent must authenticate to the Service before using that payment protocol. A <spanx style="verb">required</spanx>
value requires the Service Document to advertise an enrollment protocol.</t>

<t><spanx style="verb">options</spanx>, when present, is a non-empty array of no more than 16 unique payment-option names drawn
from <spanx style="verb">algorand</spanx>, <spanx style="verb">aptos</spanx>, <spanx style="verb">arbitrum</spanx>, <spanx style="verb">avalanche</spanx>, <spanx style="verb">base</spanx>, <spanx style="verb">card</spanx>, <spanx style="verb">ethereum</spanx>, <spanx style="verb">hedera</spanx>, <spanx style="verb">inflow</spanx>,
<spanx style="verb">lightning</spanx>, <spanx style="verb">polygon</spanx>, <spanx style="verb">solana</spanx>, <spanx style="verb">stellar</spanx>, <spanx style="verb">stripe</spanx>, <spanx style="verb">tempo</spanx>, and <spanx style="verb">ton</spanx>. Each name is a compact,
human-consumable compatibility label. It does not replace protocol-specific method, scheme, network,
chain, asset, or settlement terms. A Service <bcp14>MUST</bcp14> advertise an option only under a payment protocol
through which it accepts that option. Omitting <spanx style="verb">options</spanx> means that the Service advertises the
payment protocol without advertising detailed option compatibility.</t>

<t>Protocol advertisement describes support and the authentication prerequisite for each payment rail;
it does not guarantee that a payment protocol is accepted by every ODP operation, catalog resource,
or Action. A missing category means only that support is not advertised. An Agent and directory <bcp14>MAY</bcp14>
derive a Service-support summary from this field. Recognition of an option by ODP does not imply
that an Agent implementation supports or is configured to use it. A live HTTP response remains
authoritative for the request that produced it.</t>

</section>
<section anchor="language-selection"><name>Language Selection</name>

<t><spanx style="verb">language</spanx> <bcp14>MUST</bcp14> be the <xref target="RFC5646"/> language tag of the representation. <spanx style="verb">localizations</spanx> <bcp14>MUST</bcp14> be a
non-empty array of no more than 16 unique RFC 5646 language tags available for the Service metadata.
It <bcp14>MUST</bcp14> include <spanx style="verb">language</spanx>. These fields describe the Service Document metadata and do not assert
which localizations are available for Collections or Offerings.</t>

<t>An Agent requests a preferred representation using <spanx style="verb">Accept-Language</spanx>. A Service supporting multiple
representations <bcp14>MUST</bcp14> select a language using the Lookup scheme in <xref target="RFC4647"/>. If no requested range
matches, it <bcp14>MUST</bcp14> return its default representation rather than <spanx style="verb">406 Not Acceptable</spanx>. A localized
response <bcp14>MUST</bcp14> include <spanx style="verb">Content-Language</spanx> and <spanx style="verb">Vary: Accept-Language</spanx>. Entity tags <bcp14>MUST</bcp14> distinguish
representation variants. ODP does not define a language query parameter.</t>

</section>
<section anchor="http-endpoint-base"><name>HTTP Endpoint Base</name>

<t><spanx style="verb">http</spanx> <bcp14>MUST</bcp14> be an object containing <spanx style="verb">endpoint_base</spanx> and <bcp14>MAY</bcp14> contain <spanx style="verb">openapi</spanx>. <spanx style="verb">endpoint_base</spanx> is an
origin-relative absolute-path reference beginning with exactly one <spanx style="verb">/</spanx>, <bcp14>MUST NOT</bcp14> contain a query or
fragment, and <bcp14>MUST</bcp14> contain no more than 2048 ASCII characters. The value <bcp14>MAY</bcp14> end in <spanx style="verb">/</spanx>.</t>

<t><spanx style="verb">openapi</spanx>, when present, contains exactly one member, <spanx style="verb">url</spanx>, whose value is a Resource Reference to
a reusable OpenAPI 3.1 document. It supplies the default OpenAPI document for Actions whose OpenAPI
target omits <spanx style="verb">url</spanx>. An Action-level <spanx style="verb">url</spanx> overrides this Service-wide value. Advertising <spanx style="verb">openapi</spanx>
does not require an Action to use it and does not make OpenAPI a dependency of ODP navigation.</t>

<t>An Agent constructs an operation URL by removing any trailing slash from <spanx style="verb">endpoint_base</spanx>, appending
one <spanx style="verb">/</spanx>, and appending the fixed path from the following table. Identifier placeholders are replaced
verbatim with valid Local Resource Identifiers; percent-encoding or decoding is not performed.</t>

<texttable>
      <ttcol align='left'>Operation identifier</ttcol>
      <ttcol align='left'>Method</ttcol>
      <ttcol align='left'>Fixed path</ttcol>
      <c><spanx style="verb">list-collections</spanx></c>
      <c><spanx style="verb">GET</spanx></c>
      <c><spanx style="verb">collections</spanx></c>
      <c><spanx style="verb">search-collections</spanx></c>
      <c><spanx style="verb">POST</spanx></c>
      <c><spanx style="verb">collections/search</spanx></c>
      <c><spanx style="verb">get-collection</spanx></c>
      <c><spanx style="verb">GET</spanx></c>
      <c><spanx style="verb">collections/{collection_id}</spanx></c>
      <c><spanx style="verb">list-collection-offerings</spanx></c>
      <c><spanx style="verb">GET</spanx></c>
      <c><spanx style="verb">collections/{collection_id}/offerings</spanx></c>
      <c><spanx style="verb">list-offerings</spanx></c>
      <c><spanx style="verb">GET</spanx></c>
      <c><spanx style="verb">offerings</spanx></c>
      <c><spanx style="verb">search-offerings</spanx></c>
      <c><spanx style="verb">POST</spanx></c>
      <c><spanx style="verb">offerings/search</spanx></c>
      <c><spanx style="verb">get-offering</spanx></c>
      <c><spanx style="verb">GET</spanx></c>
      <c><spanx style="verb">offerings/{offering_id}</spanx></c>
</texttable>

<t>Query parameters can modify a request where an operation defines them. They are not part of Resource
Identity and <bcp14>MUST NOT</bcp14> be used to carry Collection or Offering identifiers.</t>

</section>
<section anchor="representation-selection"><name>Representation Selection</name>

<t>Every Collection and Offering operation supports the <spanx style="verb">representation</spanx> query parameter. Its value
<bcp14>MUST</bcp14> be <spanx style="verb">terse</spanx> or <spanx style="verb">full</spanx>. An absent parameter selects the operation default in the following table.</t>

<texttable>
      <ttcol align='left'>Operation identifier</ttcol>
      <ttcol align='left'>Default representation</ttcol>
      <c><spanx style="verb">list-collections</spanx></c>
      <c>Terse items</c>
      <c><spanx style="verb">search-collections</spanx></c>
      <c>Terse items</c>
      <c><spanx style="verb">get-collection</spanx></c>
      <c>Full Collection</c>
      <c><spanx style="verb">list-collection-offerings</spanx></c>
      <c>Terse items</c>
      <c><spanx style="verb">list-offerings</spanx></c>
      <c>Terse items</c>
      <c><spanx style="verb">search-offerings</spanx></c>
      <c>Terse items</c>
      <c><spanx style="verb">get-offering</spanx></c>
      <c>Full Offering</c>
</texttable>

<t><spanx style="verb">representation=terse</spanx> selects Terse Representations and <spanx style="verb">representation=full</spanx> selects Full
Representations regardless of the operation default. On a list or search operation, the selection
applies to every Collection or Offering item in the response, not to the page envelope. A request
<bcp14>MUST NOT</bcp14> contain more than one <spanx style="verb">representation</spanx> parameter. A Service <bcp14>MUST</bcp14> reject an unsupported or
repeated value with <spanx style="verb">400 Bad Request</spanx>.</t>

<t>The query parameter does not change Resource Identity. HTTP caches distinguish query-target variants
according to normal HTTP cache-key rules. Pagination and response limits apply independently of the
selected representation. An Agent requesting Full Representations from a list or search operation
<bcp14>MUST NOT</bcp14> assume that the Service will increase its page or response limits.</t>

</section>
<section anchor="operation-advertisement"><name>Operation Advertisement</name>

<t><spanx style="verb">operations</spanx> <bcp14>MUST</bcp14> be an array of no more than seven Operation Descriptors. Every descriptor <bcp14>MUST</bcp14>
contain exactly <spanx style="verb">name</spanx> and <spanx style="verb">authentication</spanx>. <spanx style="verb">name</spanx> is an operation identifier from the preceding
table and <bcp14>MUST</bcp14> be unique in the array. <spanx style="verb">authentication</spanx> is one of <spanx style="verb">not-required</spanx>, <spanx style="verb">optional</spanx>, or
<spanx style="verb">required</spanx>:</t>

<texttable>
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Meaning</ttcol>
      <c><spanx style="verb">not-required</spanx></c>
      <c>The operation is usable without Service authentication.</c>
      <c><spanx style="verb">optional</spanx></c>
      <c>The operation is usable anonymously; authentication can expand content.</c>
      <c><spanx style="verb">required</spanx></c>
      <c>The operation requires Service authentication before it can succeed.</c>
</texttable>

<t>An <spanx style="verb">optional</spanx> or <spanx style="verb">required</spanx> value requires the Service Document to advertise an enrollment protocol.
<spanx style="verb">optional</spanx> does not require every anonymous response to differ from an authenticated response. It
states that the operation supports both contexts and that authentication can affect the visible
catalog content.</t>

<t>An Agent <bcp14>MUST NOT</bcp14> invoke an ODP operation that the Service Document does not advertise. Every
conformant Service <bcp14>MUST</bcp14> advertise and implement <spanx style="verb">list-offerings</spanx> and <spanx style="verb">get-offering</spanx>; consequently,
the array contains at least two descriptors. The remaining operations are optional and are
implemented only when advertised.</t>

</section>
<section anchor="processing-limits"><name>Processing Limits</name>

<t>The decoded UTF-8 Service Document <bcp14>MUST NOT</bcp14> exceed 65,536 bytes or a JSON nesting depth of 8. String
and array limits in this section are measured after JSON decoding. A Service <bcp14>MUST</bcp14> produce a document
within every limit. An Agent <bcp14>MUST</bcp14> reject the entire document if a required member is missing, a
limit is exceeded, or the document is otherwise invalid; it <bcp14>MUST NOT</bcp14> act on a partially parsed
Service Document.</t>

<t>An Agent <bcp14>MUST</bcp14> follow no more than five redirects while retrieving the Service Document. Every
redirect target <bcp14>MUST</bcp14> have the same scheme, host, and effective port as the preceding request. The
Agent <bcp14>MUST</bcp14> reject cross-origin redirects, transport-security downgrades, and redirect loops.</t>

</section>
</section>
<section anchor="http-caching"><name>HTTP Caching</name>

<t>HTTP cache directives and validators are authoritative. When a response supplies no freshness
information, an SDK <bcp14>SHOULD</bcp14> use configurable fallback freshness lifetimes of four hours for Service
Documents, one hour for Collections, five minutes for Offerings, zero seconds for search responses,
one hour for Filter and Sort Definitions, and 24 hours for Attribute Schemas. Each resource class
<bcp14>MUST</bcp14> be configurable independently. A fallback does not override <spanx style="verb">Cache-Control</spanx>, <spanx style="verb">Expires</spanx>,
validators, or other HTTP caching semantics.</t>

<t>An Agent cache <bcp14>MUST</bcp14> partition anonymous responses from responses obtained with Service
authentication. It <bcp14>MUST NOT</bcp14> reuse an authenticated representation, page, schema, or capability
document for an anonymous request or for a different authentication context. This requirement
applies even when the URI and selected representation are identical.</t>

</section>
<section anchor="pagination"><name>Pagination</name>

<section anchor="page-envelope"><name>Page Envelope</name>

<t>Every successful list or search response is an ODP Top-Level Document containing <spanx style="verb">odp_version</spanx> and
<spanx style="verb">items</spanx>. <spanx style="verb">items</spanx> is an array and can be empty. A response containing another page <bcp14>MUST</bcp14> also contain
<spanx style="verb">next</spanx>. The final page <bcp14>MUST</bcp14> omit <spanx style="verb">next</spanx>; an empty <spanx style="verb">items</spanx> array alone does not prove that the
sequence ended.</t>

<t>A page <bcp14>MAY</bcp14> contain <spanx style="verb">auth_expands</spanx> with the only valid value <spanx style="verb">true</spanx>. Its presence states that
retrying the operation with acceptable Service authentication can expose additional items or
additional fields in returned items under the current query. It does not identify, count, or
describe protected content. A Service <bcp14>MUST</bcp14> omit the member rather than serialize <spanx style="verb">false</spanx>.</t>

<t><spanx style="verb">next</spanx> is a Resource Reference of no more than 2048 ASCII characters. It <bcp14>MUST</bcp14> resolve to the same
origin as the initial operation. An Agent <bcp14>MUST</bcp14> preserve it exactly and <bcp14>MUST NOT</bcp14> decode, modify,
construct, or derive behavior from its path, query, or embedded continuation token.</t>

<t>ODP does not define previous-page traversal, numeric page indexes, offsets, or total-result counts.
An Agent that needs to restart traversal repeats the initial operation request.</t>

</section>
<section anchor="continuation-requests"><name>Continuation Requests</name>

<t>An Agent retrieves <spanx style="verb">next</spanx> with <spanx style="verb">GET</spanx>. The response is another page envelope governed by the same
representation and access context. Only omission of <spanx style="verb">next</spanx> marks the end of the sequence. A
continuation response <bcp14>MUST</bcp14> advance traversal and <bcp14>MUST NOT</bcp14> return the request URL as its own <spanx style="verb">next</spanx>.</t>

<t>The Service chooses the continuation URL and preserves every input needed to continue the original
operation, including representation, filters, search terms, sorting, access context, and page-size
policy. The Agent does not repeat the original request body or reconstruct those inputs. A
continuation link from a <spanx style="verb">POST</spanx> search is still retrieved with <spanx style="verb">GET</spanx>.</t>

<t>Every initial list and search operation accepts <spanx style="verb">limit</spanx>, an integer from 1 through 100 that requests
the maximum number of items per page. <spanx style="verb">GET</spanx> operations carry it as a query parameter; <spanx style="verb">POST</spanx> search
operations carry it as a top-level request-body member. A Service <bcp14>MAY</bcp14> return fewer items than
requested. A Service chooses its default page size when <spanx style="verb">limit</spanx> is absent. An Agent-oriented SDK
<bcp14>SHOULD</bcp14> use a configurable initial page size with a default of 50 and <bcp14>MAY</bcp14> request fewer items when
its caller's remaining overall result limit is smaller.</t>

</section>
<section anchor="continuation-semantics"><name>Continuation Semantics</name>

<t>A continuation sequence contains a stable logical sequence of Resource Identities and their order.
Within one traversal, the Service <bcp14>MUST NOT</bcp14> change that sequence or return the same Resource Identity
more than once. Resource representations can reflect changes made after the initial request, but
membership and ordering in the continuation sequence remain stable. An item's <spanx style="verb">id</spanx> is the final
deterministic ordering tie-breaker.</t>

<t>Each <spanx style="verb">next</spanx> link <bcp14>MUST</bcp14> remain usable for at least one hour after issuance. A Service <bcp14>MAY</bcp14> choose a
longer lifetime. An expired continuation <bcp14>MUST NOT</bcp14> silently restart traversal; the Service returns an
expired-continuation problem, and an Agent-oriented SDK reports that failure to its caller.</t>

<t>The continuation link is an interface contract, not a server storage model. Its path or query <bcp14>MAY</bcp14>
contain a self-contained authenticated cursor or a reference to server-managed state. A stateless
cursor can carry a query digest, snapshot or revision, keyset boundary, access-context binding, and
expiration. Clients cannot distinguish stateless and stateful continuation and <bcp14>MUST</bcp14> treat both
identically.</t>

<t>A self-contained cursor embedded in <spanx style="verb">next</spanx> <bcp14>MUST</bcp14> be integrity protected. It <bcp14>MUST NOT</bcp14> disclose
credentials, private catalog data, access-policy details, or other sensitive state. A Service <bcp14>SHOULD</bcp14>
encrypt a self-contained cursor whose continuation state is confidential. A Service <bcp14>MUST</bcp14> validate
every cursor as untrusted input and <bcp14>MUST NOT</bcp14> treat possession of a cursor as authorization.</t>

</section>
<section anchor="agent-iteration"><name>Agent Iteration</name>

<t>An Agent-oriented SDK <bcp14>SHOULD</bcp14> expose list and search results as asynchronous iterables that retrieve
continuation pages automatically. Its ordinary item interface <bcp14>SHOULD</bcp14> yield Collection or Offering
representations rather than page envelopes or continuation links. A lower-level page interface <bcp14>MAY</bcp14>
expose <spanx style="verb">items</spanx> and <spanx style="verb">next</spanx> for callers that require explicit page control.</t>

<t>An overall caller result limit is independent of the Service page <spanx style="verb">limit</spanx>. Reaching the caller's
limit stops local iteration and does not imply that the Service sequence ended. An SDK <bcp14>MUST NOT</bcp14>
fetch another page after the caller stops iteration.</t>

</section>
<section anchor="page-caching-and-conditional-requests"><name>Page Caching and Conditional Requests</name>

<t>Each page request has its own HTTP cache key and validators under <xref target="RFC9110"/> and <xref target="RFC9111"/>. For
<spanx style="verb">GET</spanx> pages, a Service <bcp14>SHOULD</bcp14> provide an entity tag and honor conditional retrieval such as
<spanx style="verb">If-None-Match</spanx>; an unchanged conditional <spanx style="verb">GET</spanx> returns <spanx style="verb">304 Not Modified</spanx>. Collection and Offering
page fallbacks use their applicable resource-class freshness lifetime. Filter Definition pages use
the Filter Definition fallback.</t>

<t>Search responses, including their <spanx style="verb">GET</spanx> continuation pages, retain the zero-second fallback
freshness lifetime. A <spanx style="verb">POST</spanx> search response is cacheable only when explicit HTTP semantics permit
it. A continuation link does not override cache directives, create a shared-cache authorization, or
make a private response public.</t>

</section>
<section anchor="catalog-discovery"><name>Catalog Discovery</name>

<t>Collections are optional navigation resources. A Service can expose Offering search without
Collections, Collection search without a hierarchy, or both. An Offering can belong to zero, one, or
multiple Collections.</t>

<t>List, search, and retrieval operations use the representation defaults and overrides defined in
Representation Selection. An Agent obtains an individual Full Representation by applying the terse
item's <spanx style="verb">id</spanx> to the applicable fixed retrieval operation.</t>

</section>
</section>
<section anchor="terse-and-full-representations"><name>Terse and Full Representations</name>

<section anchor="stable-field-placement"><name>Stable Field Placement</name>

<t>A Terse Representation and its corresponding Full Representation describe the same Resource
Identity. A field has the same name, location, type, and semantics in both representations. A
Service <bcp14>MUST NOT</bcp14> move Service-defined attributes or core fields into a separate preview, summary, or
representation-specific container.</t>

<t>Every Terse Representation <bcp14>MUST</bcp14> contain <spanx style="verb">id</spanx> and <spanx style="verb">name</spanx>. Other fields are optional in a Terse
Representation unless their resource contract requires them. A Service selects which optional fields
to include according to the usefulness and cost of those fields. It <bcp14>MAY</bcp14> include every field from the
Full Representation. A field present in both representations <bcp14>MUST</bcp14> have equivalent meaning; volatile
values <bcp14>MAY</bcp14> differ because the representations were generated at different times.</t>

<t>A Terse Representation omits fields or nested object members; it does not silently truncate an
included scalar or array. An included object can omit members recursively. A field whose own
contract explicitly defines truncation, pagination, or summary semantics follows that contract.</t>

<t>A Full Representation <bcp14>MUST</bcp14> contain every ODP field available for that resource under the request's
current access policy. This completeness requirement does not require inapplicable optional fields,
fields withheld by access policy, or data that the Service does not possess.</t>

<t>A Collection or Offering representation <bcp14>MAY</bcp14> contain <spanx style="verb">auth_expands</spanx> with the only valid value <spanx style="verb">true</spanx>.
Its presence states that retrying its retrieval with acceptable Service authentication can expose
additional fields for that resource. The member does not identify protected fields, promise access
to a particular principal, or replace a live authentication challenge. A Service <bcp14>MUST</bcp14> omit the
member rather than serialize <spanx style="verb">false</spanx>.</t>

</section>
<section anchor="detail-fields"><name>Detail Fields</name>

<t>A Terse Representation <bcp14>MAY</bcp14> contain <spanx style="verb">detail_fields</spanx>. A Full Representation <bcp14>MUST NOT</bcp14> contain
<spanx style="verb">detail_fields</spanx>. The value is a non-empty array of no more than 32 unique JSON Pointer strings as
defined by <xref target="RFC6901"/>. Each pointer <bcp14>MUST</bcp14> contain no more than 256 printable ASCII characters, <bcp14>MUST</bcp14>
begin with <spanx style="verb">/</spanx>, and <bcp14>MUST NOT</bcp14> use the URI fragment representation of a JSON Pointer.</t>

<t>Each pointer identifies a field present in the corresponding Full Representation and absent from the
Terse Representation. A pointer to an omitted object or array covers its complete subtree. Top-level
document metadata inherited by an embedded Terse Representation, including <spanx style="verb">odp_version</spanx>, is not a
detail field.</t>

<t>When <spanx style="verb">detail_fields</spanx> is present, it <bcp14>MUST</bcp14> exhaustively identify the minimal omitted field subtrees.
When an exhaustive list would exceed a limit in this section, the Service <bcp14>MUST</bcp14> omit <spanx style="verb">detail_fields</spanx>
instead of returning a partial list. Absence of <spanx style="verb">detail_fields</spanx> makes no claim about whether the
Full Representation contains additional fields.</t>

<t><spanx style="verb">detail_fields</spanx> advertises only what an Agent obtains by retrieving the Full Representation. It does
not advertise or enable field projection, grant access to the Full Representation, or override a
live authentication or payment challenge. A Service <bcp14>MUST NOT</bcp14> disclose protected field existence
through <spanx style="verb">detail_fields</spanx> when the current principal is not permitted to learn that information.</t>

</section>
<section anchor="no-field-projection"><name>No Field Projection</name>

<t>ODP version 1.0 does not define a request syntax for selecting arbitrary resource fields. An Agent
<bcp14>MUST NOT</bcp14> infer field-projection support from <spanx style="verb">detail_fields</spanx>, an Attribute Schema, or an unknown
query parameter. A future compatible revision can advertise and define projection independently.</t>

<t>Collections and Offerings <bcp14>MAY</bcp14> include a <spanx style="verb">web_url</spanx> link for a human-facing browser experience. The
browser representation is informative for Agent operation and does not replace the machine-readable
ODP resource.</t>

</section>
<section anchor="resource-images"><name>Resource Images</name>

<t>A Collection or Offering <bcp14>MAY</bcp14> contain <spanx style="verb">images</spanx>, a non-empty ordered array of no more than 16 image
descriptors. The first descriptor identifies the primary image. Each descriptor <bcp14>MUST</bcp14> contain <spanx style="verb">src</spanx>,
a Resource Reference, and <bcp14>MAY</bcp14> contain <spanx style="verb">alt</spanx>, <spanx style="verb">height</spanx>, <spanx style="verb">type</spanx>, and <spanx style="verb">width</spanx>. Two descriptors in one
array <bcp14>MUST NOT</bcp14> contain the same <spanx style="verb">src</spanx> value.</t>

<t><spanx style="verb">alt</spanx>, when present, is non-empty alternative text of no more than 1024 Unicode code points in the
language of the containing representation. <spanx style="verb">height</spanx> and <spanx style="verb">width</spanx>, when present, are positive integer
intrinsic dimensions in CSS pixels no greater than 65535. <spanx style="verb">type</spanx>, when present, is a media-type hint
of <spanx style="verb">image/avif</spanx>, <spanx style="verb">image/jpeg</spanx>, <spanx style="verb">image/png</spanx>, <spanx style="verb">image/svg+xml</spanx>, or <spanx style="verb">image/webp</spanx>.</t>

<t>A Terse Representation <bcp14>MAY</bcp14> include only the primary image even when the Full Representation contains
additional images. This is the sole summary behavior of <spanx style="verb">images</spanx>; descriptors themselves <bcp14>MUST NOT</bcp14> be
partially serialized. Omitting <spanx style="verb">images</spanx> from a Terse Representation makes no claim that the Full
Representation has no images.</t>

<t>Image retrieval is anonymous. A client <bcp14>MUST NOT</bcp14> attach AEP credentials, payment credentials,
cookies, or caller authorization fields. The response <spanx style="verb">Content-Type</spanx> is authoritative. When an
advertised <spanx style="verb">type</spanx> differs from the response media-type essence or the response is not a supported
image type, a client rejects only that image. Image content is untrusted input and remains subject
to the client's network, decoding, rendering, and resource limits.</t>

</section>
</section>
<section anchor="collections"><name>Collections</name>

<section anchor="collection-search"><name>Collection Search</name>

<t>The <spanx style="verb">search-collections</spanx> operation accepts an ODP Top-Level Document containing <spanx style="verb">odp_version</spanx> and at
least one of <spanx style="verb">query</spanx> or <spanx style="verb">parent_id</spanx>. It <bcp14>MAY</bcp14> also contain <spanx style="verb">limit</spanx>. A request containing neither
search criterion is invalid; an Agent uses <spanx style="verb">list-collections</spanx> for an unconstrained sequence.</t>

<t><spanx style="verb">query</spanx> is a non-empty string of no more than 256 Unicode code points and <bcp14>MUST</bcp14> contain at least one
non-whitespace character. It conveys text-search intent to the Service. The Service owns query
interpretation, matching, indexing, and relevance. It can use lexical, full-text, language-aware,
semantic, or other matching over Collection metadata visible under the request's access and language
context. ODP does not define tokenization, stemming, case folding, searchable fields, or a portable
relevance algorithm. An Agent <bcp14>MUST NOT</bcp14> assume that the same query produces equivalent matches at
different Services.</t>

<t><spanx style="verb">parent_id</spanx> defines an exact hierarchy constraint. An omitted <spanx style="verb">parent_id</spanx> applies no hierarchy
constraint. A JSON <spanx style="verb">null</spanx> value selects root Collections, which omit <spanx style="verb">parent_ids</spanx>. A Local Resource
Identifier selects Collections whose <spanx style="verb">parent_ids</spanx> contains that identifier, meaning its direct
children. It does not select the named Collection or recursively select descendants.</t>

<t>When both <spanx style="verb">query</spanx> and <spanx style="verb">parent_id</spanx> are present, a Collection <bcp14>MUST</bcp14> satisfy both criteria. The
<spanx style="verb">parent_id</spanx> predicate retains its exact protocol-defined meaning regardless of how the Service
interprets <spanx style="verb">query</spanx>.</t>

<t>The Service chooses result ordering. It can use relevance, curated taxonomy order, popularity, or
another Service policy, and ODP version 1.0 defines no client-selected Collection sort. The common
pagination contract requires the chosen logical sequence to remain stable during one traversal and
uses <spanx style="verb">id</spanx> as the final ordering tie-breaker. An Agent <bcp14>MUST NOT</bcp14> reorder results before exposing them
unless its caller explicitly requests local presentation ordering.</t>

<t>The successful response is a page envelope containing Collection Representations selected by the
common <spanx style="verb">representation</spanx> query parameter. No matches produce <spanx style="verb">200 OK</spanx> with an empty <spanx style="verb">items</spanx> array.
Malformed request bodies or unsupported member values produce an <spanx style="verb">INVALID_REQUEST</spanx> problem. The
request and response use <spanx style="verb">application/odp+json</spanx>.</t>

</section>
<section anchor="collection-envelope"><name>Collection Envelope</name>

<t>A Full Collection Representation <bcp14>MUST</bcp14> contain <spanx style="verb">odp_version</spanx>, <spanx style="verb">id</spanx>, and <spanx style="verb">name</spanx>. It <bcp14>MAY</bcp14> contain
<spanx style="verb">description</spanx>, <spanx style="verb">images</spanx>, <spanx style="verb">language</spanx>, <spanx style="verb">localizations</spanx>, <spanx style="verb">parent_ids</spanx>, <spanx style="verb">web_url</spanx>, and
<spanx style="verb">search_capabilities</spanx>. Other Collection capabilities are defined by the operation or feature that
uses them. An optional field with no applicable or available value is omitted rather than serialized
as an empty value.</t>

<t><spanx style="verb">language</spanx> and <spanx style="verb">localizations</spanx> have the syntax and meaning defined for Service Document language
metadata, but describe this Collection. They are omitted when the Collection uses the applicable
language metadata inherited from its containing response or Service Document. Collection retrieval
uses the same <spanx style="verb">Accept-Language</spanx>, Lookup, fallback, <spanx style="verb">Content-Language</spanx>, <spanx style="verb">Vary</spanx>, and entity-tag rules
as Service Document retrieval.</t>

<t>When present, <spanx style="verb">parent_ids</spanx> <bcp14>MUST</bcp14> be a non-empty array of unique Local Resource Identifiers. Every
identifier names a direct parent Collection at the same Service. An omitted <spanx style="verb">parent_ids</spanx> identifies
a root Collection. A Service can publish multiple roots or a flat set in which every Collection is a
root.</t>

<t>A Terse Collection follows the common Terse Representation contract. It <bcp14>MUST</bcp14> contain <spanx style="verb">id</spanx> and
<spanx style="verb">name</spanx>; it can omit any other optional terse field, including <spanx style="verb">parent_ids</spanx>, and can use
<spanx style="verb">detail_fields</spanx> to identify fields available through full retrieval.</t>

</section>
<section anchor="hierarchy"><name>Hierarchy</name>

<t>Collection parent relationships form a directed acyclic graph. A Collection <bcp14>MAY</bcp14> have more than one
parent. A Collection <bcp14>MUST NOT</bcp14> name itself as a parent, every parent identifier <bcp14>MUST</bcp14> resolve to a
Collection visible under the same access context, and following parent relationships <bcp14>MUST NOT</bcp14>
produce a cycle.</t>

<t>The maximum path from a Collection through successive parents is 32 edges. A conforming Service <bcp14>MUST
NOT</bcp14> publish a deeper hierarchy. Breadth and parent-array cardinality are governed by the common
resource and response limits rather than the depth limit.</t>

<t><spanx style="verb">parent_ids</spanx> is the sole serialized source of hierarchy edges. Collections do not duplicate edges in
a <spanx style="verb">child_ids</spanx> field. An Agent discovers direct children through Collection search constrained by the
parent identifier. The Collection search contract defines that constraint.</t>

<t>An Agent traversing hierarchy data <bcp14>MUST</bcp14> track visited Resource Identities. When an edge closes a
cycle, exceeds the depth limit, names the current Collection, or names a missing Collection, the
Agent <bcp14>MUST</bcp14> ignore that edge. The invalid edge does not invalidate unrelated Collections, hierarchy
edges, Offering memberships, or operations.</t>

</section>
<section anchor="offering-membership"><name>Offering Membership</name>

<t>When present, <spanx style="verb">collection_ids</spanx> <bcp14>MUST</bcp14> be a non-empty array of unique Local Resource Identifiers. Each
identifier names a Collection at the same Service in which the Offering is a direct member. An
omitted <spanx style="verb">collection_ids</spanx> means that the Offering has no Collection membership. A Terse Offering <bcp14>MAY</bcp14>
omit <spanx style="verb">collection_ids</spanx> under the common Terse Representation rules.</t>

<t>The <spanx style="verb">list-collection-offerings</spanx> operation is the inverse query over this relationship: it returns
Offerings whose <spanx style="verb">collection_ids</spanx> contains the requested Collection identifier. A Service <bcp14>MUST</bcp14> keep
the operation result consistent with the Offering membership it publishes.</t>

<t>Hierarchy and membership are independent. Membership in a child Collection does not imply membership
in any ancestor Collection. ODP version 1.0 does not define implicit descendant expansion. Offering
search can request explicit descendant inclusion without changing direct membership semantics.</t>

<t>Every <spanx style="verb">collection_ids</spanx> entry <bcp14>MUST</bcp14> resolve to a Collection visible under the same access context. An
Agent <bcp14>MUST</bcp14> ignore a missing membership edge without rejecting the Offering or unrelated memberships.</t>

</section>
<section anchor="no-synthetic-collection-identity"><name>No Synthetic Collection Identity</name>

<t>ODP does not define an "All Offerings" Collection, reserve a Collection identifier for that purpose,
or assign Resource Identity to a client-side convenience view. An Agent uses <spanx style="verb">list-offerings</spanx> for
the complete accessible Offering sequence. A Service can publish an ordinary Collection with
equivalent business meaning, and an SDK can label <spanx style="verb">list-offerings</spanx> for user-interface convenience
without creating an ODP resource.</t>

</section>
</section>
<section anchor="offerings"><name>Offerings</name>

<section anchor="offering-search"><name>Offering Search</name>

<t>The <spanx style="verb">search-offerings</spanx> operation accepts an ODP Top-Level Document containing <spanx style="verb">odp_version</spanx> and at
least one of <spanx style="verb">query</spanx> or <spanx style="verb">filters</spanx>. It <bcp14>MAY</bcp14> also contain <spanx style="verb">collection_id</spanx>, <spanx style="verb">include_descendants</spanx>,
<spanx style="verb">sort</spanx>, <spanx style="verb">refinements</spanx>, and <spanx style="verb">limit</spanx>. An Agent uses <spanx style="verb">list-offerings</spanx> for an unconstrained sequence and
<spanx style="verb">list-collection-offerings</spanx> for the unconstrained direct members of one Collection.</t>

<t><spanx style="verb">query</spanx> is a non-empty string of no more than 256 Unicode code points and <bcp14>MUST</bcp14> contain at least one
non-whitespace character. It conveys text-search intent to the Service. The Service owns query
interpretation, matching, indexing, and relevance. It can use lexical, full-text, language-aware,
semantic, or other matching over Offering metadata and Service-defined attributes visible under the
request's access and language context. ODP does not define tokenization, stemming, case folding,
searchable fields, or a portable relevance algorithm. An Agent <bcp14>MUST NOT</bcp14> assume that the same query
produces equivalent matches at different Services.</t>

<t><spanx style="verb">filters</spanx> and <spanx style="verb">sort</spanx> use the Filter Expression and Sort Definition contracts in this document. When
<spanx style="verb">query</spanx> and <spanx style="verb">filters</spanx> are both present, an Offering <bcp14>MUST</bcp14> satisfy the Service-interpreted query and
every Filter Expression. An omitted <spanx style="verb">sort</spanx> preserves the Service's preferred ordering.</t>

<t><spanx style="verb">collection_id</spanx> is a Local Resource Identifier that constrains results to Offerings in the named
Collection. The Collection <bcp14>MUST</bcp14> resolve under the current access context. Otherwise, the Service
returns <spanx style="verb">404 Not Found</spanx> with a <spanx style="verb">NOT_FOUND</spanx> problem. A Service <bcp14>MAY</bcp14> use the same response when
revealing that an inaccessible Collection exists would disclose protected information.</t>

<t><spanx style="verb">include_descendants</spanx> is a Boolean and <bcp14>MUST NOT</bcp14> appear without <spanx style="verb">collection_id</spanx>. Its default is
<spanx style="verb">false</spanx>. When false or omitted, an Offering matches the Collection constraint only when its
<spanx style="verb">collection_ids</spanx> contains <spanx style="verb">collection_id</spanx>. When true, an Offering matches when it is a direct member
of the named Collection or any Collection reachable by following child relationships from it. This
expansion does not alter or imply Offering membership.</t>

<t>Descendant expansion observes the common Collection graph depth and invalid-edge rules. A Collection
reachable through multiple paths is processed once. An Offering belonging to multiple included
Collections appears at most once in the result sequence.</t>

<t>The Service chooses result ordering. It can use relevance, curated ranking, popularity, or another
Service policy, and ODP version 1.0 defines no client-selected Offering sort. The common pagination
contract requires the chosen logical sequence to remain stable during one traversal and uses <spanx style="verb">id</spanx> as
the final ordering tie-breaker. An Agent <bcp14>MUST NOT</bcp14> reorder results before exposing them unless its
caller explicitly requests local presentation ordering.</t>

<t>The successful response is a page envelope containing Offering Representations selected by the
common <spanx style="verb">representation</spanx> query parameter. No matches produce <spanx style="verb">200 OK</spanx> with an empty <spanx style="verb">items</spanx> array.
Malformed request bodies or unsupported member values produce an <spanx style="verb">INVALID_REQUEST</spanx> problem. The
request and response use <spanx style="verb">application/odp+json</spanx>.</t>

<t>When requested, the initial response <bcp14>MAY</bcp14> also contain the bounded Refinement Groups defined below. A
continuation response <bcp14>MUST</bcp14> omit <spanx style="verb">refinements</spanx>. Refinements describe the complete logical result set
for the initial request, not only the Offerings serialized on its first page.</t>

</section>
<section anchor="offering-envelope"><name>Offering Envelope</name>

<t>A Full Offering Representation <bcp14>MUST</bcp14> contain <spanx style="verb">odp_version</spanx>, <spanx style="verb">id</spanx>, and <spanx style="verb">name</spanx>. It <bcp14>MAY</bcp14> contain
<spanx style="verb">description</spanx>, <spanx style="verb">images</spanx>, <spanx style="verb">language</spanx>, <spanx style="verb">localizations</spanx>, <spanx style="verb">web_url</spanx>, <spanx style="verb">collection_ids</spanx>, <spanx style="verb">price</spanx>,
<spanx style="verb">schema</spanx>, <spanx style="verb">attributes</spanx>, and <spanx style="verb">actions</spanx>. An optional field with no applicable or available value is
omitted. In particular, a Service <bcp14>MUST NOT</bcp14> serialize empty <spanx style="verb">attributes</spanx>, <spanx style="verb">collection_ids</spanx>, or
<spanx style="verb">actions</spanx> merely to declare that the capability is unused.</t>

<t><spanx style="verb">language</spanx> and <spanx style="verb">localizations</spanx> have the syntax and meaning defined for Service Document language
metadata, but describe this Offering. They are omitted when the Offering uses the applicable
language metadata inherited from its containing response or Service Document. A containing response
can establish language metadata for its embedded items. The nearest metadata in the order Offering,
containing response, then Service Document applies. Offering retrieval uses the same
<spanx style="verb">Accept-Language</spanx>, Lookup, fallback, <spanx style="verb">Content-Language</spanx>, <spanx style="verb">Vary</spanx>, and entity-tag rules as Service
Document retrieval. <spanx style="verb">Content-Language</spanx> identifies the language actually selected for the HTTP
representation.</t>

<t>A Terse Offering follows the common Terse Representation contract. It <bcp14>MUST</bcp14> contain <spanx style="verb">id</spanx> and <spanx style="verb">name</spanx>.
It <bcp14>MAY</bcp14> include <spanx style="verb">price</spanx> and any other optional terse field except <spanx style="verb">actions</spanx>. Absence of <spanx style="verb">web_url</spanx>,
<spanx style="verb">price</spanx>, <spanx style="verb">schema</spanx>, <spanx style="verb">attributes</spanx>, or another optional field from a Terse Offering makes no claim that
the field is absent from the Full Offering. <spanx style="verb">detail_fields</spanx> can identify fields available through
full retrieval.</t>

</section>
<section anchor="service-defined-attributes-and-schema"><name>Service-Defined Attributes and Schema</name>

<t><spanx style="verb">attributes</spanx>, when present, <bcp14>MUST</bcp14> be a non-empty JSON object containing Service-defined Offering
data. An Offering that contains <spanx style="verb">attributes</spanx> <bcp14>MUST</bcp14> also contain <spanx style="verb">schema</spanx>. A Service <bcp14>MUST</bcp14> omit both
fields when it has no Service-defined attributes for the Offering.</t>

<t><spanx style="verb">schema</spanx> identifies a JSON Schema Draft 2020-12 document that validates the complete <spanx style="verb">attributes</spanx>
object. It contains exactly one member, <spanx style="verb">url</spanx>, a Resource Reference. Multiple Offerings <bcp14>MAY</bcp14> share
one Attribute Schema. HTTP response metadata and the schema document itself describe the retrieved
resource; the ODP reference does not repeat a media type, version, digest, or caching metadata.</t>

<t>When a Terse Offering contains <spanx style="verb">attributes</spanx>, it <bcp14>MUST</bcp14> also contain <spanx style="verb">schema</spanx>. The Attribute Schema
describes the complete Full Offering attributes. The recursively omitted members of terse
<spanx style="verb">attributes</spanx> can be identified through <spanx style="verb">detail_fields</spanx>.</t>

</section>
<section anchor="attribute-schema-retrieval-and-processing"><name>Attribute Schema Retrieval and Processing</name>

<t>An Agent resolves <spanx style="verb">schema.url</spanx> against the Offering response URL and retrieves it with <spanx style="verb">GET</spanx>. It
<bcp14>SHOULD</bcp14> send <spanx style="verb">Accept: application/schema+json</spanx>. A successful response <bcp14>MUST</bcp14> have a <spanx style="verb">Content-Type</spanx>
whose media-type essence is <spanx style="verb">application/schema+json</spanx> and <bcp14>MUST</bcp14> contain a JSON Schema Draft 2020-12
document. A missing, malformed, differently typed, or invalid document is an unusable Attribute
Schema.</t>

<t>An Attribute Schema is an ordinary mutable HTTP resource. HTTP cache directives and validators are
authoritative, and the Attribute Schema fallback defined in HTTP Caching applies when the response
provides no freshness information. Neither the schema URL nor a previously retrieved schema makes
the schema immutable. An Agent revalidates or refreshes it according to ordinary HTTP caching
semantics.</t>

<t>The schema <bcp14>MUST</bcp14> declare the Draft 2020-12 meta-schema through <spanx style="verb">$schema</spanx>. <spanx style="verb">$id</spanx>, when present, and
references have their standard JSON Schema meanings. An Agent <bcp14>MUST</bcp14> process references needed to
interpret or validate the instance. If the schema declares a required vocabulary the Agent does not
support, the Attribute Schema is unsupported. Optional vocabularies and unknown keywords are handled
according to JSON Schema Draft 2020-12.</t>

<t>An Agent-oriented SDK <bcp14>SHOULD</bcp14> resolve and cache referenced schema resources and provide its caller a
locally complete schema representation. The caller <bcp14>MUST NOT</bcp14> be required to perform additional
network requests merely to interpret the returned Offering. Retrieval limits and protections apply
to the complete reference graph rather than independently granting every reference unbounded network
access.</t>

<t>A Service <bcp14>MUST</bcp14> validate the complete <spanx style="verb">attributes</spanx> object in a Full Offering against its Attribute
Schema. An Agent <bcp14>SHOULD</bcp14> validate Full Offering attributes before relying on them. Terse Offering
attributes are a partial view of the Full Offering instance and <bcp14>MUST NOT</bcp14> be validated as though they
were the complete instance. Every included terse value retains the type and meaning assigned by the
Attribute Schema.</t>

<t>An unavailable, invalid, unsupported, or non-matching Attribute Schema makes the Offering's
<spanx style="verb">attributes</spanx> uninterpretable. It does not invalidate the Offering's identity, core descriptive
fields, Price Preview, <spanx style="verb">web_url</spanx>, Collection membership, or actions. Agent-oriented SDKs <bcp14>SHOULD</bcp14> omit
uninterpretable attributes from their normalized result and report a scoped issue separately. The
SDK result shape is an implementation contract and does not add an <spanx style="verb">issues</spanx> member to the ODP wire
representation.</t>

</section>
<section anchor="price-preview"><name>Price Preview</name>

<t>An Offering <bcp14>MAY</bcp14> contain <spanx style="verb">price</spanx>, a discovery-time summary that helps an Agent evaluate and compare
Offerings before invoking a subsequent operation. Absence of <spanx style="verb">price</spanx> means that the Service has not
advertised a price. It <bcp14>MUST NOT</bcp14> be interpreted as free.</t>

<t>Every Price Preview contains a <spanx style="verb">type</spanx> discriminator. This specification defines <spanx style="verb">free</spanx>, <spanx style="verb">fixed</spanx>,
<spanx style="verb">range</spanx>, <spanx style="verb">starting_at</spanx>, <spanx style="verb">metered</spanx>, and <spanx style="verb">quote</spanx>. Monetary values <bcp14>MUST</bcp14> be non-negative decimal strings
and <bcp14>MUST NOT</bcp14> be represented as JSON numbers. <spanx style="verb">currency</spanx> is the display denomination of the summary;
it does not select a payment protocol, network, rail, or settlement asset.</t>

<texttable>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required members</ttcol>
      <ttcol align='left'>Meaning</ttcol>
      <c><spanx style="verb">free</spanx></c>
      <c><spanx style="verb">type</spanx></c>
      <c>No price is required.</c>
      <c><spanx style="verb">fixed</spanx></c>
      <c><spanx style="verb">type</spanx>, <spanx style="verb">amount</spanx>, <spanx style="verb">currency</spanx></c>
      <c>One advertised display price.</c>
      <c><spanx style="verb">range</spanx></c>
      <c><spanx style="verb">type</spanx>, <spanx style="verb">minimum</spanx>, <spanx style="verb">maximum</spanx>, <spanx style="verb">currency</spanx></c>
      <c>An inclusive advertised display range.</c>
      <c><spanx style="verb">starting_at</spanx></c>
      <c><spanx style="verb">type</spanx>, <spanx style="verb">amount</spanx>, <spanx style="verb">currency</spanx></c>
      <c>The lowest advertised starting price.</c>
      <c><spanx style="verb">metered</spanx></c>
      <c><spanx style="verb">type</spanx>, <spanx style="verb">amount</spanx>, <spanx style="verb">currency</spanx>, <spanx style="verb">unit</spanx></c>
      <c>An advertised rate per Service-defined unit.</c>
      <c><spanx style="verb">quote</spanx></c>
      <c><spanx style="verb">type</spanx></c>
      <c>A later operation determines the price.</c>
</texttable>

<t>For <spanx style="verb">range</spanx>, <spanx style="verb">minimum</spanx> <bcp14>MUST</bcp14> be less than or equal to <spanx style="verb">maximum</spanx>. A Price Preview excludes taxes,
shipping, discounts, buyer-specific terms, fees, availability, and final quote results unless the
Offering explicitly states otherwise outside the core price object.</t>

<t>A live MPP or x402 challenge, quote response, or other subsequent operation is authoritative for the
amount and settlement choices presented at execution time. A Price Preview <bcp14>MUST NOT</bcp14> be treated as a
payment authorization or settlement requirement. If an authoritative subsequent value differs from
the Price Preview, an Agent <bcp14>MUST</bcp14> use and present the authoritative value rather than silently
relying on the preview.</t>

<t>An Agent encountering an unknown Price Preview <spanx style="verb">type</spanx> treats only that <spanx style="verb">price</spanx> object as
unsupported. The Offering and its unrelated fields remain usable. This permits compatible addition
of future Price Preview discriminators.</t>

</section>
<section anchor="actions"><name>Actions</name>

<t>A Full Offering <bcp14>MAY</bcp14> contain <spanx style="verb">actions</spanx>, a non-empty array of operations that can follow discovery. An
Offering with no advertised action omits the field. A Terse Offering <bcp14>MUST NOT</bcp14> contain <spanx style="verb">actions</spanx>;
when permitted by the common representation rules it can advertise <spanx style="verb">/actions</spanx> through
<spanx style="verb">detail_fields</spanx>.</t>

<t>An Action describes an executable HTTP transition associated with its Offering. It does not define a
commerce workflow, payment behavior, or the domain-specific shape of the operation's successful
result. An Action has required <spanx style="verb">authentication</spanx>, <spanx style="verb">id</spanx>, and <spanx style="verb">rel</spanx> members, can contain <spanx style="verb">description</spanx>,
and contains exactly one of <spanx style="verb">http</spanx> or <spanx style="verb">openapi</spanx>. An Offering contains at most 16 Actions, and their
<spanx style="verb">id</spanx> values <bcp14>MUST</bcp14> be unique within that Offering. Action identifiers use the Local Resource
Identifier syntax and remain stable while the Action exists on that Offering.</t>

<t><spanx style="verb">authentication</spanx> is <spanx style="verb">not-required</spanx>, <spanx style="verb">optional</spanx>, or <spanx style="verb">required</spanx> and has the same meanings as on an
Operation Descriptor, applied to execution of that Action at the Action target. The Action target
remains the authority for execution semantics; OpenAPI metadata is optional enrichment and is not
required to express authentication or payment behavior.</t>

<t><spanx style="verb">rel</spanx> states the broad result sought from the operation. It is a lower-case token of at most 64
characters using letters, digits, and internal hyphens. This specification defines five values:</t>

<texttable>
      <ttcol align='left'>Relation</ttcol>
      <ttcol align='left'>Meaning</ttcol>
      <c><spanx style="verb">download</spanx></c>
      <c>Retrieve a downloadable representation, whether free or paid.</c>
      <c><spanx style="verb">purchase</spanx></c>
      <c>Complete a one-time acquisition.</c>
      <c><spanx style="verb">quote</spanx></c>
      <c>Obtain current terms without completing an acquisition.</c>
      <c><spanx style="verb">reserve</spanx></c>
      <c>Hold or allocate a resource.</c>
      <c><spanx style="verb">invoke</spanx></c>
      <c>Execute an online capability and obtain its result.</c>
</texttable>

<t><spanx style="verb">free</spanx> is a Price Preview type and is not an Action relation. <spanx style="verb">download</spanx> does not imply that an
Offering is free. Recurring subscription behavior is not defined by ODP 1.0. An Agent encountering
an unknown <spanx style="verb">rel</spanx> retains the Action but <bcp14>MUST NOT</bcp14> automatically select it based on an assumed
meaning. A caller can explicitly select the Action by <spanx style="verb">id</spanx>.</t>

<section anchor="compact-http-target"><name>Compact HTTP Target</name>

<t><spanx style="verb">http</spanx> describes an operation that does not need a complete interface description. It contains a
required Resource Reference <spanx style="verb">href</spanx> and a required <spanx style="verb">method</spanx> of <spanx style="verb">GET</spanx> or <spanx style="verb">POST</spanx>. It can contain a
non-empty <spanx style="verb">request</spanx> object and a non-empty <spanx style="verb">response_content_types</spanx> array of at most eight unique
media types. Parameters, multiple request-body alternatives, complex responses, or declared security
requirements require an OpenAPI target instead.</t>

<t><spanx style="verb">request</spanx> describes one optional request body. It contains at least one of <spanx style="verb">content_type</spanx> or
<spanx style="verb">schema</spanx>. <spanx style="verb">content_type</spanx> identifies the body media type. <spanx style="verb">schema</spanx> is a JSON Schema reference with a
required Resource Reference <spanx style="verb">url</spanx> and follows the retrieval, resolution, caching, vocabulary, and
narrow-failure rules defined for Attribute Schemas. The schema describes only the Action request
body. It does not describe URL, header, or cookie parameters. An Agent <bcp14>MUST NOT</bcp14> send a request body
unless the caller supplies one or the operation definition supplies a complete value.</t>

<t><spanx style="verb">response_content_types</spanx> advertises media types the successful operation can return. It does not
constrain authentication, payment, redirection, Problem Details, or other non-success responses. The
live response <spanx style="verb">Content-Type</spanx> remains authoritative.</t>

</section>
<section anchor="openapi-target"><name>OpenAPI Target</name>

<t><spanx style="verb">openapi</spanx> identifies exactly one operation in an OpenAPI 3.1 document <xref target="OPENAPI31"/>. It contains an
optional Resource Reference <spanx style="verb">url</spanx> and a required case-sensitive <spanx style="verb">operation_id</spanx> of at most 128
Unicode code points. When <spanx style="verb">url</spanx> is absent, the Service Document <bcp14>MUST</bcp14> contain <spanx style="verb">http.openapi.url</spanx>, and
that value is used. An Action-level <spanx style="verb">url</spanx> overrides the Service-wide value. An Action is unusable if
neither reference exists. The referenced document <bcp14>MUST</bcp14> use an <spanx style="verb">openapi</spanx> version in the <spanx style="verb">3.1.x</spanx> line
and <bcp14>MUST</bcp14> contain exactly one Operation Object whose <spanx style="verb">operationId</spanx> equals <spanx style="verb">operation_id</spanx>. An Agent
<bcp14>MUST NOT</bcp14> guess an operation from a path, method, summary, description, or similar identifier when
that lookup fails or is ambiguous.</t>

<t>OpenAPI retrieval is anonymous. An Agent <bcp14>MUST NOT</bcp14> attach AEP credentials, payment credentials,
cookies, or authorization fields copied from the Offering request. Agents accept JSON represented as
<spanx style="verb">application/vnd.oai.openapi+json</spanx> with a <spanx style="verb">version=3.1</spanx> parameter or <spanx style="verb">application/json</spanx>; missing,
malformed, non-JSON, or other media types are rejected. Standard HTTP caching applies. The decoded
document is limited to 1,048,576 bytes, JSON depth 32, and five redirects.</t>

<t>An invalid Action, failed request-schema retrieval, failed OpenAPI retrieval, or unresolved
<spanx style="verb">operation_id</spanx> makes only that Action unusable. Duplicate Action IDs make every Action bearing that
ID unusable. Unrelated Actions and Offering fields remain usable. An Agent-oriented SDK exposes
these failures as scoped issues rather than rejecting the entire Offering.</t>

<t>Action metadata is descriptive. A live AEP, MPP, x402, or other HTTP challenge is authoritative for
access and payment. An Agent <bcp14>MUST NOT</bcp14> execute an action whose request, authorization, payment, or
security consequences it cannot determine.</t>

<t>Payment protection and Action meaning are independent. Paying to retrieve an ODP Offering grants
access to that Offering representation and <bcp14>MUST NOT</bcp14> be interpreted as acquiring the Offering. An
Agent invokes the separate Action target in its current authentication context and follows live AEP
and payment challenges according to the composition rules in this document. A successful Action
response is interpreted according to the compact metadata or OpenAPI operation, not as an ODP
Offering response unless that operation explicitly returns one.</t>

</section>
</section>
<section anchor="offering-granularity"><name>Offering Granularity</name>

<t>A Service chooses the granularity of its Offerings. A variant that can be independently retrieved,
quoted, reserved, acquired, or paid for <bcp14>SHOULD</bcp14> have its own Local Resource Identifier and Offering.
Attributes can describe variants that are not independently actionable. This guidance does not
define a universal variant model or require a Service to mirror its internal catalog structure.</t>

</section>
</section>
<section anchor="extensibility-model"><name>Extensibility Model</name>

<section anchor="core-evolution"><name>Core Evolution</name>

<t>Agents <bcp14>MUST</bcp14> ignore additive JSON object members they do not understand unless another rule in this
document requires the containing object or capability to be rejected. Services <bcp14>MUST NOT</bcp14> use an
unknown member to change the semantics of a core member.</t>

<t>An Agent encountering an unknown enum or discriminator value <bcp14>MUST NOT</bcp14> substitute a known value or
invent fallback semantics. It <bcp14>MUST</bcp14> treat the smallest capability, resource, or operation whose
interpretation depends on that value as unsupported. Unrelated resources and operations remain
usable.</t>

<t>Security-sensitive behavior fails closed. An Agent <bcp14>MUST NOT</bcp14> execute an operation when an unknown
field or value prevents it from determining the operation's identity, authorization, payment,
request semantics, or security consequences.</t>

</section>
<section anchor="service-defined-offering-data"><name>Service-Defined Offering Data</name>

<t>ODP defines stable envelope fields needed for discovery and link traversal. Domain-specific Offering
data belongs in the Service-defined <spanx style="verb">attributes</spanx> object. When present, its Attribute Schema <bcp14>MUST</bcp14>
identify the structure, types, and constraints of that value using JSON Schema Draft 2020-12
<xref target="JSON-SCHEMA"/>.</t>

<t>An Attribute Schema can be shared across multiple Offerings. The schema's titles, descriptions,
examples, and constraints help an Agent compare unfamiliar attributes without requiring the ODP core
specification to standardize every domain.</t>

<t>Filter identifiers are local to the operation or scope that advertises them. A small Service <bcp14>MAY</bcp14>
embed Filter Definitions in an ODP representation. A large Service <bcp14>MAY</bcp14> link to a separate, pageable
filter-definition resource. An Agent <bcp14>MUST</bcp14> interpret a filter identifier using the definition
advertised for the operation and scope in which the filter is used.</t>

<t>A Service Document <bcp14>SHOULD</bcp14> contain only Service-level discovery metadata and operation advertisement.
Collection-specific or high-cardinality definitions <bcp14>SHOULD</bcp14> be linked from the narrowest applicable
Collection or operation so that a Service Document remains bounded as the catalog grows.</t>

</section>
</section>
<section anchor="filters-and-sorting"><name>Filters and Sorting</name>

<section anchor="capability-identifiers"><name>Capability Identifiers</name>

<t>A Filter Definition and Sort Definition contains a Service-created capability identifier. It is a
case-sensitive ASCII string of 1 through 64 characters from <spanx style="verb">ALPHA</spanx>, <spanx style="verb">DIGIT</spanx>, <spanx style="verb">.</spanx>, <spanx style="verb">_</spanx>, <spanx style="verb">~</spanx>, and
<spanx style="verb">-</spanx>. It is compared byte for byte and is not percent-decoded or Unicode-normalized.</t>

<t>A capability identifier is not a Local Resource Identifier and does not identify an independently
retrievable ODP resource. Its meaning is scoped by the Service Origin, operation, capability source,
definition kind, and identifier. The same spelling can have different meanings at different Services
or scopes. Capability advertisement, inheritance, and conflict rules define the effective scope in
which a reference is resolved.</t>

</section>
<section anchor="filter-value-model"><name>Filter Value Model</name>

<t>A Filter Definition maps each Offering to a set containing zero or more scalar values of one
declared type. The mapping can use core Offering metadata, Service-defined attributes, computed
catalog data, an external index, or another Service implementation detail. It does not expose a
storage path and need not correspond to a serialized Offering field.</t>

<t>The core filter types and their wire values are:</t>

<texttable>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Wire value</ttcol>
      <c><spanx style="verb">string</spanx></c>
      <c>JSON string.</c>
      <c><spanx style="verb">boolean</spanx></c>
      <c>JSON Boolean.</c>
      <c><spanx style="verb">integer</spanx></c>
      <c>JSON integer.</c>
      <c><spanx style="verb">number</spanx></c>
      <c>JSON number.</c>
      <c><spanx style="verb">decimal</spanx></c>
      <c>Base-10 JSON string without an exponent.</c>
      <c><spanx style="verb">date</spanx></c>
      <c>RFC 3339 <spanx style="verb">full-date</spanx> JSON string.</c>
      <c><spanx style="verb">date-time</spanx></c>
      <c>RFC 3339 <spanx style="verb">date-time</spanx> JSON string identifying an instant on the UTC timeline.</c>
</texttable>

<t>A decimal value contains an optional minus sign, an integer part that is either zero or a nonzero
digit followed by zero or more digits, and an optional fractional part containing a period followed
by one or more digits. Decimal equality and ordering are numeric, not lexical, so <spanx style="verb">1.0</spanx> and <spanx style="verb">1.00</spanx>
compare equal. Integer and number comparison is numeric. Boolean equality follows JSON Boolean
equality. Date comparison follows calendar order. Date-time equality and ordering use the
represented instant. String equality is case-sensitive Unicode scalar-value equality; ODP performs
no normalization or locale folding.</t>

</section>
<section anchor="filter-definitions"><name>Filter Definitions</name>

<t>A Filter Definition contains <spanx style="verb">id</spanx>, <spanx style="verb">title</spanx>, <spanx style="verb">description</spanx>, <spanx style="verb">type</spanx>, and <spanx style="verb">operators</spanx>. <spanx style="verb">title</spanx> is a
non-empty string of no more than 128 Unicode code points. <spanx style="verb">description</spanx> is a non-empty string of no
more than 1024 Unicode code points. <spanx style="verb">operators</spanx> is a non-empty array of unique supported core
operators. A numeric Filter Definition <bcp14>MAY</bcp14> contain <spanx style="verb">unit</spanx>; other types <bcp14>MUST</bcp14> omit it. A definition
that supports value-count refinement contains <spanx style="verb">refinable</spanx> with the value <spanx style="verb">true</spanx>; otherwise it omits
<spanx style="verb">refinable</spanx>. A refinable definition <bcp14>MUST</bcp14> advertise <spanx style="verb">eq</spanx>, <spanx style="verb">in</spanx>, or both.</t>

<t>Every operator advertised by a Filter Definition <bcp14>MUST</bcp14> be compatible with its type:</t>

<texttable>
      <ttcol align='left'>Operator</ttcol>
      <ttcol align='left'>Compatible types</ttcol>
      <c><spanx style="verb">eq</spanx></c>
      <c>All core filter types.</c>
      <c><spanx style="verb">in</spanx></c>
      <c>All core filter types.</c>
      <c><spanx style="verb">lt</spanx></c>
      <c><spanx style="verb">integer</spanx>, <spanx style="verb">number</spanx>, <spanx style="verb">decimal</spanx>, <spanx style="verb">date</spanx>, and <spanx style="verb">date-time</spanx>.</c>
      <c><spanx style="verb">lte</spanx></c>
      <c><spanx style="verb">integer</spanx>, <spanx style="verb">number</spanx>, <spanx style="verb">decimal</spanx>, <spanx style="verb">date</spanx>, and <spanx style="verb">date-time</spanx>.</c>
      <c><spanx style="verb">gt</spanx></c>
      <c><spanx style="verb">integer</spanx>, <spanx style="verb">number</spanx>, <spanx style="verb">decimal</spanx>, <spanx style="verb">date</spanx>, and <spanx style="verb">date-time</spanx>.</c>
      <c><spanx style="verb">gte</spanx></c>
      <c><spanx style="verb">integer</spanx>, <spanx style="verb">number</spanx>, <spanx style="verb">decimal</spanx>, <spanx style="verb">date</spanx>, and <spanx style="verb">date-time</spanx>.</c>
      <c><spanx style="verb">exists</spanx></c>
      <c>All core filter types.</c>
</texttable>

</section>
<section anchor="units"><name>Units</name>

<t>A unit is an inline object whose <spanx style="verb">system</spanx> is <spanx style="verb">ucum</spanx> or <spanx style="verb">service</spanx>. A UCUM unit contains <spanx style="verb">system</spanx> and
<spanx style="verb">code</spanx>; <spanx style="verb">code</spanx> is a valid case-sensitive UCUM code as defined by <xref target="UCUM"/>. A Service-defined unit
also contains <spanx style="verb">title</spanx>, a non-empty human-readable name of no more than 128 Unicode code points. Its
code uses the capability-identifier syntax.</t>

<t>Every value supplied to a Filter Expression uses the unit declared by its Filter Definition, so the
request does not repeat the unit. A missing unit means that the values are categorical or
dimensionless. Agents can interpret and convert compatible UCUM values. A Service-defined unit is
meaningful only in that Service and capability scope; an Agent <bcp14>MUST NOT</bcp14> infer equivalence or
conversion from similar codes or titles. A unit is fully defined inline and does not require URL
retrieval.</t>

</section>
<section anchor="filter-expressions"><name>Filter Expressions</name>

<t><spanx style="verb">filters</spanx> is a non-empty array of no more than 32 Filter Expressions. Each expression contains <spanx style="verb">id</spanx>,
<spanx style="verb">operator</spanx>, and <spanx style="verb">value</spanx>. <spanx style="verb">id</spanx> <bcp14>MUST</bcp14> resolve to an effective Filter Definition for the operation and
scope. The operator <bcp14>MUST</bcp14> be advertised by that definition, and the value <bcp14>MUST</bcp14> conform to the
definition's type and the following shape:</t>

<texttable>
      <ttcol align='left'>Operator</ttcol>
      <ttcol align='left'>Request value</ttcol>
      <c><spanx style="verb">eq</spanx>, <spanx style="verb">lt</spanx>, <spanx style="verb">lte</spanx>, <spanx style="verb">gt</spanx>, <spanx style="verb">gte</spanx></c>
      <c>One scalar of the Filter Definition's type.</c>
      <c><spanx style="verb">in</spanx></c>
      <c>An array of 1 through 100 unique scalars of the Filter Definition's type.</c>
      <c><spanx style="verb">exists</spanx></c>
      <c>A JSON Boolean.</c>
</texttable>

<t>For <spanx style="verb">eq</spanx>, an Offering matches when at least one mapped value equals the request value. For <spanx style="verb">in</spanx>, it
matches when its mapped set and the request set intersect. For a comparison operator, it matches
when at least one mapped value satisfies the comparison. For <spanx style="verb">exists: true</spanx>, it matches when the
mapped set is non-empty; for <spanx style="verb">exists: false</spanx>, it matches when that set is empty.</t>

<t>Every Filter Expression in one request combines with logical AND. The same identifier can appear
more than once, which permits bounded ranges such as <spanx style="verb">gte</spanx> and <spanx style="verb">lte</spanx>. <spanx style="verb">in</spanx> expresses logical OR
among accepted values for one Filter Definition. ODP version 1.0 defines no general Boolean
expression tree, negative operator, substring operator, or regular-expression operator.</t>

<t>An unknown identifier, unadvertised or incompatible operator, invalid value, excessive expression
count, or excessive <spanx style="verb">in</spanx> cardinality produces an <spanx style="verb">INVALID_REQUEST</spanx> problem.</t>

</section>
<section anchor="refinements"><name>Refinements</name>

<t><spanx style="verb">refinements</spanx> in an Offering-search request is a non-empty array of at most 16 unique capability
identifiers. Every identifier <bcp14>MUST</bcp14> resolve to an effective Filter Definition whose <spanx style="verb">refinable</spanx>
member is <spanx style="verb">true</spanx>. An unavailable, invalid, quarantined, duplicate, or non-refinable identifier
produces an <spanx style="verb">INVALID_REQUEST</spanx> problem. A Service that advertises no refinable Filter Definitions
does not implement refinement computation.</t>

<t>An initial Offering-search response <bcp14>MAY</bcp14> contain <spanx style="verb">refinements</spanx> only when the request contains it. The
response member is a non-empty array of at most 16 Refinement Groups. Each group contains
<spanx style="verb">filter_id</spanx> and <spanx style="verb">values</spanx>; <spanx style="verb">filter_id</spanx> <bcp14>MUST</bcp14> occur in the request and <bcp14>MUST</bcp14> be unique among the
returned groups. A Service <bcp14>MAY</bcp14> omit a requested group when it cannot produce useful values. An
omitted group does not invalidate other groups or the Offering results.</t>

<t><spanx style="verb">values</spanx> contains 1 through 32 Refinement Buckets whose values are unique under the referenced
Filter Definition's equality semantics. Each bucket contains <spanx style="verb">value</spanx> and <spanx style="verb">count</spanx>. <spanx style="verb">value</spanx> <bcp14>MUST</bcp14> be a
scalar valid for the referenced Filter Definition's type. <spanx style="verb">count</spanx> is a non-negative JSON integer no
greater than 9,007,199,254,740,991. An exact count omits <spanx style="verb">count_relation</spanx>. A count known only to be
a lower bound contains <spanx style="verb">count_relation</spanx> with the value <spanx style="verb">lower_bound</spanx>. A Service <bcp14>MUST NOT</bcp14> report an
estimate as exact.</t>

<t>For one bucket, the Service evaluates the original Collection constraint, query, access context, and
every Filter Expression whose identifier differs from the group's <spanx style="verb">filter_id</spanx>. It then applies the
bucket value to the referenced Filter Definition using its equality semantics. <spanx style="verb">count</spanx> is the number
of distinct matching Offerings. Removing same-filter expressions makes alternative values useful for
navigation while retaining every independent constraint. Sorting and page limits do not affect the
count.</t>

<t>Refinement values are contextual suggestions, not a complete enumeration of a Filter Definition's
domain and not another capability source. An Agent resolves <spanx style="verb">filter_id</spanx> through the effective
capability catalog and interprets every bucket using that definition's type and unit. ODP does not
define total-result counts; a bucket count applies only to that candidate value. An Agent-oriented
SDK <bcp14>SHOULD</bcp14> return normalized groups with their resolved Filter Definitions and scoped issues rather
than requiring its caller to join raw identifiers.</t>

</section>
<section anchor="sort-definitions"><name>Sort Definitions</name>

<t>A Sort Definition advertises one complete ordering recipe that the Service can execute. It contains
<spanx style="verb">id</spanx>, <spanx style="verb">title</spanx>, <spanx style="verb">description</spanx>, and <spanx style="verb">keys</spanx>. <spanx style="verb">title</spanx> and <spanx style="verb">description</spanx> use the Filter Definition string
limits. <spanx style="verb">keys</spanx> is an array of 1 through 3 Sort Keys. Each Sort Key contains <spanx style="verb">filter_id</spanx>,
<spanx style="verb">direction</spanx>, and <spanx style="verb">missing</spanx>. Every <spanx style="verb">filter_id</spanx> <bcp14>MUST</bcp14> be distinct and resolve to an effective Filter
Definition in the same operation and scope. <spanx style="verb">direction</spanx> is <spanx style="verb">ascending</spanx> or <spanx style="verb">descending</spanx>; <spanx style="verb">missing</spanx> is
<spanx style="verb">first</spanx> or <spanx style="verb">last</spanx>.</t>

<t>For a Sort Key whose Filter Definition maps an Offering to multiple values, <spanx style="verb">ascending</spanx> selects the
minimum value and <spanx style="verb">descending</spanx> selects the maximum value before ordering Offerings. Numeric,
decimal, date, and date-time values use the comparison semantics defined for filters. The Service
defines type-appropriate string collation and <bcp14>MUST</bcp14> describe non-obvious collation in the Sort
Definition. The advertised key sequence, directions, and missing-value placement are fixed. The
Agent selects a recipe through the search request's <spanx style="verb">sort</spanx> member and <bcp14>MUST NOT</bcp14> add, remove, reverse,
or reorder its keys.</t>

<t>The Service <bcp14>MUST</bcp14> append Offering <spanx style="verb">id</spanx> as the final ascending tie-breaker after all advertised keys.
The resulting order is subject to the common stable-pagination contract. An absent <spanx style="verb">sort</spanx> selects
the Service's preferred ordering and does not require a Sort Definition. An unknown or unavailable
Sort Definition identifier produces an <spanx style="verb">INVALID_REQUEST</spanx> problem.</t>

</section>
<section anchor="search-capability-advertisement"><name>Search Capability Advertisement</name>

<t><spanx style="verb">search_capabilities</spanx> is an object that contains at least one of <spanx style="verb">filters</spanx> or <spanx style="verb">sorts</spanx>. A Service
Document advertises Service-wide capabilities. A Full Collection Representation advertises
capabilities specific to searches whose request explicitly names that Collection. The field <bcp14>MUST NOT</bcp14>
appear unless the Service advertises <spanx style="verb">search-offerings</spanx>.</t>

<t><spanx style="verb">filters</spanx> and <spanx style="verb">sorts</spanx> are independent capability sources. Each source contains exactly one of
<spanx style="verb">inline</spanx> or <spanx style="verb">linked</spanx>. <spanx style="verb">inline</spanx> is a non-empty array containing no more than 32 Filter Definitions or
16 Sort Definitions, according to the source. <spanx style="verb">linked</spanx> is an object containing <spanx style="verb">href</spanx>, a same-origin
Resource Reference to the first page of the applicable definition sequence. A source with no
definitions is omitted rather than represented by an empty array.</t>

<t>A linked source is retrieved with <spanx style="verb">GET</spanx> and uses <spanx style="verb">application/odp+json</spanx>. The response is a standard
page envelope whose <spanx style="verb">items</spanx> contain only the applicable definition kind and whose <spanx style="verb">next</spanx> links obey
the common continuation contract. A page contains no more than 100 definitions, and a complete
linked source contains no more than 16 pages. The linked operation can enforce access policy through
live HTTP challenges. It follows the common <spanx style="verb">Accept-Language</spanx>, <spanx style="verb">Content-Language</spanx>, <spanx style="verb">Vary</spanx>,
validator, redirect, response-limit, and caching rules. The advertisement does not contain a
redundant pagination flag; only <spanx style="verb">next</spanx> indicates another page.</t>

<t>Each inline or complete linked source is atomic. An Agent <bcp14>MUST</bcp14> retrieve and validate every page,
enforce source uniqueness and bounds, and only then expose definitions from that source. It <bcp14>MUST NOT</bcp14>
expose an earlier page while later pages remain unresolved. A failed or invalid source is omitted
from the normalized capability catalog and reported as a scoped issue. Once a linked source cannot
fit within the applicable effective-catalog bound, the Agent <bcp14>MUST</bcp14> stop retrieving that source and
discard it. If page 16 contains <spanx style="verb">next</spanx>, the Agent <bcp14>MUST NOT</bcp14> retrieve page 17 and <bcp14>MUST</bcp14> discard the
source. Failure of a Collection-specific source does not invalidate a valid Service-wide source, and
capability failure does not prevent text-only Offering search.</t>

</section>
<section anchor="effective-search-capabilities"><name>Effective Search Capabilities</name>

<t>An Offering search without <spanx style="verb">collection_id</spanx> uses only Service-wide capabilities. A search with
<spanx style="verb">collection_id</spanx> uses the union of Service-wide capabilities and capabilities advertised by that
exact Collection. Ancestors, descendants, and other Collections do not contribute definitions.
<spanx style="verb">include_descendants</spanx> changes the Offering membership scope but does not change capability
inheritance.</t>

<t>The effective catalog contains at most 1,024 Filter Definitions and 128 Sort Definitions after
merging its sources. The Service-wide source is applied before the selected-Collection source.
Exceeding either limit makes the source that causes the overflow invalid; an Agent preserves earlier
valid sources and reports a scoped issue. SDKs <bcp14>SHOULD</bcp14> retain and index the normalized catalog
programmatically rather than placing every definition into an Agent's language model context.</t>

<t>A conforming Service <bcp14>MUST NOT</bcp14> publish the same Filter Definition identifier or Sort Definition
identifier in two effective sources, even when their serialized definitions are equal. An Agent
quarantines each cross-source duplicate identifier rather than selecting an override. It also
quarantines every Sort Definition that references a missing, invalid, or quarantined Filter
Definition. Unrelated definitions remain usable. A request using a quarantined or otherwise
unavailable identifier produces an <spanx style="verb">INVALID_REQUEST</spanx> problem.</t>

<t>An Agent-oriented SDK <bcp14>SHOULD</bcp14> expose one normalized effective capability catalog containing valid
Filter Definitions and resolved Sort Definitions, plus scoped issues. Callers need not process raw
capability pages, merge scopes, detect conflicts, or resolve Sort Definition references.</t>

</section>
</section>
<section anchor="composition-boundaries"><name>Composition Boundaries</name>

<t>ODP describes resources and references that lead to subsequent operations. It does not duplicate the
semantics of those operations.</t>

<t>A Service <bcp14>MAY</bcp14> make ODP resources public, require AEP <xref target="AEP"/> enrollment before some or all ODP
operations, require MPP <xref target="MPP"/> or x402 <xref target="X402"/> payment, or combine these protocols in a
Service-selected order. Capability metadata is descriptive. Live HTTP authentication and payment
challenges are authoritative for the credentials, payment requirements, and retry mechanics of the
request being made. An advertised authentication requirement does not replace those challenges.</t>

<t>The following signals belong to their defining protocols and are not redefined by ODP:</t>

<texttable>
      <ttcol align='left'>Protocol</ttcol>
      <ttcol align='left'>Live signal</ttcol>
      <c>AEP</c>
      <c><spanx style="verb">401 Unauthorized</spanx> with an <spanx style="verb">AEP</spanx> challenge in <spanx style="verb">WWW-Authenticate</spanx>.</c>
      <c>MPP</c>
      <c><spanx style="verb">402 Payment Required</spanx> with a <spanx style="verb">Payment</spanx> challenge in <spanx style="verb">WWW-Authenticate</spanx>.</c>
      <c>x402</c>
      <c><spanx style="verb">402 Payment Required</spanx> with payment requirements in <spanx style="verb">PAYMENT-REQUIRED</spanx>.</c>
</texttable>

<t>A Service that requires both AEP and payment for an ODP operation <bcp14>MUST</bcp14> authenticate the Agent before
processing payment. Its response to a request without acceptable AEP credentials has status 401 and
carries the AEP challenge, even if the request also lacks payment. After AEP authentication
succeeds, the Service can return the applicable live payment challenge.</t>

<t>An Agent begins with the requested ODP operation in its current authentication context. A valid AEP
challenge causes it to complete the AEP flow and retry the same operation with an AEP credential.
When payment can follow, the Agent <bcp14>SHOULD</bcp14> use the dedicated <spanx style="verb">AEP-Authorization</spanx> field defined by AEP
so that <spanx style="verb">Authorization</spanx> remains available for an MPP credential. The Agent fulfills payment only
after the authenticated retry returns a live payment challenge. It then retries with the AEP
credential and either the MPP <spanx style="verb">Authorization: Payment</spanx> credential or the x402 <spanx style="verb">PAYMENT-SIGNATURE</spanx>
field, as defined by the selected payment protocol.</t>

<t>This sequence does not require AEP where the Service does not require enrollment. A public operation
can succeed immediately, and a payment-only operation can return <spanx style="verb">402 Payment Required</spanx> directly.
Each retry remains subject to the credential handling, request binding, redirect, replay, and error
rules of the protocol that caused it.</t>

<t>A successful response means that the request did not require another challenge at that point,
regardless of the Service-wide advertisement. A live challenge for an unadvertised protocol is still
authoritative. An advertised protocol without a corresponding live challenge <bcp14>MUST NOT</bcp14> cause an Agent
to enroll, authenticate, or pay speculatively.</t>

<t>An Agent <bcp14>MUST NOT</bcp14> infer that support for ODP implies support for AEP, MPP, x402, or any other
protocol. An Agent <bcp14>MUST NOT</bcp14> infer that support for one composition order implies support for
another.</t>

</section>
<section anchor="errors-and-limits"><name>Errors and Limits</name>

<section anchor="problem-details"><name>Problem Details</name>

<t>An error generated by ODP request processing with a response body <bcp14>MUST</bcp14> use Problem Details as
defined by <xref target="RFC9457"/> and the <spanx style="verb">application/problem+json</spanx> media type. A response governed by a live
authentication or payment challenge protocol retains that protocol's body rules. The Problem Details
object <bcp14>MUST</bcp14> contain <spanx style="verb">type</spanx>, <spanx style="verb">title</spanx>, <spanx style="verb">status</spanx>, and <spanx style="verb">code</spanx>. <spanx style="verb">detail</spanx> and <spanx style="verb">instance</spanx> are optional.
<spanx style="verb">status</spanx> <bcp14>MUST</bcp14> equal the HTTP response status. <spanx style="verb">title</spanx> contains no more than 128 Unicode code points,
and <spanx style="verb">detail</spanx> contains no more than 2048 Unicode code points.</t>

<t><spanx style="verb">type</spanx> is an absolute HTTPS URL under <spanx style="verb">https://offeringprotocol.org/problems/</spanx> identifying the
problem class. <spanx style="verb">code</spanx> is the stable machine-readable identifier used by Agent implementations. A
code contains 1 through 64 uppercase ASCII letters, digits, or underscores and begins with a letter.
An Agent <bcp14>MUST</bcp14> ignore unknown additive Problem Details members.</t>

<t>The initial core problem codes are:</t>

<texttable>
      <ttcol align='left'>Code</ttcol>
      <ttcol align='right'>Status</ttcol>
      <ttcol align='left'>Meaning</ttcol>
      <c><spanx style="verb">INVALID_REQUEST</spanx></c>
      <c>400</c>
      <c>Request syntax or values are invalid.</c>
      <c><spanx style="verb">NOT_AUTHENTICATED</spanx></c>
      <c>401</c>
      <c>Authentication is required or invalid.</c>
      <c><spanx style="verb">NOT_AUTHORIZED</spanx></c>
      <c>403</c>
      <c>The principal cannot perform the operation.</c>
      <c><spanx style="verb">NOT_FOUND</spanx></c>
      <c>404</c>
      <c>The requested ODP resource does not exist.</c>
      <c><spanx style="verb">NOT_ACCEPTABLE</spanx></c>
      <c>406</c>
      <c>No acceptable response representation exists.</c>
      <c><spanx style="verb">CONTINUATION_EXPIRED</spanx></c>
      <c>410</c>
      <c>The continuation link has expired.</c>
      <c><spanx style="verb">REQUEST_TOO_LARGE</spanx></c>
      <c>413</c>
      <c>The request exceeds its resource limit.</c>
      <c><spanx style="verb">UNSUPPORTED_MEDIA_TYPE</spanx></c>
      <c>415</c>
      <c>The request media type is unsupported.</c>
      <c><spanx style="verb">RATE_LIMITED</spanx></c>
      <c>429</c>
      <c>Request rate or quota has been exceeded.</c>
      <c><spanx style="verb">SERVICE_UNAVAILABLE</spanx></c>
      <c>503</c>
      <c>The Service is temporarily unable to respond.</c>
</texttable>

<t>Later compatible protocol revisions can define additional codes. An Agent encountering an unknown
code <bcp14>MUST</bcp14> use the HTTP status and standard Problem Details members as its fallback semantics. It
<bcp14>MUST NOT</bcp14> reinterpret an unknown code as a known one.</t>

<t>Live HTTP authentication and payment challenges remain authoritative. A Problem Details body does
not replace <spanx style="verb">WWW-Authenticate</spanx>, MPP, x402, AEP, or another challenge header, and an Agent <bcp14>MUST</bcp14>
preserve those headers for the applicable protocol handler.</t>

</section>
<section anchor="invalid-parameters"><name>Invalid Parameters</name>

<t>An <spanx style="verb">INVALID_REQUEST</spanx> problem <bcp14>MAY</bcp14> contain <spanx style="verb">invalid_params</spanx>, a non-empty array of parameter failures.
Each entry contains <spanx style="verb">in</spanx>, <spanx style="verb">name</spanx>, and <spanx style="verb">reason</spanx>. <spanx style="verb">in</spanx> is one of <spanx style="verb">query</spanx>, <spanx style="verb">body</spanx>, <spanx style="verb">header</spanx>, or <spanx style="verb">path</spanx>.
For a body member, <spanx style="verb">name</spanx> is a JSON Pointer as defined by <xref target="RFC6901"/>. For another location, <spanx style="verb">name</spanx>
is a non-empty parameter or header name. <spanx style="verb">name</spanx> contains no more than 256 Unicode code points, and
<spanx style="verb">reason</spanx> is a non-empty concise explanation of no more than 1024 Unicode code points. The array
contains no more than 32 entries. An Agent <bcp14>MUST NOT</bcp14> parse <spanx style="verb">reason</spanx> to determine recovery behavior.</t>

</section>
<section anchor="agent-error-results"><name>Agent Error Results</name>

<t>An Agent-oriented SDK <bcp14>SHOULD</bcp14> map an operation failure to a typed error containing at least <spanx style="verb">code</spanx>,
<spanx style="verb">message</spanx>, and <spanx style="verb">retryable</spanx>. It can also expose retry timing and structured invalid parameters. A
failed requested operation is an error, not a partial-result issue. A scoped enrichment failure that
does not invalidate the requested ODP resource, such as an unavailable Attribute Schema, remains an
issue under the applicable SDK result contract.</t>

</section>
<section anchor="resource-limits"><name>Resource Limits</name>

<t>Limits apply after HTTP content codings are decoded and before a representation is exposed to an
Agent caller. JSON depth is measured from the top-level value. A Service <bcp14>MUST</bcp14> produce documents
within the applicable limits, and an Agent <bcp14>MUST</bcp14> stop reading a body when it exceeds its applicable
byte limit.</t>

<texttable>
      <ttcol align='left'>Resource</ttcol>
      <ttcol align='right'>Limit</ttcol>
      <c>ODP request body</c>
      <c>65,536 bytes</c>
      <c>Individual Collection or Offering response</c>
      <c>524,288 bytes</c>
      <c>List, search, or Filter Definition page</c>
      <c>524,288 bytes</c>
      <c>Problem Details response</c>
      <c>16,384 bytes</c>
      <c>JSON nesting depth except Service Document</c>
      <c>16</c>
      <c>Service Document</c>
      <c>65,536 bytes</c>
      <c>Service Document nesting depth</c>
      <c>8</c>
      <c>Items per page</c>
      <c>100</c>
      <c>Pages per linked capability source</c>
      <c>16</c>
      <c>One Attribute Schema document</c>
      <c>262,144 bytes</c>
      <c>Complete Attribute Schema reference graph</c>
      <c>1,048,576 bytes</c>
      <c>One OpenAPI Action document</c>
      <c>1,048,576 bytes</c>
      <c>Distinct documents in one schema graph</c>
      <c>16</c>
      <c>Attribute Schema reference depth</c>
      <c>8</c>
      <c>Redirects per retrieved resource</c>
      <c>5</c>
</texttable>

<t>The more specific Service Document, field, relationship, and pagination limits elsewhere in this
document continue to apply. A Service <bcp14>MAY</bcp14> return fewer page items than requested to remain within
the page limit. Domain-specific attribute arrays are bounded by their Attribute Schema and the
overall byte and depth limits rather than by a universal element count.</t>

<t>Every redirect target for an ODP resource, JSON Schema resource, or OpenAPI Action document <bcp14>MUST</bcp14>
retain the scheme, host, and effective port of the preceding request. An Agent <bcp14>MUST</bcp14> reject redirect
loops, transport security downgrades, and a sixth redirect. A cross-origin Resource Reference can
initiate a request to its explicit origin; that resource cannot use redirects to transfer the
request to another origin.</t>

</section>
<section anchor="limit-failures"><name>Limit Failures</name>

<t>A receiver <bcp14>MUST NOT</bcp14> truncate and expose partial JSON, a partial schema, a partial string, or a
partial array. It rejects the affected document before exposing any of that document's contents.
Valid items yielded from earlier pages remain valid, but automatic pagination stops at the failing
page. An Agent-oriented SDK reports a local <spanx style="verb">RESPONSE_LIMIT_EXCEEDED</spanx> error for the failed
operation.</t>

<t>An Attribute Schema limit failure makes the corresponding attributes uninterpretable. The SDK omits
those attributes from its normalized result and reports a scoped issue; unrelated Offering fields
remain usable. A Service receiving an oversized ODP request returns <spanx style="verb">413 Content Too Large</spanx> with
<spanx style="verb">REQUEST_TOO_LARGE</spanx> Problem Details.</t>

</section>
<section anchor="rate-limits-and-retries"><name>Rate Limits and Retries</name>

<t>A <spanx style="verb">429 Too Many Requests</spanx> response <bcp14>MUST</bcp14> include <spanx style="verb">Retry-After</spanx>. A <spanx style="verb">503 Service Unavailable</spanx> response
<bcp14>SHOULD</bcp14> include it. An Agent-oriented SDK <bcp14>SHOULD</bcp14> support bounded automatic retry for these statuses.
The default policy performs at most three retries and spends at most 30 seconds waiting across the
operation. It honors <spanx style="verb">Retry-After</spanx> when doing so does not exceed that elapsed-time limit; otherwise
it returns the typed error without waiting. When <spanx style="verb">Retry-After</spanx> is absent on <spanx style="verb">503</spanx>, the SDK uses
bounded exponential backoff with jitter.</t>

<t>ODP list, search, and retrieval operations are read-only at the application layer and can be retried
under this policy. An SDK <bcp14>MUST NOT</bcp14> automatically restart an expired continuation or retry an
authentication, authorization, validation, or other non-transient failure.</t>

</section>
<section anchor="compatibility-of-errors"><name>Compatibility of Errors</name>

<t>The core evolution rules apply to successful and unsuccessful documents. Unknown additive members
are ignored. Unknown Problem Details codes fall back to HTTP status semantics. Unknown
discriminators disable only the smallest dependent capability, and security-sensitive ambiguity
fails closed. A major-version mismatch rejects an ODP document; same-major minor versions use the
compatibility rules defined in Protocol Versioning.</t>

</section>
</section>
<section anchor="conformance"><name>Conformance</name>

<t>An implementation claims conformance separately for the Agent and Service roles. ODP defines one
required baseline for each role. It does not define named conformance levels, profiles, or a
<spanx style="verb">minimum</spanx> capability.</t>

<section anchor="service-baseline"><name>Service Baseline</name>

<t>A conformant ODP Service:</t>

<t><list style="numbers" type="1">
  <t>publishes a valid, publicly retrievable Service Document at <spanx style="verb">/.well-known/odp</spanx>;</t>
  <t>advertises and implements <spanx style="verb">list-offerings</spanx> and <spanx style="verb">get-offering</spanx> using its advertised endpoint base;</t>
  <t>implements the shared versioning, media type, representation, pagination, localization, caching,
error, limit, redirect, and security requirements applicable to those operations; and</t>
  <t>satisfies every Service requirement for each additional operation, protocol, search feature, or
per-resource feature it advertises or returns.</t>
</list></t>

<t>The Offering sequence can be empty. A Full Offering still requires only <spanx style="verb">odp_version</spanx>, <spanx style="verb">id</spanx>, and
<spanx style="verb">name</spanx>; Actions, prices, attributes, schemas, Collection membership, and other optional fields do
not become required by baseline conformance.</t>

</section>
<section anchor="agent-baseline"><name>Agent Baseline</name>

<t>A conformant ODP Agent:</t>

<t><list style="numbers" type="1">
  <t>retrieves and validates the Service Document;</t>
  <t>invokes <spanx style="verb">list-offerings</spanx>, follows its continuation sequence, and processes Terse and Full
Offering representations;</t>
  <t>invokes <spanx style="verb">get-offering</spanx> and processes a Full Offering; and</t>
  <t>implements the shared versioning, media type, representation, pagination, localization, caching,
error, limit, redirect, compatibility, and security requirements applicable to those operations.</t>
</list></t>

<t>An Agent can omit Collections, search, filters, sorting, refinements, Attribute Schema resolution,
Actions, and external protocol composition. It <bcp14>MUST</bcp14> ignore or narrowly isolate unsupported optional
data according to this document and <bcp14>MUST NOT</bcp14> claim support for behavior it does not implement.</t>

</section>
<section anchor="runtime-advertisement-and-evidence"><name>Runtime Advertisement and Evidence</name>

<t>ODP defines no generic <spanx style="verb">capabilities</spanx> member and no secondary runtime conformance manifest. Runtime
support is advertised through the singular <spanx style="verb">odp_version</spanx>, <spanx style="verb">operations</spanx>, <spanx style="verb">protocols</spanx>,
<spanx style="verb">search_capabilities</spanx>, <spanx style="verb">mcp</spanx>, and applicable per-resource members such as <spanx style="verb">schema</spanx> and <spanx style="verb">actions</spanx>. An
implementation <bcp14>MUST NOT</bcp14> add a parallel claim that can contradict those authoritative fields.</t>

<t>A conformance harness can generate release evidence identifying the implementation name and version,
role, singular ODP version tested, vector revision, suites executed, and passed, failed, and skipped
results. Such a report describes test evidence for one software release. It is not an ODP wire
document, is not retrieved during discovery, and does not override runtime advertisement or
normative requirements.</t>

<t>Directory behavior is outside ODP conformance. Examples, guides, schemas, and test vectors support
implementation and testing; they do not override normative Internet-Draft prose.</t>

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

<section anchor="media-type-registration"><name>Media Type Registration</name>

<t>This document requests registration of the following media type in the Media Types registry
according to <xref target="RFC6838"/>:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Value</ttcol>
      <c>Type name</c>
      <c><spanx style="verb">application</spanx></c>
      <c>Subtype name</c>
      <c><spanx style="verb">odp+json</spanx></c>
      <c>Required parameters</c>
      <c>None</c>
      <c>Optional parameters</c>
      <c>None</c>
      <c>Encoding considerations</c>
      <c>Binary; the representation is a JSON document encoded in UTF-8.</c>
      <c>Security considerations</c>
      <c>See the Security Considerations section of this document.</c>
      <c>Interoperability considerations</c>
      <c>The <spanx style="verb">odp_version</spanx> member identifies the protocol compatibility family.</c>
      <c>Published specification</c>
      <c>This document.</c>
      <c>Applications that use this media type</c>
      <c>Agents and Services implementing ODP.</c>
      <c>Fragment identifier considerations</c>
      <c>None; ODP Resource References prohibit fragments.</c>
      <c>Additional information</c>
      <c>None.</c>
      <c>Person and email address for further information</c>
      <c>IETF, <spanx style="verb">iesg@ietf.org</spanx>.</c>
      <c>Intended usage</c>
      <c>COMMON</c>
      <c>Restrictions on usage</c>
      <c>None.</c>
      <c>Author</c>
      <c>IETF</c>
      <c>Change controller</c>
      <c>IETF</c>
</texttable>

</section>
<section anchor="well-known-uri-registration"><name>Well-Known URI Registration</name>

<t>This document requests the following registration in the Well-Known URIs registry defined by
<xref target="RFC8615"/>:</t>

<dl>
  <dt>URI suffix</dt>
  <dd>
    <t><spanx style="verb">odp</spanx></t>
  </dd>
  <dt>Change controller</dt>
  <dd>
    <t>IETF</t>
  </dd>
  <dt>Specification document</dt>
  <dd>
    <t>This document</t>
  </dd>
  <dt>Related information</dt>
  <dd>
    <t>None</t>
  </dd>
</dl>

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

<section anchor="untrusted-content-and-agent-control"><name>Untrusted Content and Agent Control</name>

<t>Every ODP representation, string, schema, OpenAPI document, URL, cursor, and Action is untrusted
network input. An Agent <bcp14>MUST</bcp14> validate a representation before using its Service-defined data or
following its references. Names, descriptions, keywords, schema annotations, examples, and other
human-readable content are data; they <bcp14>MUST NOT</bcp14> supersede caller intent, implementation policy,
protocol requirements, or higher-priority Agent instructions.</t>

<t>An implementation <bcp14>MUST</bcp14> safely encode untrusted strings for its output context. It <bcp14>MUST NOT</bcp14> interpret
terminal control sequences, markup, code fragments, schema keywords, OpenAPI extensions, or media
type parameters as executable instructions. JSON Schema formats and regular expressions can consume
unbounded computation in some engines. Agents <bcp14>MUST</bcp14> apply documented time, memory, recursion, and
evaluation limits and <bcp14>MUST NOT</bcp14> load executable code to process a schema or OpenAPI extension.</t>

</section>
<section anchor="network-request-and-ssrf-protection"><name>Network Request and SSRF Protection</name>

<t>Resource References can identify a different origin only through an explicit absolute HTTPS URL.
Cross-origin support does not grant unrestricted network access. Before each connection, an Agent
<bcp14>MUST</bcp14> resolve the target host and reject every destination address that is loopback, private-use,
link-local, multicast, unspecified, reserved, documentation-only, or otherwise non-public according
to the IANA special-purpose address registries described by <xref target="RFC6890"/>. If a resolution returns
both public and non-public addresses, the Agent <bcp14>MUST</bcp14> reject the target rather than select one
result.</t>

<t>The Agent <bcp14>MUST</bcp14> verify that the connected peer address is one of the public addresses it validated
for that request. It <bcp14>MUST</bcp14> repeat resolution and validation for every new connection, retry, and
redirect to prevent DNS rebinding and time-of-check/time-of-use substitution. The same policy
applies when a proxy or custom resolver performs the connection; an implementation <bcp14>MUST NOT</bcp14> use
either to bypass destination policy.</t>

<t>The local-development HTTP exception applies only when local development is explicitly enabled and
the URL host is syntactically <spanx style="verb">localhost</spanx>, <spanx style="verb">127.0.0.1</spanx>, or <spanx style="verb">[::1]</spanx>. A DNS name that resolves to a
loopback or other non-public address does not qualify. Production defaults <bcp14>MUST</bcp14> keep local-network
access disabled. Implementations <bcp14>MAY</bcp14> impose stricter port, domain, origin, network, or enterprise
egress allowlists.</t>

<t>Every redirect remains limited to the preceding request's origin. A cross-origin Resource Reference
can initiate an independently validated request to its explicit origin, but neither a redirect nor a
DNS change can transfer that request to another origin or a non-public destination.</t>

</section>
<section anchor="credential-and-payment-isolation"><name>Credential and Payment Isolation</name>

<t>An Agent applies origin and credential policy independently to every request. Retrieval of a JSON
Schema, OpenAPI document, or other supporting metadata is anonymous. Such a request <bcp14>MUST NOT</bcp14> contain
cookies, AEP credentials, payment credentials, caller authorization fields, or secrets copied from
the referring request.</t>

<t>An Agent <bcp14>MUST NOT</bcp14> copy a credential, enrollment artifact, payment proof, cookie, or authorization
field to another origin solely because an ODP representation links there. A cross-origin Action
begins without credentials belonging to the Offering Service. Credentials for the Action target can
be obtained or sent only under the target origin's applicable protocol and live challenge rules.
Redirect processing strips all sensitive fields before any separately authorized request begins.</t>

<t>An advertised protocol, Price Preview, Action relation, schema annotation, or OpenAPI security
declaration is not authorization to enroll, authenticate, or pay. A live challenge remains
authoritative for protocol mechanics but does not override caller approval, spend limits, accepted
assets, destination policy, or other payment policy. An Agent <bcp14>MUST</bcp14> present a changed authoritative
amount or settlement choice to its policy layer rather than silently relying on discovery metadata.</t>

</section>
<section anchor="action-safety"><name>Action Safety</name>

<t>Discovering, parsing, validating, or resolving an Action <bcp14>MUST NOT</bcp14> invoke its target. An Agent
invokes an Action only after a caller explicitly selects its <spanx style="verb">id</spanx> and supplies or approves the
required inputs. Unknown relations are never selected automatically. Implementations <bcp14>MUST NOT</bcp14>
prefetch an Action target as an optimization; retrieving a separately identified request schema or
OpenAPI document does not invoke the Action.</t>

<t>Services <bcp14>MUST</bcp14> implement a compact <spanx style="verb">GET</spanx> Action with safe HTTP semantics as defined by <xref target="RFC9110"/>.
An Agent <bcp14>MUST NOT</bcp14> automatically retry a state-changing Action after an ambiguous outcome unless the
operation defines an applicable idempotency mechanism and the retry preserves it. AEP, MPP, and x402
challenge-response retries remain governed by their defining protocols and the exact request
binding.</t>

</section>
<section anchor="mcp-endpoint-safety"><name>MCP Endpoint Safety</name>

<t>An advertised MCP Endpoint is an untrusted network destination. A client that elects to connect <bcp14>MUST</bcp14>
apply the Resource Reference, destination-address, redirect, and credential-isolation requirements
to the resolved endpoint. A cross-origin MCP Endpoint starts without credentials belonging to the
ODP Service Origin. The client follows MCP's current transport and authorization requirements and
<bcp14>MUST NOT</bcp14> infer authentication state, supported capabilities, or safe tool behavior from the ODP
descriptor.</t>

</section>
<section anchor="resource-exhaustion-and-abuse"><name>Resource Exhaustion and Abuse</name>

<t>Implementations <bcp14>MUST</bcp14> enforce the decoded-size, nesting-depth, schema-graph, page, redirect, retry,
and elapsed-time limits in this document before exposing a result. Compression does not increase a
limit. A receiver fails closed when a complete document cannot be obtained within its bounds and
never treats a truncated document as valid.</t>

<t>Agents <bcp14>MUST</bcp14> bound concurrent Service, page, schema, OpenAPI, and Action-related work. Cursors and
Service-defined identifiers are untrusted and provide no authorization. Services <bcp14>SHOULD</bcp14> apply
request-rate, query-complexity, and concurrency controls without exposing private catalog existence
through distinguishable errors.</t>

</section>
<section anchor="cache-poisoning-and-staleness"><name>Cache Poisoning and Staleness</name>

<t>An Agent <bcp14>MUST</bcp14> honor <spanx style="verb">Cache-Control</spanx>, <spanx style="verb">Vary</spanx>, validators, authorization context, and the cache rules
in this document. Cache entries are scoped by the effective request URL, method, representation and
localization inputs, and authentication context required by HTTP. A response obtained in an
authenticated or private context <bcp14>MUST NOT</bcp14> be reused as a public response. Validators from one URL or
origin <bcp14>MUST NOT</bcp14> validate a representation from another.</t>

<t>Cached discovery metadata, schemas, and OpenAPI documents can become stale or maliciously
inconsistent. They never authorize access, payment, or Action execution. Live responses and current
resource state remain authoritative, and a contradiction triggers narrow failure or revalidation
rather than merging fields from conflicting representations.</t>

</section>
</section>
<section anchor="privacy-considerations"><name>Privacy Considerations</name>

<t>Discovery requests can reveal user interests, intended purchases, location constraints, or business
plans. Agents <bcp14>SHOULD</bcp14> minimize disclosed query data and avoid sending user-specific context that is
not needed for the operation.</t>

<t>Cross-origin schema and OpenAPI retrieval discloses the Agent's network address, timing, and
interest in the referring Service or Offering to another operator. Agents <bcp14>SHOULD</bcp14> retrieve only
supporting resources needed for the caller's operation, avoid eager resolution of every advertised
Action, and apply privacy-preserving network policy where appropriate. Sensitive values <bcp14>MUST NOT</bcp14> be
placed in Resource Reference query strings, logs, telemetry, cache keys visible to unrelated
tenants, or Problem Details intended for another party.</t>

<t>Services <bcp14>SHOULD</bcp14> minimize data returned in Terse Representations and apply access controls before
returning sensitive Offering attributes. Directories <bcp14>SHOULD</bcp14> limit indexed data to public Service
metadata and document their retention and refresh policies.</t>

<t><spanx style="verb">auth_expands</spanx> reveals only that authentication can expand the current result. A Service <bcp14>MUST NOT</bcp14>
use <spanx style="verb">detail_fields</spanx>, result counts, identifiers, refinement counts, errors, timing differences, or
other metadata to disclose the nature or quantity of protected content to a principal that is not
permitted to learn it.</t>

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

<t>The protocol design is informed by practical requirements from agent-native commerce, service
discovery, and large catalog systems.</t>

</section>


  </middle>

  <back>


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

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



<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="RFC4647">
  <front>
    <title>Matching of Language Tags</title>
    <author fullname="A. Phillips" initials="A." role="editor" surname="Phillips"/>
    <author fullname="M. Davis" initials="M." role="editor" surname="Davis"/>
    <date month="September" year="2006"/>
    <abstract>
      <t>This document describes a syntax, called a "language-range", for specifying items in a user's list of language preferences. It also describes different mechanisms for comparing and matching these to language tags. Two kinds of matching mechanisms, filtering and lookup, are defined. Filtering produces a (potentially empty) set of language tags, whereas lookup produces a single language tag. Possible applications include language negotiation or content selection. This document, in combination with RFC 4646, replaces RFC 3066, which replaced RFC 1766. 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="47"/>
  <seriesInfo name="RFC" value="4647"/>
  <seriesInfo name="DOI" value="10.17487/RFC4647"/>
</reference>
<reference anchor="RFC5646">
  <front>
    <title>Tags for Identifying Languages</title>
    <author fullname="A. Phillips" initials="A." role="editor" surname="Phillips"/>
    <author fullname="M. Davis" initials="M." role="editor" surname="Davis"/>
    <date month="September" year="2009"/>
    <abstract>
      <t>This document describes the structure, content, construction, and semantics of language tags for use in cases where it is desirable to indicate the language used in an information object. It also describes how to register values for use in language tags and the creation of user-defined extensions for private interchange. 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="47"/>
  <seriesInfo name="RFC" value="5646"/>
  <seriesInfo name="DOI" value="10.17487/RFC5646"/>
</reference>
<reference anchor="RFC6454">
  <front>
    <title>The Web Origin Concept</title>
    <author fullname="A. Barth" initials="A." surname="Barth"/>
    <date month="December" year="2011"/>
    <abstract>
      <t>This document defines the concept of an "origin", which is often used as the scope of authority or privilege by user agents. Typically, user agents isolate content retrieved from different origins to prevent malicious web site operators from interfering with the operation of benign web sites. In addition to outlining the principles that underlie the concept of origin, this document details how to determine the origin of a URI and how to serialize an origin into a string. It also defines an HTTP header field, named "Origin", that indicates which origins are associated with an HTTP request. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6454"/>
  <seriesInfo name="DOI" value="10.17487/RFC6454"/>
</reference>
<reference anchor="RFC6838">
  <front>
    <title>Media Type Specifications and Registration Procedures</title>
    <author fullname="N. Freed" initials="N." surname="Freed"/>
    <author fullname="J. Klensin" initials="J." surname="Klensin"/>
    <author fullname="T. Hansen" initials="T." surname="Hansen"/>
    <date month="January" year="2013"/>
    <abstract>
      <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="13"/>
  <seriesInfo name="RFC" value="6838"/>
  <seriesInfo name="DOI" value="10.17487/RFC6838"/>
</reference>
<reference anchor="RFC6839">
  <front>
    <title>Additional Media Type Structured Syntax Suffixes</title>
    <author fullname="T. Hansen" initials="T." surname="Hansen"/>
    <author fullname="A. Melnikov" initials="A." surname="Melnikov"/>
    <date month="January" year="2013"/>
    <abstract>
      <t>A content media type name sometimes includes partitioned meta- information distinguished by a structured syntax to permit noting an attribute of the media as a suffix to the name. This document defines several structured syntax suffixes for use with media type registrations. In particular, it defines and registers the "+json", "+ber", "+der", "+fastinfoset", "+wbxml" and "+zip" structured syntax suffixes, and provides a media type structured syntax suffix registration form for the "+xml" structured syntax suffix. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6839"/>
  <seriesInfo name="DOI" value="10.17487/RFC6839"/>
</reference>
<reference anchor="RFC6890">
  <front>
    <title>Special-Purpose IP Address Registries</title>
    <author fullname="M. Cotton" initials="M." surname="Cotton"/>
    <author fullname="L. Vegoda" initials="L." surname="Vegoda"/>
    <author fullname="R. Bonica" initials="R." role="editor" surname="Bonica"/>
    <author fullname="B. Haberman" initials="B." surname="Haberman"/>
    <date month="April" year="2013"/>
    <abstract>
      <t>This memo reiterates the assignment of an IPv4 address block (192.0.0.0/24) to IANA. It also instructs IANA to restructure its IPv4 and IPv6 Special-Purpose Address Registries. Upon restructuring, the aforementioned registries will record all special-purpose address blocks, maintaining a common set of information regarding each address block.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="153"/>
  <seriesInfo name="RFC" value="6890"/>
  <seriesInfo name="DOI" value="10.17487/RFC6890"/>
</reference>
<reference anchor="RFC6901">
  <front>
    <title>JavaScript Object Notation (JSON) Pointer</title>
    <author fullname="P. Bryan" initials="P." role="editor" surname="Bryan"/>
    <author fullname="K. Zyp" initials="K." surname="Zyp"/>
    <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
    <date month="April" year="2013"/>
    <abstract>
      <t>JSON Pointer defines a string syntax for identifying a specific value within a JavaScript Object Notation (JSON) document.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6901"/>
  <seriesInfo name="DOI" value="10.17487/RFC6901"/>
</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="RFC9111">
  <front>
    <title>HTTP Caching</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 defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.</t>
      <t>This document obsoletes RFC 7234.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="98"/>
  <seriesInfo name="RFC" value="9111"/>
  <seriesInfo name="DOI" value="10.17487/RFC9111"/>
</reference>

<reference anchor="RFC9457" target="https://www.rfc-editor.org/info/rfc9457">
  <front>
    <title>Problem Details for HTTP APIs</title>
    <author initials="M." surname="Nottingham">
      <organization></organization>
    </author>
    <author initials="E." surname="Wilde">
      <organization></organization>
    </author>
    <author initials="S." surname="Dalal">
      <organization></organization>
    </author>
    <date year="2023" month="July"/>
  </front>
  <seriesInfo name="RFC" value="9457"/>
  <seriesInfo name="DOI" value="10.17487/RFC9457"/>
</reference>
<reference anchor="OPENAPI31" target="https://spec.openapis.org/oas/v3.1.2.html">
  <front>
    <title>OpenAPI Specification v3.1.2</title>
    <author >
      <organization>OpenAPI Initiative</organization>
    </author>
    <date year="2025" month="September" day="19"/>
  </front>
</reference>
<reference anchor="UCUM" target="https://ucum.org/ucum">
  <front>
    <title>The Unified Code for Units of Measure</title>
    <author >
      <organization>Regenstrief Institute, Inc.</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>



    </references>

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

<reference anchor="AEP" target="https://datatracker.ietf.org/doc/draft-kavian-agent-enrollment-protocol/">
  <front>
    <title>The Agent Enrollment Protocol</title>
    <author initials="N." surname="Kavian" fullname="Nas Kavian">
      <organization></organization>
    </author>
    <date year="2026" month="August" day="24"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-kavian-agent-enrollment-protocol-03"/>
</reference>
<reference anchor="JSON-SCHEMA" target="https://json-schema.org/draft/2020-12/json-schema-core.html">
  <front>
    <title>JSON Schema</title>
    <author initials="A." surname="Wright">
      <organization></organization>
    </author>
    <author initials="H." surname="Andrews">
      <organization></organization>
    </author>
    <author initials="B." surname="Hutton">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="MCP" target="https://modelcontextprotocol.io/specification/2026-07-28">
  <front>
    <title>Model Context Protocol</title>
    <author >
      <organization>Model Context Protocol</organization>
    </author>
    <date year="2026" month="July" day="28"/>
  </front>
</reference>
<reference anchor="MPP" 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>
    <author initials="J." surname="Moxey" fullname="Jake Moxey">
      <organization></organization>
    </author>
    <author initials="T." surname="Meagher" fullname="Tom Meagher">
      <organization></organization>
    </author>
    <author initials="J." surname="Weinstein" fullname="Jeff Weinstein">
      <organization></organization>
    </author>
    <author initials="S." surname="Kaliski" fullname="Steve Kaliski">
      <organization></organization>
    </author>
    <date year="2026" month="March" day="17"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-ryan-httpauth-payment-01"/>
</reference>
<reference anchor="X402" target="https://github.com/x402-foundation/x402/tree/main/specs">
  <front>
    <title>x402 Specification</title>
    <author >
      <organization>x402 Foundation</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


    </references>

</references>



  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+y96XbcWHYm+v88BW5Wr5W2GxEiNaVS6oklMavo0mQNVa72
8lKAEQgSpQggDCBI0cr0s9xnuU/Wez77AAhKmZV1/afdqyspEjg4wz573t+e
zWahr/pN+Th7d1lmr9brsq3qi+xZ1S2bq7K9yV63Td8sm00ozs/b8upx9urZ
67BqlnWxhZdWbbHuZx+Lq6qoZ428PVvp27OdvD07Ogqrooc37h7dfTg7ejS7
ez8s4RcXTXvzOOv6Vah27eOsb/ddf/fo6Puju6Hbn2+rrquaur/ZwZtnp+9+
CF1f1KsPxaapS3q6DKHY95dN+zhk2Qz+f5ZVdfc4eznP/kCzol/xZF8Wnf9l
014UdfXvRQ9feJz9Y9FeV3WendXLefZ3Z/UPm+b67+m5cltUm8cwRve/qnoN
v94VN/OiCqFu2i28fVXit9/88PTe948eyo/3H97/Tn588PC+/vbh/Qf39cdH
9x7FH7+3H78/0h+/PzqWHx/dfaAPPHp4/EB+/P74+Cj+qM9+f/8BfTjL5Fjh
/M435TZ7VvawjC5bN232+3fvXmcnr886frBoL8r+cXbZ97vu8Z0719fX83a9
nJWrqm/aOWzTHVh3cwd+h6PTO3aW92ZH/JsOjr7s8EH+PM3mcWZvZNmzV2eP
s+Oj+fF39x99d0fmSn+LJ4j/N+MTfDHPXjZ9D/R0WWzTP53Osz9Vm1WZ/vbt
PHtWbIoN/PbV69OXsL57x8lWvNqVNfw2e7srl9W6WtLJZ1f35sfzu5M70cGD
8wbeKnZVRxvRFN0dfmF+2W836V48mB19Pzv+fnJJ8HKcwFld9RVRDvz9/dP3
L5Jp4kV8X8MEy1X2tFmVdGTwi77LmnX2oiy6fVtOzne/3G9pmvjD1DTkvxlP
5015UdZdD+e2hil18Pl9X/INCAFP0pH3yenrZJLf4CxP4P0+O63bZrPZ4o/K
LL6ZnB5sVNG3xfJj2c6rsl/TVIGV3Em4SIGDzkob1HjInXS3lYtME99Z3Zdt
XfazZzj2gFEd/MTs6N5hgkxZygG28o9vX72cvX36+9MXJ8l+4e+zt8tLYCaT
e/OXrqlnHf2dtwXneweWeTQ7vuv/Ols2bRmJ79AB04xP4J601cVlP/3n38+z
k3rVltfd9N9/O89+v+/7Btf14ml6/i+AMDdAnrDNn+K5Ty5ti48u+Und6HnV
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

-->

</rfc>

