Carts, signed requests, and real error handling
UCP 2026-04-08
What you need to do
Nothing breaks if you do not act. If you sell anything with a multi-step basket, the new cart capability is the reason to revisit your integration. If you care about being able to tell real agent traffic from anything else, look at request signing.
What changed
The largest release so far, and the one that makes UCP feel finished rather than provisional. Cart arrives as its own capability, so an agent can build a basket over several steps instead of assembling everything in one shot at checkout.
Errors become a first-class concept. Until now a failed negotiation between an agent and a merchant had no agreed shape, which meant every implementation guessed. There is now a defined way to say what went wrong.
Request and response signing lands, which matters more than its one line in the notes suggests. It is the same idea appearing across the agentic web: an origin should be able to verify who is talking to it rather than trusting a string in a header.
Smaller additions: an intent field in context for relevance, multi-parent schema inheritance with deterministic resolution, a colour scheme parameter for embedded checkouts, available payment instruments on handler configuration, and fulfillment method type becoming optional on updates.
Affected capabilities
-
cart -
checkout -
fulfillment -
payment -
errors -
context
<!-- Release notes generated using configuration in .github/release.yml at release/2026-04-08 --> ## What's Changed ### ✨ New Features * feat(cart): Cart capability for basket building by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/73 * feat(extends): multi-parent support + deterministic schema resolution by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/96 * feat(errors): spec error handling for UCP negotiation failures by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/128 * feat(context): add `intent` field for relevance and personalization by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/95 * feat: Add first-class errors concept by @richmolj in https://github.com/Universal-Commerce-Protocol/ucp/pull/147 * feat: add ec_color_scheme query parameter to embedded checkouts by @westeezy in https://github.com/Universal-Commerce-Protocol/ucp/pull/157 * feat: signing for UCP requests & responses by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/156 * feat: Allow fulfillment method type (and id) to be optional on Fulfillment method updates by @matthutchinson in https://github.com/Universal-Commerce-Protocol/ucp/pull/143 * feat: add available_instruments to payment handler configurations by @raginpirate in https://github.com/Universal-Commerce-Protocol/ucp/pull/187 * feat: Adding currency field to top level of Order by @deinck6 in https://github.com/Universal-Commerce-Protocol/ucp/pull/210 * feat(errors): business logic error response for checkout and cart by @alexpark20 in https://github.com/Universal-Commerce-Protocol/ucp/pull/216 * feat(catalog): Catalog Search+Lookup capabilities for product discovery by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/55 * feat: extend discount capability to cart by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/246 * feat!: signals for authorization & abuse by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/203 * feat: eligibility claims & verification contract by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/250 * feat: formalize totals contract by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/261 * feat: extend warning to support disclosure contract by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/267 * feat(embedded): add link delegation extension by @westeezy in https://github.com/Universal-Commerce-Protocol/ucp/pull/247 * feat: Add `ec.totals.change` to Embedded Checkout Protocol by @lemonmade in https://github.com/Universal-Commerce-Protocol/ucp/pull/272 * feat!: update Order capability by @richmolj in https://github.com/Universal-Commerce-Protocol/ucp/pull/254 * feat!: Update the Order schema to make currency a required field by @deinck6 in https://github.com/Universal-Commerce-Protocol/ucp/pull/283 * feat: Add an optional label field on Order to hold additional identifiers by @jingyli in https://github.com/Universal-Commerce-Protocol/ucp/pull/326 * feat: get product operation for catalog.lookup by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/195 * feat!: Embedded protocol transport binding for cart capability + reauth mechanism in ECP by @jingyli in https://github.com/Universal-Commerce-Protocol/ucp/pull/244 * feat(order): Get Order operation w/ platform-auth by @richmolj in https://github.com/Universal-Commerce-Protocol/ucp/pull/276 * feat!: align embedded protocol errors with UCP error conventions by @westeezy in https://github.com/Universal-Commerce-Protocol/ucp/pull/325 * feat!: identity linking OAuth 2.0 foundation with capability-driven scopes by @amithanda in https://github.com/Universal-Commerce-Protocol/ucp/pull/354 * feat: attribution field for platform referral context by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/391 ### 📝 Documentation Updates * docs: Remove google mention for line item id description by @ptiper in https://github.com/Universal-Commerce-Protocol/ucp/pull/119 * docs: fix broken image path in core-concepts.md by @dltkdgkr123 in https://github.com/Universal-Commerce-Protocol/ucp/pull/87 * docs: update CONTRIBUTING.md to reference `super_linter_local.py` script by @drewolson-google in https://github.com/Universal-Commerce-Protocol/ucp/pull/138 * docs: Adding endorsed partners Block, Fiserv, Klarna, and Splitit to the documentation by @MitkoDeyanovMitev in https://github.com/Universal-Commerce-Protocol/ucp/pull/149 * docs(mcp): fix MCP examples & errors by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/141 * docs: Adding endorsed partner Affirm to the documentation by @dwdii in https://github.com/Universal-Commerce-Protocol/ucp/pull/166 * docs: Modernize diagrams by @gaureshpai in https://github.com/Universal-Commerce-Protocol/ucp/pull/99 * docs: rename Technical Committee to Tech Council (TC) by @ptiper in https://github.com/Universal-Commerce-Protocol/ucp/pull/168 * docs: Allow JSON and ucp-schema CLI not found errors to propagate up the call stack by @dwdii in https://github.com/Universal-Commerce-Protocol/ucp/pull/174 * docs: use fulfillment instead of shipping in order totals example by @muzaffersenkal in https://github.com/Universal-Commerce-Protocol/ucp/pull/76 * docs: Add endorsed partner Checkout.com to the documentation by @dwdii in https://github.com/Universal-Commerce-Protocol/ucp/pull/194 * docs: Update Contribution Guide link in README.md to .github repo. by @amithanda in https://github.com/Universal-Commerce-Protocol/ucp/pull/204 * docs: update broken links to CONTRIBUTING.md by @nearlyforget in https://github.com/Universal-Commerce-Protocol/ucp/pull/209 * docs: fix broken links and add dynamic versioning by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/226 * docs: update architecture diagrams and convert mobile version to JPG by @amithanda in https://github.com/Universal-Commerce-Protocol/ucp/pull/266 * docs: Update create checkout and update checkout request samples by @aksbro-gpu in https://github.com/Universal-Commerce-Protocol/ucp/pull/293 * docs: clarify the expectation for non-date protocol version by @alexpark20 in https://github.com/Universal-Commerce-Protocol/ucp/pull/324 * docs: fix outdated services+capability examples in docs by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/335 * docs: extract shared EP core, group transports in nav by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/339 * docs: omit deprecated checkout id from playground payload by @gaureshpai in https://github.com/Universal-Commerce-Protocol/ucp/pull/332 * docs: adds descriptions to links in llms-txt by @nicholasjameshall in https://github.com/Universal-Commerce-Protocol/ucp/pull/419 * docs: Fix typos and improve formatting in versioning by @pemamian in https://github.com/Universal-Commerce-Protocol/ucp/pull/416 * docs: enrich core-concepts with comprehensive UCP protocol overview by @amithanda in https://github.com/Universal-Commerce-Protocol/ucp/pull/336 * docs: add centralized glossary and acronym standards by @gsmith85 in https://github.com/Universal-Commerce-Protocol/ucp/pull/241 * docs: add extensibility and forward compatibility guidelines by @gsmith85 in https://github.com/Universal-Commerce-Protocol/ucp/pull/290 * docs: Modernize diagram in signatures.md by @gaureshpai in https://github.com/Universal-Commerce-Protocol/ucp/pull/331 * docs: Correct profile examples in docs Playground widget by @dkoch74 in https://github.com/Universal-Commerce-Protocol/ucp/pull/236 * docs: remove entity wrapper from MCP response examples by @jamesandersen in https://github.com/Universal-Commerce-Protocol/ucp/pull/360 * docs: fix accuracy issues in documentation pages by @pjordan in https://github.com/Universal-Commerce-Protocol/ucp/pull/365 * docs: fix inconsistencies in specification examples by @pjordan in https://github.com/Universal-Commerce-Protocol/ucp/pull/363 * docs: Update signature requirements in documentation (format only) by @TioBorracho in https://github.com/Universal-Commerce-Protocol/ucp/pull/242 * docs: update line item ids to differentiate from item ids by @thompson-tomo in https://github.com/Universal-Commerce-Protocol/ucp/pull/112 ### 🛠 Other Changes * fix: Remove page level HTML tags from playground.md by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/124 * fix: update broken URLs in demo and documentation to use correct ucp.dev paths by @kiliczsh in https://github.com/Universal-Commerce-Protocol/ucp/pull/67 * chore: manage dependencies with uv by @drewolson-google in https://github.com/Universal-Commerce-Protocol/ucp/pull/126 * chore: respect .gitignore for biome linting by @drewolson-google in https://github.com/Universal-Commerce-Protocol/ucp/pull/130 * fix(schema): publish UCP annotated schemas by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/125 * chore: add script to run super linter locally by @drewolson-google in https://github.com/Universal-Commerce-Protocol/ucp/pull/132 * fix: Add UCP-Agent header to the openapi.json. by @semenovm in https://github.com/Universal-Commerce-Protocol/ucp/pull/120 * refactor: rename and version service transport definitions by @lemonmade in https://github.com/Universal-Commerce-Protocol/ucp/pull/154 * chore: Update Shopify TC rep: Lee Richmond > Aaron Glazer by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/165 * fix: update all broken schema references in documentation by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/160 * chore: remove unused quicktype dependency by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/197 * chore: add CODEOWNERS file by @nearlyforget in https://github.com/Universal-Commerce-Protocol/ucp/pull/167 * chore: follow-up to update CODEOWNERS with devops-maintainers for additional tooling files by @nearlyforget in https://github.com/Universal-Commerce-Protocol/ucp/pull/199 * refactor: fix versioning issues across ucp.dev by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/181 * chore: upgrade super-linter by @drewolson-google in https://github.com/Universal-Commerce-Protocol/ucp/pull/198 * fix: Image (core-concepts diagram) and spec link URLs broken after si… by @dwdii in https://github.com/Universal-Commerce-Protocol/ucp/pull/211 * fix: Fix for broken links across ucp.dev by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/213 * fix: Mark checkout id as deprecated_required_to_omit for update requests by @raginpirate in https://github.com/Universal-Commerce-Protocol/ucp/pull/145 * fix!: Shift our prior breaking change to gracefully leverage our UCP transition schema by @raginpirate in https://github.com/Universal-Commerce-Protocol/ucp/pull/196 * chore: Improve doc build error handling and local build ucp-schema version checking by @dwdii in https://github.com/Universal-Commerce-Protocol/ucp/pull/224 * fix: Resolve broken assets when a space was in the name. by @dwdii in https://github.com/Universal-Commerce-Protocol/ucp/pull/233 * fix: clarify version negotiation by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/200 * chore: update CODEOWNERS to implement a hierarchical authority structure by @nearlyforget in https://github.com/Universal-Commerce-Protocol/ucp/pull/234 * ci: disable Super-Linter from writing to PRs by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/243 * fix: re-update mkdocs-material to fix mkdocs build breakage by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/248 * fix: promote reverse_domain_name to standalone type by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/260 * ci: only set latest alias if this release is the latest by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/249 * fix: rebuild docs site by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/269 * fix: docs build cleanup by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/268 * chore(docs): overhaul CI pipeline, fix anchor links, and refine UI navigation by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/270 * fix: resolve file exists error when symlinking specification by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/278 * chore: Delete generate_ts_schema_types.js by @dwdii in https://github.com/Universal-Commerce-Protocol/ucp/pull/281 * chore: Remove local issue templates in favor of organization-level templates by @nearlyforget in https://github.com/Universal-Commerce-Protocol/ucp/pull/286 * ci: prepare for release by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/322 * fix!: update total to use signed_amount.json by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/299 * ci: don't run docs build on release cut by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/327 * fix(security): update lodash to fix Trivy vulnerabilities by @nearlyforget in https://github.com/Universal-Commerce-Protocol/ucp/pull/333 * fix: revert identity linking #265 update by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/329 * style!: Clean up transition & deprecated schema in preparation of a version cut by @jingyli in https://github.com/Universal-Commerce-Protocol/ucp/pull/341 * fix!: Pull out dangling webhook fields into headers so transport reference only base schemas by @jingyli in https://github.com/Universal-Commerce-Protocol/ucp/pull/350 * fix!: rename variant.selected_options → options by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/356 * fix: add missing ucp_agent parameter to create_cart REST operation by @pjordan in https://github.com/Universal-Commerce-Protocol/ucp/pull/362 * fix!: repair profile schemas to pass validation & endpoint contract by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/429 * fix: Fix inconsistent schema on documentation examples & discounts extension schema by @jingyli in https://github.com/Universal-Commerce-Protocol/ucp/pull/371 * fix: render Total and Totals fields on schema reference page by @ynachiket in https://github.com/Universal-Commerce-Protocol/ucp/pull/352 * fix: standardize package registries in lockfile by @ptiper in https://github.com/Universal-Commerce-Protocol/ucp/pull/368 ## New Contributors * @ptiper made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/119 * @kiliczsh made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/67 * @dltkdgkr123 made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/87 * @semenovm made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/120 * @MitkoDeyanovMitev made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/149 * @gaureshpai made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/99 * @richmolj made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/147 * @westeezy made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/157 * @matthutchinson made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/143 * @muzaffersenkal made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/76 * @nearlyforget made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/167 * @deinck6 made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/210 * @alexpark20 made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/216 * @dependabot[bot] made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/169 * @jingyli made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/326 **Full Changelog**: https://github.com/Universal-Commerce-Protocol/ucp/compare/v2026-01-23...v2026-04-08 <!-- Release notes generated using configuration in .github/release.yml at v2026-04-08 --> ## What's Changed ### 📝 Documentation Updates * docs: Remove google mention for line item id description by @ptiper in https://github.com/Universal-Commerce-Protocol/ucp/pull/119 * docs: fix broken image path in core-concepts.md by @dltkdgkr123 in https://github.com/Universal-Commerce-Protocol/ucp/pull/87 * docs: update CONTRIBUTING.md to reference `super_linter_local.py` script by @drewolson-google in https://github.com/Universal-Commerce-Protocol/ucp/pull/138 * docs: Adding endorsed partners Block, Fiserv, Klarna, and Splitit to the documentation by @MitkoDeyanovMitev in https://github.com/Universal-Commerce-Protocol/ucp/pull/149 * docs(mcp): fix MCP examples & errors by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/141 * docs: Adding endorsed partner Affirm to the documentation by @dwdii in https://github.com/Universal-Commerce-Protocol/ucp/pull/166 * docs: Modernize diagrams by @gaureshpai in https://github.com/Universal-Commerce-Protocol/ucp/pull/99 * docs: rename Technical Committee to Tech Council (TC) by @ptiper in https://github.com/Universal-Commerce-Protocol/ucp/pull/168 * docs: Allow JSON and ucp-schema CLI not found errors to propagate up the call stack by @dwdii in https://github.com/Universal-Commerce-Protocol/ucp/pull/174 * docs: use fulfillment instead of shipping in order totals example by @muzaffersenkal in https://github.com/Universal-Commerce-Protocol/ucp/pull/76 * docs: Add endorsed partner Checkout.com to the documentation by @dwdii in https://github.com/Universal-Commerce-Protocol/ucp/pull/194 * docs: Update Contribution Guide link in README.md to .github repo. by @amithanda in https://github.com/Universal-Commerce-Protocol/ucp/pull/204 * docs: update broken links to CONTRIBUTING.md by @nearlyforget in https://github.com/Universal-Commerce-Protocol/ucp/pull/209 * docs: fix broken links and add dynamic versioning by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/226 * docs: update architecture diagrams and convert mobile version to JPG by @amithanda in https://github.com/Universal-Commerce-Protocol/ucp/pull/266 * docs: Update create checkout and update checkout request samples by @aksbro-gpu in https://github.com/Universal-Commerce-Protocol/ucp/pull/293 * docs: clarify the expectation for non-date protocol version by @alexpark20 in https://github.com/Universal-Commerce-Protocol/ucp/pull/324 * docs: fix outdated services+capability examples in docs by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/335 * docs: extract shared EP core, group transports in nav by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/339 ### 🛠 Other Changes * feat(cart): Cart capability for basket building by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/73 * fix: Remove page level HTML tags from playground.md by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/124 * fix: update broken URLs in demo and documentation to use correct ucp.dev paths by @kiliczsh in https://github.com/Universal-Commerce-Protocol/ucp/pull/67 * chore: manage dependencies with uv by @drewolson-google in https://github.com/Universal-Commerce-Protocol/ucp/pull/126 * chore: respect .gitignore for biome linting by @drewolson-google in https://github.com/Universal-Commerce-Protocol/ucp/pull/130 * fix(schema): publish UCP annotated schemas by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/125 * feat(extends): multi-parent support + deterministic schema resolution by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/96 * feat(errors): spec error handling for UCP negotiation failures by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/128 * chore: add script to run super linter locally by @drewolson-google in https://github.com/Universal-Commerce-Protocol/ucp/pull/132 * fix: Add UCP-Agent header to the openapi.json. by @semenovm in https://github.com/Universal-Commerce-Protocol/ucp/pull/120 * feat(context): add `intent` field for relevance and personalization by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/95 * refactor: rename and version service transport definitions by @lemonmade in https://github.com/Universal-Commerce-Protocol/ucp/pull/154 * chore: Update Shopify TC rep: Lee Richmond > Aaron Glazer by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/165 * feat: Add first-class errors concept by @richmolj in https://github.com/Universal-Commerce-Protocol/ucp/pull/147 * fix: update all broken schema references in documentation by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/160 * feat: add ec_color_scheme query parameter to embedded checkouts by @westeezy in https://github.com/Universal-Commerce-Protocol/ucp/pull/157 * feat: signing for UCP requests & responses by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/156 * feat: Allow fulfillment method type (and id) to be optional on Fulfillment method updates by @matthutchinson in https://github.com/Universal-Commerce-Protocol/ucp/pull/143 * chore: remove unused quicktype dependency by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/197 * chore: add CODEOWNERS file by @nearlyforget in https://github.com/Universal-Commerce-Protocol/ucp/pull/167 * chore: follow-up to update CODEOWNERS with devops-maintainers for additional tooling files by @nearlyforget in https://github.com/Universal-Commerce-Protocol/ucp/pull/199 * refactor: fix versioning issues across ucp.dev by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/181 * chore: upgrade super-linter by @drewolson-google in https://github.com/Universal-Commerce-Protocol/ucp/pull/198 * fix: Image (core-concepts diagram) and spec link URLs broken after si… by @dwdii in https://github.com/Universal-Commerce-Protocol/ucp/pull/211 * fix: Fix for broken links across ucp.dev by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/213 * feat: add available_instruments to payment handler configurations by @raginpirate in https://github.com/Universal-Commerce-Protocol/ucp/pull/187 * fix: Mark checkout id as deprecated_required_to_omit for update requests by @raginpirate in https://github.com/Universal-Commerce-Protocol/ucp/pull/145 * fix!: Shift our prior breaking change to gracefully leverage our UCP transition schema by @raginpirate in https://github.com/Universal-Commerce-Protocol/ucp/pull/196 * chore: Improve doc build error handling and local build ucp-schema version checking by @dwdii in https://github.com/Universal-Commerce-Protocol/ucp/pull/224 * fix: Resolve broken assets when a space was in the name. by @dwdii in https://github.com/Universal-Commerce-Protocol/ucp/pull/233 * feat: Adding currency field to top level of Order by @deinck6 in https://github.com/Universal-Commerce-Protocol/ucp/pull/210 * feat(errors): business logic error response for checkout and cart by @alexpark20 in https://github.com/Universal-Commerce-Protocol/ucp/pull/216 * chore(deps): bump pillow from 11.3.0 to 12.1.1 by @dependabot[bot] in https://github.com/Universal-Commerce-Protocol/ucp/pull/169 * fix: clarify version negotiation by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/200 * chore: update CODEOWNERS to implement a hierarchical authority structure by @nearlyforget in https://github.com/Universal-Commerce-Protocol/ucp/pull/234 * feat(catalog): Catalog Search+Lookup capabilities for product discovery by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/55 * ci: disable Super-Linter from writing to PRs by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/243 * fix: re-update mkdocs-material to fix mkdocs build breakage by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/248 * feat: extend discount capability to cart by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/246 * fix: promote reverse_domain_name to standalone type by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/260 * chore(deps): bump black from 26.1.0 to 26.3.1 by @dependabot[bot] in https://github.com/Universal-Commerce-Protocol/ucp/pull/262 * feat!: signals for authorization & abuse by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/203 * feat: eligibility claims & verification contract by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/250 * ci: only set latest alias if this release is the latest by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/249 * feat: formalize totals contract by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/261 * feat: extend warning to support disclosure contract by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/267 * fix: rebuild docs site by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/269 * fix: docs build cleanup by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/268 * feat(embedded): add link delegation extension by @westeezy in https://github.com/Universal-Commerce-Protocol/ucp/pull/247 * feat!: redesign identity linking with mechanism registry and capability-driven scopes by @amithanda in https://github.com/Universal-Commerce-Protocol/ucp/pull/265 * fix: resolve file exists error when symlinking specification by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/278 * chore: Delete generate_ts_schema_types.js by @dwdii in https://github.com/Universal-Commerce-Protocol/ucp/pull/281 * chore(docs): overhaul CI pipeline, fix anchor links, and refine UI navigation by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/270 * feat: Add `ec.totals.change` to Embedded Checkout Protocol by @lemonmade in https://github.com/Universal-Commerce-Protocol/ucp/pull/272 * chore: Remove local issue templates in favor of organization-level templates by @nearlyforget in https://github.com/Universal-Commerce-Protocol/ucp/pull/286 * ci: prepare for release by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/322 * fix!: update total to use signed_amount.json by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/299 * feat!: update Order capability by @richmolj in https://github.com/Universal-Commerce-Protocol/ucp/pull/254 * ci: don't run docs build on release cut by @wry-ry in https://github.com/Universal-Commerce-Protocol/ucp/pull/327 * feat!: Update the Order schema to make currency a required field by @deinck6 in https://github.com/Universal-Commerce-Protocol/ucp/pull/283 * fix(security): update lodash to fix Trivy vulnerabilities by @nearlyforget in https://github.com/Universal-Commerce-Protocol/ucp/pull/333 * feat: Add an optional label field on Order to hold additional identifiers by @jingyli in https://github.com/Universal-Commerce-Protocol/ucp/pull/326 * fix: revert identity linking #265 update by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/329 * feat: get product operation for catalog.lookup by @igrigorik in https://github.com/Universal-Commerce-Protocol/ucp/pull/195 * feat!: Embedded protocol transport binding for cart capability + reauth mechanism in ECP by @jingyli in https://github.com/Universal-Commerce-Protocol/ucp/pull/244 * feat(order): Get Order operation w/ platform-auth by @richmolj in https://github.com/Universal-Commerce-Protocol/ucp/pull/276 * feat!: align embedded protocol errors with UCP error conventions by @westeezy in https://github.com/Universal-Commerce-Protocol/ucp/pull/325 * style!: Clean up transition & deprecated schema in preparation of a version cut by @jingyli in https://github.com/Universal-Commerce-Protocol/ucp/pull/341 * fix!: Cherrypick webhook schema fix into 2026-04-08 version by @jingyli in https://github.com/Universal-Commerce-Protocol/ucp/pull/350 * fix!: Cherrypick catalog variant schema fix into 2026-04-08 version by @jingyli in https://github.com/Universal-Commerce-Protocol/ucp/pull/356 * fix!: Cherrypick critical schema fixes into 2026-04-08 version by @jingyli in https://github.com/Universal-Commerce-Protocol/ucp/pull/440 * feat!: Cherrypick identity linking OAuth 2.0 capability into 2026-04-08 version by @jingyli in https://github.com/Universal-Commerce-Protocol/ucp/pull/431 * chore: Cherrypick attribution feature and other backwards compatible changes into 2026-04-08 version by @jingyli in https://github.com/Universal-Commerce-Protocol/ucp/pull/433 * chore: backport loyalty extension to 2026-04-08 release by @damaz91 in https://github.com/Universal-Commerce-Protocol/ucp/pull/813 ## New Contributors * @kiliczsh made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/67 * @dltkdgkr123 made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/87 * @semenovm made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/120 * @MitkoDeyanovMitev made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/149 * @westeezy made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/157 * @muzaffersenkal made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/76 * @nearlyforget made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/167 * @deinck6 made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/210 * @alexpark20 made their first contribution in https://github.com/Universal-Commerce-Protocol/ucp/pull/216 **Full Changelog**: https://github.com/Universal-Commerce-Protocol/ucp/compare/v2026-01-23...v2026-04-08