Core concept: the mandate
A mandate is a signed authorization:Create a mandate
mandate_jwt is signed by Sly’s mandate authority; merchants and facilitators can verify without calling Sly’s API.
Execute against a mandate
The agent presents the mandate on every transaction:- Mandate is
active(not revoked, not expired) - Amount ≤
max_per_tx - This-day total + amount ≤
max_per_day - This-month total + amount ≤
max_per_month - Merchant is in the allowlist (if set) and not blocked
- Agent KYA tier allows this amount
Revoke a mandate
Update a mandate
Update scope (e.g. raise a limit, extend expiry) without revoking:Mandates and wallet policies
AP2 mandates layer on top of wallet policies, not replace them. An execution must pass:- Mandate scope (from this page)
- Wallet policy (per-agent limits and allowlists)
- KYA tier (account-level and agent-level)
Endpoints
Plus 30+ sub-resource endpoints for mandate templates, explanation of rejections, tier-limit queries, and dispute flows. See API reference.
When to use AP2
- Agent needs persistent spending authority over weeks/months
- You want mandate portability (a single signed object agents can present anywhere)
- You operate in the Google / Gemini ecosystem where AP2 is the native protocol
- You need a user-controllable kill-switch separate from agent credentials (revoking the mandate instantly blocks spending without changing the agent)