<?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-01" 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="September" day="04"/>

    
    
    

    <abstract>


<?line 110?>

<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 119?>

<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>An implementation <bcp14>MUST</bcp14> reject a Top-Level Document whose <spanx style="verb">odp_version</spanx> it does not support. The
version defined by this document is exactly <spanx style="verb">1.0</spanx>; support for another version is defined by the
document that specifies that version.</t>

<t>Each request and response Top-Level Document declares the version governing that document. The
version is not inherited across HTTP exchanges.</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, payment, and trust protocols. It
contains at least one of <spanx style="verb">enrollment</spanx>, <spanx style="verb">payments</spanx>, or <spanx style="verb">trust</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">trust</spanx>, when present, is the single-item array <spanx style="verb">[{"name":"tap"}]</spanx>, identifying Visa Trusted Agent
Protocol <xref target="TAP"/>. A trust descriptor contains only <spanx style="verb">name</spanx>. Advertisement states that the Service
accepts and verifies requests using the named trust protocol. It does not prove Service ownership,
authorize disclosure of consumer information, or replace the trust protocol's request validation.</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>A Service <bcp14>MUST</bcp14> advertise only enrollment, payment, and trust protocol names defined by the ODP
version declared by its Service Document. An Agent <bcp14>MUST</bcp14> filter descriptors whose <spanx style="verb">name</spanx> it does not
recognize before applying the known category's item limit, uniqueness rules, and descriptor
validation. A category containing no recognized descriptors after filtering is treated as absent. An
unknown protocol name <bcp14>MUST NOT</bcp14> make an otherwise usable Service Document invalid. A descriptor
bearing a recognized name remains subject to every requirement for that descriptor and is not made
valid by filtering.</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 or trust 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 a protocol or 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 subject to one interoperability restriction: the
value of <spanx style="verb">$dynamicRef</spanx> <bcp14>MUST</bcp14> be a fragment-only URI-reference beginning with <spanx style="verb">#</spanx>. Cross-document
references use <spanx style="verb">$ref</spanx>. An Attribute Schema containing a non-fragment <spanx style="verb">$dynamicRef</spanx> is unsupported.
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>

<t>An Agent filters an unknown Operation Descriptor <spanx style="verb">name</spanx>, payment <spanx style="verb">option</spanx>, protocol descriptor
<spanx style="verb">name</spanx>, MCP endpoint <spanx style="verb">type</spanx>, Resource Image <spanx style="verb">type</spanx>, or Service Branding Image <spanx style="verb">type</spanx> from the
containing list. A list containing no recognized values after filtering is treated as absent. A
recognized list item remains subject to every requirement for that item.</t>

<t>An Agent treats an Operation Descriptor, payment protocol descriptor, or Action whose
<spanx style="verb">authentication</spanx> value is a syntactically valid but unrecognized string as unsupported at that
descriptor or Action boundary. A missing, non-string, or otherwise malformed required
<spanx style="verb">authentication</spanx> member remains invalid.</t>

<t>An Agent encountering an unknown Price Preview <spanx style="verb">type</spanx> omits the <spanx style="verb">price</spanx> object. An Action with an
unknown <spanx style="verb">rel</spanx> remains available for explicit selection by <spanx style="verb">id</spanx>. An Action with an unknown HTTP
<spanx style="verb">method</spanx> is unusable and is omitted from the containing Offering. An MCP endpoint with an unknown
<spanx style="verb">type</spanx> is omitted without making the Service Document unusable.</t>

<t>An Agent encountering an unknown Filter Definition type, operator, unit system, Sort Definition
direction, or missing-value placement treats only that definition as unsupported. A Resource
Identity with an unknown <spanx style="verb">type</spanx> is invalid.</t>

