From d58da0e430951c6eabd27c0156d70f601a796a9a Mon Sep 17 00:00:00 2001 From: Mark Doeseckle Date: Thu, 15 Jan 2026 17:51:41 +0000 Subject: [PATCH 1/3] docs: Add article "UCP Translates AP2 Requirements into Reality" --- docs/index.md | 1 + docs/topics/ap2-and-ucp.md | 43 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 docs/topics/ap2-and-ucp.md diff --git a/docs/index.md b/docs/index.md index 5c42c2bc..94e26c4e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -54,6 +54,7 @@ in progress. [:octicons-arrow-right-24: Overview](topics/what-is-ap2.md)
[:octicons-arrow-right-24: Core Concepts](topics/core-concepts.md)
+ [:octicons-arrow-right-24: AP2, A2A and MCP](topics/ap2-and-ucp.md)
[:octicons-arrow-right-24: AP2, A2A and MCP](topics/ap2-a2a-and-mcp.md)
[:octicons-arrow-right-24: AP2 and x402](topics/ap2-and-x402.md)
[:octicons-arrow-right-24: Privacy and Security](topics/privacy-and-security.md)
diff --git a/docs/topics/ap2-and-ucp.md b/docs/topics/ap2-and-ucp.md new file mode 100644 index 00000000..6fe6f3df --- /dev/null +++ b/docs/topics/ap2-and-ucp.md @@ -0,0 +1,43 @@ +# UCP Translates AP2 Requirements into Reality + +UCP is fully compatible with Agent Payments Protocol (AP2) via its +[**AP2 Mandates Extension**](https://ucp.dev/specification/ap2-mandates/). When +this extension is enabled, it captures strong cryptographic evidence of the +user’s consent to purchase. + +This article aims to help bridge the gap between UCP and AP2 terminology, to +help readers of both protocols understand exactly how UCP is fully +AP2-compliant. + +## The Checkout Object: UCP’s Implementation of the AP2 CartMandate + +At the center of every UCP checkout session is the +[**Checkout Object**](https://ucp.dev/specification/ap2-mandates/#step-1-checkout-creation-signing), +which serves as the functional equivalent of the **AP2 CartMandate**. Both +structures exist to formalize the merchant’s offer to the user. + +Aligning fully with the AP2 protocol, the UCP Checkout object encapsulates: + +* A clear list of the items being purchased. +* A total price breakdown, including tax and shipping. +* The merchant’s cryptographic signature ensuring the merchant’s offer remains + non-repudiable. + +## Proof of User Authorization: From Checkout to Payment Mandate + +To finalize a purchase, AP2 requires verifiable proof of user authorization for +both the purchase and the payment method. UCP implements this by generating and +signing two distinct cryptographic objects during the checkout flow: + +1. **The CheckoutMandate:** This represents the user's signed authorization of + the Checkout object. It provides the merchant with non-repudiable proof of + what the user agreed to buy. +2. **The PaymentMandate:** This captures the user's authorization of a specific + Payment Credential. It serves as proof for the payment network, issuer, and + credential vault that the user has sanctioned the use of their credentials + for this specific transaction. + +Both mandates are provided to the merchant via UCP’s +[/complete_checkout](https://ucp.dev/specification/checkout/#complete-checkout) +API, with the expectation that the **PaymentMandate** is passed along by the +merchant to their PSP. From 8f1c8bc73be5702a349b6f99f3aa35d915c1b674 Mon Sep 17 00:00:00 2001 From: Holt Skinner <13262395+holtskinner@users.noreply.github.com> Date: Thu, 15 Jan 2026 12:23:23 -0600 Subject: [PATCH 2/3] Update docs/index.md Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 94e26c4e..51f85294 100644 --- a/docs/index.md +++ b/docs/index.md @@ -54,7 +54,7 @@ in progress. [:octicons-arrow-right-24: Overview](topics/what-is-ap2.md)
[:octicons-arrow-right-24: Core Concepts](topics/core-concepts.md)
- [:octicons-arrow-right-24: AP2, A2A and MCP](topics/ap2-and-ucp.md)
+ [:octicons-arrow-right-24: AP2 and UCP](topics/ap2-and-ucp.md)
[:octicons-arrow-right-24: AP2, A2A and MCP](topics/ap2-a2a-and-mcp.md)
[:octicons-arrow-right-24: AP2 and x402](topics/ap2-and-x402.md)
[:octicons-arrow-right-24: Privacy and Security](topics/privacy-and-security.md)
From 6b98532b6a5e873561d487b7d3e5f386b810d0b0 Mon Sep 17 00:00:00 2001 From: Holt Skinner <13262395+holtskinner@users.noreply.github.com> Date: Thu, 15 Jan 2026 12:23:36 -0600 Subject: [PATCH 3/3] Update docs/topics/ap2-and-ucp.md Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- docs/topics/ap2-and-ucp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/topics/ap2-and-ucp.md b/docs/topics/ap2-and-ucp.md index 6fe6f3df..1c83261b 100644 --- a/docs/topics/ap2-and-ucp.md +++ b/docs/topics/ap2-and-ucp.md @@ -38,6 +38,6 @@ signing two distinct cryptographic objects during the checkout flow: for this specific transaction. Both mandates are provided to the merchant via UCP’s -[/complete_checkout](https://ucp.dev/specification/checkout/#complete-checkout) +[`/complete_checkout`](https://ucp.dev/specification/checkout/#complete-checkout) API, with the expectation that the **PaymentMandate** is passed along by the merchant to their PSP.