# Ucp Ap2 Mandates

> Implement UCP AP2 Mandates extension — cryptographic payment mandates for fully autonomous agent commerce using SD-JWT credentials, merchant authorization signatures, and the Agent Payments Protocol. Use when building autonomous agent payment flows without human-in-the-loop.

- Skill: `orcaqubits/ucp-ap2-mandates` (Agent Skill)
- Install (CLI): `npx skillmds@latest add orcaqubits/ucp-ap2-mandates`
- Raw SKILL.md: https://api.skillmd.com/api/skills/orcaqubits/ucp-ap2-mandates/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: OrcaQubits (https://skillmd.com/u/orcaqubits)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/orcaqubits/ucp-ap2-mandates

---


# UCP AP2 Mandates Extension

## Before writing code

**Fetch live spec**:
- Web-search `site:ucp.dev specification ap2-mandates` for the extension schema
- Fetch https://ucp.dev/2026-01-23/documentation/ucp-and-ap2/ for the conceptual relationship
- Web-search `site:ap2-protocol.org` for the AP2 protocol specification

## Conceptual Architecture

### What AP2 Enables

AP2 (Agent Payments Protocol) enables **fully autonomous agent commerce** — the agent can authorize payments cryptographically without requiring real-time human approval for each transaction. The user pre-authorizes spending parameters, and the agent proves authorization via signed credentials.

### Two Mandate Artifacts

1. **Checkout Mandate** (`ap2.checkout_mandate`): An SD-JWT+kb (Selective Disclosure JWT with Key Binding) credential that proves the user authorized the agent to complete this specific checkout at these specific terms.

2. **Payment Mandate** (`payment_data.token`): A separate credential proving payment authorization, verified by the PSP (not the Business).

### Merchant Authorization

Before the Platform generates mandates, the Business must sign the checkout terms:
- Format: **JWS Detached Content** (RFC 7515 Appendix F) — `<header>..<signature>`
- Canonicalization: **JSON Canonicalization Scheme** (RFC 8785)
- Algorithms: ES256, ES384, ES512 (elliptic curve)

The Business returns this `merchant_authorization` in the checkout response.

### 7-Step Flow

1. **Discovery** — Business publishes AP2 support in capabilities
2. **Session Activation** — Platform signals AP2 intent
3. **Business Signing** — Business returns checkout + `merchant_authorization` (JWS detached content)
4. **Authorization Generation** — Platform creates CheckoutMandate (SD-JWT-VC) + PaymentMandate
5. **Submission** — Platform sends both mandates in the `complete_checkout` call
6. **Verification** — Business verifies checkout mandate; PSP verifies payment mandate
7. **Confirmation** — Order confirmed

### Security Lock

Once AP2 is negotiated for a checkout session, a **Security Lock** is activated: neither party may revert to a standard (non-AP2) checkout flow for that session. This prevents downgrade attacks where a malicious actor could bypass the cryptographic mandate requirements by falling back to a simpler payment flow.

### Error Codes

AP2-specific errors:
- `mandate_required` — AP2 mandates needed but not provided
- `agent_missing_key` — Agent's signing key not found
- `mandate_invalid_signature` — Signature verification failed
- `mandate_expired` — Mandate past validity window
- `mandate_scope_mismatch` — Mandate doesn't match checkout terms
- `merchant_authorization_invalid` — Business signature invalid
- `merchant_authorization_missing` — Business didn't sign terms

### Implementation Guidance

This is the most complex UCP extension. Before implementing:

1. Understand SD-JWT-VC (Selective Disclosure JWT Verifiable Credentials) — this is the credential format
2. Understand JWS Detached Content (RFC 7515 Appendix F) — this is the merchant signing format
3. Understand JSON Canonicalization (RFC 8785) — deterministic JSON serialization for signing
4. Fetch the latest AP2 protocol spec from https://ap2-protocol.org for the full mandate lifecycle
5. Check the conformance test suite: https://github.com/Universal-Commerce-Protocol/conformance (ap2_test.py)

This extension is intended for advanced autonomous agent scenarios. Most initial implementations should start with standard payment handlers (Google Pay, Shop Pay) before adding AP2.