<t>An unknown Problem Details member does not make the problem response invalid. An unrecognized
problem <spanx style="verb">code</spanx> is interpreted using the HTTP status and standard Problem Details members. An Agent
ignores an invalid-parameter entry whose <spanx style="verb">in</spanx> value it does not recognize.</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.
<spanx style="verb">type</spanx> <bcp14>MUST</bcp14> equal <spanx style="verb">https://offeringprotocol.org/problems/&lt;code&gt;</spanx>, where <spanx style="verb">&lt;code&gt;</spanx> is the value of
<spanx style="verb">code</spanx> converted to lowercase ASCII and each underscore is replaced by a hyphen. 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. An unsupported <spanx style="verb">odp_version</spanx> rejects an ODP document as 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 exact protocol version.</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="27"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-kavian-agent-enrollment-protocol-04"/>
</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="TAP" target="https://developer.visa.com/capabilities/trusted-agent-protocol/trusted-agent-protocol-specifications/">
  <front>
    <title>Visa Trusted Agent Protocol Specifications</title>
    <author >
      <organization>Visa</organization>
    </author>
    <date year="n.d."/>
  </front>
</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:
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
q3vZNhiwS/aDtft1SylTrXerUoybLi6Qyg5MFi4iJZJ2aKShjgdPNoqzZDWu
KjPTpsjJ9605MuIp48lIej9uLu5T0C1VFGlkR+gza8/POTTyl5oDI5RjuElU
b00B4f67rssaN5Mt1xypF4bhYoXFpryWYk/pmMLDrINalLVW6BBl4GxjVage
PuckA22WnQJhc3dp7yduO6EREC15v+6sq5oYy7X0L4o9ukmC1M7OXkjDQXaC
ss4LfJhDtg4svtJuhIL+z5Yu5V5a5J+BA9wvTJfE7NwsiiMOzkAxCor0rONT
uVnD8ZtzUl7QCwrf9Z5U5xSVEULSDbDH0g4yaK1AzPr4TZUZMj3044Z63LYZ
E/xHHfV8J7Jlu969EwCspQlC0Y1MBDrnW91Y6mD4kd8T4GZkj3jTMVDLSENp
w4DVpqy3veafUwdLbRWzMW4iahC1CVEu3VKA2bdLwhYJFuI5K3sCKudeYpRq
0m6qLKeWHePo4lsnMyDXQ0+t9c7rjfaeDkupaF+6rU6aOhE+PPX+jin1WBCG
s5RHHoRwvNCU+sowU2eSgRO7kLIDJ7ctMZfq1uKq2mzmRCdYe7h8GG4vfKkq
lRPoNvdYs9kPrm6VHWqg8drvlg5DxaWNWPsz3MyH4c7Cj0pEyM2VPtiJz1yU
ZZb5hGZOf5mxFmL3XertZgFMIfG7STVezO7xJJ1mRjqHD2UOpenQD8kde3fh
sPUkjd8EftpAkKjFRUtcwxN1xyvjBROp5M5Wbff/FXdtO24cR/S9v4Jvehky
VoIksv0SWRdAiKUIWjl5CALviBzuDrTLWXBISQTsf0+fU5euHlK7WjlwKEBY
aYczPd1d1XU5dQpjz1fO3QrW3yGiFJk1tnaKaMI31DcppEsVsfDvWbl0uQx4
n4LxlNrCKLCNUp8zCs349ffW9xpv0LPcIjYAEdM4/xCCQKVgKBYnFYZ9aUW2
GpgqeZcP5mufSLpyLn9BrmJE+RZJ4QUiJ+ZFj1VVY12jbbJBKbCGzNM933j1
KJGY8VgqVAt0pAWik2/xFhwH/D/MP1b3M12kRxENe3ItWPU923otfWv+P+Vq
Gc/OrxezCPfCBiYzWihmK7aK1syD8Zg0RxiM88k1pwIxo57dTXocqTC8PY1n
yQK2q5SlKg4DdHxsjgVi4nxHWN3x0LO9Ld3xJhXwoZd2TYzB86vCmHnT2tgE
0BdYTf79hjZmxdTAGz/7ABwOzsp4tBnxZDazz2sah0DWsRnUQm4R3NAnxGMt
/92vGVnQ5ycbd1/p/YokJE8BWCqPVExZefzLawyQujnFN5GvuV7eaDYnJjij
xrSksXN8imbSE0t6epB6YpMmZkQkKhEXH+bRlS6Pt/yWLMiqJ+UFPcy6/oNa
bVHppDysLI0sk8YdDNuHGFwHmFCnCzYFYU0NHVKTU4vJHDYJBklTJjiSju4Y
YMt2cBYeHhiSz0eCqIf+U7KllQX/snLJP4uvriL8vgcPbDKGwNnZXvtZccFL
hdKOiAt7CQNJjsN691F8B76m9TsT6i+OFX2WPKbY2C9L3HO1p670dnhNzZhi
hXa+U+sCe9CnYf65LlEN5dV5Ss01hFwlk8z73Yj7SUPFcujMnnn3RjRJrw48
RhbJBcwbOgR0ur3sOursXehO7m9RBvuCPdPzISBdK7NkjNIt/cXjV49hDmOU
KjpUBi+p2tmi6k130YMFjhBsAXpXjc3h/ecfykUWPSzlQBHmIhHIcn//7iFV
+k0S54/+9OjXXwkwe04s/z0+v2gXtK//3C8h9pm02L0/fCxnnuL5xW8b0bbn
X/m2Z/t3u3s9+RfqYAX1ftVH0hRqpJV0+F2PfQWN8Bs+TPCY5fj7PvbZRjLX
pFcscnfbY3/IttT28L3m6adZbQWguFQCOrUSD/int8/njxaaEwxt37/ssWed
FWzoV2tNgaO9CHzQCxESR9XDg9mKb+94vKDOanff+HkNDiwmqVAZuKGlV8vb
vlZvdjWre9je8rZvT73CPT7M2BUZVBS6oNSIKHAlWD1We16EQMJYzmlSzT19
fdto8Njn2/aCSx/JzG+bZ9nJ0vbqONMCbrHhMpvfO7Qtu9Bw04m3LQ5pL4fb
7XOsj/1tnPt5bfNC6wGIgDmo2FYgQRXevP2WbmEcUN6Fz94+hw/ajRd/67vd
GuDs83uMw3Yyg6H78a6cuH5p9uQfL19myfzqjyhHJIWUfYPUsnc8/X8zyVJJ
dp8vcZJ/w1Mla6+0HzCKB1KI/g6PhcXzL8Sv/s5I6U9vXnyZ1VNbOZUNpHZO
fddi6wSIYKKl8+gvD/9MSwcPH/frdf8pfUcteJ7S0aTkX+GtUzqrlJuNMP+6
GjG4eCXjFKQiX4R9AivwM/pduzfttnum1i2pBLkTn/qJDMiS18cduBtPaFqq
01LUxUj/6c2PDepQx0FxqZq9JiBan52y7fpx2L7P47/ZH2WhAznQ5HDUjGiJ
JE67BNGvznZ9WUUBeDutwuwVKPsmzddB+JiHs3KzfcbkstEP1K3ZpTBs0hTK
MGzEruUxqAXvLmO2+RHqIcEPpaDn9c3Ug5MsSJMCzDoyAmjP7uzP3mz7gUus
9TMbASOWKMkp53Vs14h4iz1RVkMXVfQt5iu7OXlZStXwi6rqTVOqSVCd7ZXt
Y49ygQOj3b7f3zQCLPUzx6e3zLftH8RZ2DhK3pKHa+LhGoy51rxSKSaK71yB
KEQmjA9DXN9IrK1u+ph3bNpvLCcWGhZA3ElI0W0uEBzxTlbGNYqWT7rjEczo
gb7IRs0AF3QL6RNXuiWdOXnRA2ymCu5cDe0qvhVnLPtLxjHS2pwFPIhPlkR6
XqkwWc0ATY+zN8+ZLxGTLp2gR9S+XN7LO3TBVsyGZoIkUiMpN4FkHJeTLdKT
iPawoI+74hcgkBEmNp5+YFLRYQtF32L2g8IdyK4zbDYy8qaUhtYNN5AeFVAN
YC+61oSvGEkRfGlj+xSDwprBAteCJBlj1R/A6bsH1yygbXNGNxuhIF62SIDu
N2pzdsRFEVaPNhy6AfgI5j5LIpGtJZFM1KJnd4WT1h3TUedt26t80VYY7XSY
eqrALrYgSgCfP/r2G4DPX6xnMW5pEf9EQgZ7LEN2ZRRy/248In3TmQuTesxe
pMkvxHo0rRB1drfFJvJKZl1A+IAdYof6ZgWoTzzSZFgIZ5ryXyVJzLV+Phc9
pO3qwsuH0H2vHclkF2y6j9VmYnZYBLNgswZnknv66ixfonXfEpLpQTG6nmch
XL7/g/0LXgBb7vS7vUSC3xotgqjwZPzu0owJ4vzpQGqarHKHa9vG24JSCLOW
b0gisM8FIPPTkzEFDHljIDhX7XdNpssqcUPnE5KsoDR4mBcWCCsnL1LRc7yC
34lf6cfIe9uxWIjwbALyUE9KKUStOCrslpawP+et8DuEZx/+8a+Lb/Kfh1qO
8e/vvnv4H8JIMPGMUjjKi6z+AG4lk9Y6TV9vnqJp2J9hfVhA+632ipwTZIjq
7/ddd6OzojooKU2opsBXeavVBamELPbXlFJVYFtC66AGAPJpVGc2ptak6ZEc
lkB2dBccZgu75IrVcEcYQQPc85gQ7ONJ1N6D0VBsd4PskvReNJDdJpIGXx2K
tN2BvhOY2EY3XVvGvGHWGqvnBH+biMEr4nsMwvM+3LaWYQsr5qJmxzCqhxdM
rfBYc8vRN7HcmmCT8m2FBNUvD6oBXQFVMG8KvGWtYZh09llL17ejnnYSGi3M
UfltN4frYR8j4zIVJbUj5SlpOQzve+jlCYFNoYaq/lONyArRopkFDmvslmxo
sRxuesUApp31ONlGAOgpAoX8LZgD5YlN5OsCiHHdIqsXeEOGNWw9vIPgGOLA
hIHkxPLnVYQ5+q5zCohjj0OZh/G17mi7i2eRQmk3AFKR/0cIqwLJtOdX1XNY
hD1WquPUZdGjEDjVd2hui6WS0l7FWLFu0opi9GoZ24PxZIkdtuWECENoDJJB
uyOBAzTNDXXGrOBrNC1uVTGbQwSzFGqqUrXB2ZGFPsHX0WQ9iRT3aySAuo+N
vbvhv0+4RBU22fK4SdrPehCTWZxqf97B7HGClkQVYjpmUPMJLcxoFduo50xM
UtBb4QN2MiF/pWhHG/YlpLd24hdOTtEg577hC1YtiI5uW0gOVeGqzvyhRSB7
PWH37HYGF78cemEqh9ZVNSV4ucoC669EZ+VlYfYPh5plvVzpKPhBFvAsO3t5
WdJTvYxuO6rz+IMZSwpOlgNXAal6g+DyAXYg7ci5xwMvpkESytcEBChtFWz6
g+lg7SLY8MraqWmjYyJXZKm0UZPDPRgoCBg5L08Qsjno8UJoVGEGT5zlRiTN
jgu75WUYvQqx1MchXX+t2/d7SztKMVeQOY/RFplzly1NT42KBBmzWtRNXj0P
GAuowNvqac/PrB2EI14HS8QmnHpF+jlj44ma1W8fPoTbcELdTxGWhE8SNtjN
uZPxxvpEXdeNovzQeySrXCJzSmuDgpR1cEG7ieowz1g2pbIPu3Rqw/HaaWZk
BIX+lnhhJ+nBVaiKLvRl88A6IE6T4q4j+8zuNr7CknzQBUzqAYhAvXzyevbM
cGomVrU2rS7ptbjSwivm6EbzBkfZFUGmigq2+gV1AaTGQxGkl90Jy67SVXM1
g6dgtnIWznszmqqYkvmjTolqgLyjw7Z6RaJwv+zITQGZOPuH2q3EzMr7G2gq
3/9BIbArJScEc1QHSY0Yyi7IhJJpUrHPndzMCgongkbEXIII7YZ8nHiy38tE
wUVqwUIrWPbFePbpMpsu7oE+fgfPLJ3UN8aMv7v06tY5UP+N1fLNWWlkx+2c
tWSN0OqHRRX/ldRAx0jy0eqwbqkh0YqGBfHM1lovKKXllpCTNml9VaiJiXhe
82udLbBUfklhTjSYtHDWO+3KqonS3qFbIsJcVmizqtC/wqCSUoy/edND2yy6
u2y2JrHpGIWeW6kGBDLPAcPUMpxpKDm0N9PWlSbPirf7IJiMenMuStJPqxko
w1aJNN9yL5KkYC5z98khcf5Gy4PFVIuI+QpqxMpJj8mtQlfPInXSHexi34+X
0lCAQHX1qNol+LIGdKqyEMdZvhGbNEydAdY4zM75nbkmB0qrC7MhyDRfS2js
5yiBDT6Wpm6a7tGFDqrbaGHGtrMKG2UqLNVsdsAyyZDNnsthNcUqcjEjRFFt
h8Y1SdANOtAKVoqztGIx831MvzLVLJA0RnVF9GaujljpQKIr8ouol2v3Xcz+
6RMo+gahMYRSst1gStdu9fmcCL9ZqOQ4l6sTxuEEkjQ1TEaFBPMsH7EjGIdv
YbflY/4KfP1MQWOzSb/dg9pd7nRoKNc9QypXtRwkxE0J+VFWUmZBuxyIJCeH
6VFpz06xqpSOMYazo92W5+uCJN3EX3qZmCDbPDKYolFtPQHUo+JEGk/3CQgu
AVavsdbL48zaU59vzyYKUeWHrr1CwE5SPgh/j41kf5BzuMkve9kyImsEIqFL
p5xO75DugnSCzKOkIowKA/UCmHusuKhmahdJhXGqPgxoG6DNzzCUUi1rW1YD
40Rab8gs5L5wLMurY/ylctY2UykPstGMJdL8YCwhf7NWhE1D4rE2P6V3sgUr
zHqIrAExnGAdzSdT411MSOMagjSFo3zyruKuIL5W8PgyfV170W1jxHlYa/Co
WIGKHC7404OohuVhrtYsW2bpHKivJ/XTofcfThDz9ZWjLCiUpJxwpytqZeU1
nYcthb93LE1m2FvUMNrbzYD2VJi1FzCmvCtb23bT+iLfs+vAeoOS1kN0XI52
JXahN7jOoxbIe92NbQwzFjoC8/xTZmi5hZQw2Oz4XiiFBouZATf7MhgpHGXz
C0sRI+Qv2tgazHngThCkaoHstIkqdJ5ZeXlf5rFfygL2ZEs/h4b6OR/R+fcs
nYTUW29XdlWfHDuSTPPTUe0YM82O+zInBMiUC/Jn0VfnjRWnSofZJlosEe/u
vxc7wITO031LsYKTrKjPA5h7VIg5yI1UmkiTifwcKYK7kRSj1uFxygamO4y+
zlJu6Hl0g4zxzlgQu3a7EW5cxCzg1l91qwt1S9LbyKabDfD+gmElATzIQX2z
1TxD7RHIgcjqUm2bjE5enZDfWOPNGjF8Ba/fLarxMKKEepH+C9f5UI42wAEA

-->

</rfc>

