Universal Commerce Protocol’s fourth release, tagged v2026-08-25, added a
new policies[] array to Cart, Checkout, Catalog and Order responses. The
release notes describe it as a way to carry “return, refund, and warranty
terms” to a shopping agent. Read the schema itself, and it’s exactly that β
two named policy types, and shipping isn’t one of them.
What shipped
v2026-08-25 is UCP’s first release since April and its most disruptive:
143 commits across 263 files,
per the GitHub release.
Grocery becomes a fully specified vertical (location search, fractional
quantities, timezone-aware hours); Food and Lodging get groundwork; buyer
consent moves from four fixed boolean fields to a reverse-DNS-keyed map with
per-segment opt-ins; and signing keys move to a canonical keys[] JWK Set on
every profile, published specifically to support Web Bot Auth
interop.
Any integration built against the April spec has real rework ahead of it on
consent and key handling.
The policy snapshot, read from the schema
The new Policy type
attaches to a response via a policies[] array (already wired into
cart.json
and the catalog, checkout, and order schemas), each entry carrying a type,
a human-readable description, and an optional JSONPath applies_to that
scopes it to specific line items or products.
type is drawn from an open, reverse-DNS vocabulary, but the specification’s
Policies section
lists exactly two well-known values:
| Well-known type | Covers |
|---|---|
dev.ucp.shopping.policy.return |
Return terms |
dev.ucp.shopping.policy.warranty |
Warranty terms |
No dev.ucp.shopping.policy.shipping type exists in this release. A
business can mint a custom type in its own domain (com.example.policy
.shipping), but a platform isn’t obligated to recognize or surface one it
doesn’t already model β the spec’s own guarantee is that platforms “MUST
tolerate unknown type values,” not that they’ll act on them.
Why this doesn’t close the FAQ gap
This log flagged on August 19 and again on August 31 that Shopify’s UCP Cart
MCP migration left no successor
for search_shop_policies_and_faqs β the tool an agent calls mid-conversation
to answer an arbitrary shipping, return, or warranty question. The August 25
release doesn’t fill that gap; it solves a different problem.
search_shop_policies_and_faqs is a query: an agent asks a question and
gets an answer, on demand, about anything the merchant has documented.
policies[] is a snapshot: a fixed set of terms a business chooses to
attach to a specific cart, checkout, catalog, or order response, in a fixed
vocabulary that β as of this release β doesn’t include shipping. An agent
can’t ask a UCP-conformant store “do you ship to a PO box?” and get an
answer from this field; it can only read whatever return or warranty terms
the merchant already decided to attach to that exact response.
What this means for your store
- If you migrated to UCP Cart MCP, populate
policies[]now for return and warranty terms β it’s the one structured channel an agent is guaranteed to see attached to the cart or order it’s already looking at, rather than a page it has to go find. - Don’t treat it as your FAQ surface. Shipping questions, damage claims,
and anything outside return/warranty still need a page an agent can read
independently β a linked policy
url, or a structured llms.txt β because this field won’t carry them. - Re-check consent and signing-key integrations against this tag, not
April’s. The consent schema is a breaking change (boolean fields β
keyed map), and profile keys now live under
keys[]specifically to make Web Bot Auth interop possible.
FAQ
Does UCP’s new policy snapshot answer shipping questions?
No. The policies[] array added in the v2026-08-25 release names exactly
two well-known types β dev.ucp.shopping.policy.return and
dev.ucp.shopping.policy.warranty β in both the JSON schema and the
specification’s Policies section. Shipping isn’t a defined type, and the
field is a fixed snapshot attached to a response, not a query interface an
agent can ask an open-ended question against.
Is this the same as Shopify’s search_shop_policies_and_faqs tool?
No. search_shop_policies_and_faqs let an agent ask an arbitrary question
and get an answer on demand. UCP’s policies[] is a structured array a
business populates ahead of time and attaches to a specific cart, checkout,
catalog, or order response, in a closed vocabulary of two policy types. They
solve different problems, and one doesn’t substitute for the other.
What changed for merchants already integrated with UCP?
Buyer consent moved from four fixed boolean fields to a reverse-DNS-keyed
map with per-segment opt-ins, and signing keys moved to a canonical
keys[] JWK Set on every profile document β both breaking changes from the
April 2026 baseline. A store that integrated against that earlier spec
during its Shopify UCP Cart MCP migration should re-validate both before
assuming conformance still holds.
Sources
- Universal Commerce Protocol β Releases, v2026-08-25 (GitHub, fetched directly)
v2026-04-08...v2026-08-25compare view (143 commits, 263 files)policy.jsonschemacart.jsonschema βpoliciesfield- Specification overview β Policies section
profile.jsonschema βkeys[]and Web Bot Auth interopbuyer_consent.jsonschema
A protocol that ships a structured field named after the gap it’s supposed to close, but scopes it to two of the dozen things an agent might ask about, is exactly the kind of capability-versus-conformance mismatch AgentReady’s scan is built to catch before it costs a merchant an agent’s checkout.