Translates a payment mandate declared under one agentic-payment protocol (AP2, x402, or ACP) into another, by pivoting through one internal canonical schema instead of a pairwise table per protocol combination. The result is the translated mandate plus a mapping receipt — source digest, target digest, mapping-table version, and a declared lossy-fields list — so any field the source protocol could not carry is surfaced honestly rather than silently dropped. Nothing here initiates, routes, or settles a payment.
The pay mcp permissions file is a client-side limit: the agent runtime checks it before it builds or signs a payment. An AINumbers Policy Mandate is a signed, verifiable authorization that a third party can check later. This table shows the nearest field for each permission key. The Policy Mandate v1.0 schema has no top-level member for any of them, so each would travel inside payload. The art-476 column names the closest field in the canonical pivot used by this mapper.
| Permission key | Type and default | Nearest Policy Mandate field | Nearest art-476 canonical field |
|---|---|---|---|
origins | list of exact HTTP(S) origins; omitted means any origin | payload key, for example allowed_origins | payee_ref (a merchant identifier, not an origin) |
networks | list of Solana clusters; omitted means mainnet only | payload key; no top-level equivalent | No equivalent |
max_payment | USD string such as "$1.00", global stablecoin cap | payload key, for example max_payment | max_amount |
unlimited_amount | boolean, default false; cannot be combined with max_payment | No equivalent; a mandate with no cap simply omits one | No equivalent |
allow_any_asset | boolean, default false; false limits payments to known stablecoins | payload key | currency (one code per mandate, no allow-list) |
assets | list of network, asset and optional atomic cap | No equivalent for a per-asset allowance | No equivalent |
origin_overrides | list of per-origin caps; never adds an origin to origins | No equivalent for a per-origin cap | No equivalent |
| (not in the file) | no validity window | valid_from, valid_until | issued_at, expires_at |
Sources, pinned by commit. Key names and shape: pay, rust/crates/mcp/src/permissions.rs, lines 15 to 60, and the README example at lines 68 to 76. Defaults: pay-kit, rust/crates/kit/src/client/permissions.rs, lines 303 to 309. Mandate fields: CONTRACT.md section 3.1. Read as of October 2026.
Copy this paragraph into Claude, OpenClaw, or any MCP-aware agent to run this exact tool, with this sample, and verify the artifact.
Run the AINumbers MCP tool `map_agent_payment_mandate`. Task: Translate an agentic-payment mandate declared under one protocol (AP2, x402, or ACP) into the field vocabulary of another, pivoting through one internal canonical schema so each protocol needs only one mapping in and one mapping out.
Call it with arguments: {"policy_parameters":{"source_protocol":"ap2","target_protocol":"x402","source_mandate":{"mandate_id":"ap2-pay-001","mandate_type":"payment","merchant_id":"merchant-42","amount":25.5,"currency":"USDC","issued_at":"2026-07-24T10:00:00Z","expires_at":"2026-07-24T11:00:00Z","human_not_present":true,"scope":{"max_amount":100,"merchant_ids":["merchant-42"]}}}}
Verify before trusting: call `verify_execution_hash` on mcp.ainumbers.co (https://mcp.ainumbers.co/mcp) with the parameter `claimed_hash` set to the returned `execution_hash`, passing the full artifact the run returned (the object containing `policy_parameters` + `output_payload` + `execution_hash`; equivalently `policy_parameters` + `output_payload` with `claimed_hash`), not the bare hash string.
Return the ledger link https://ledger.ainumbers.co/ so a human can re-verify without contacting us.
PII rule: All inputs are processed locally in your browser. No data is transmitted. Do not enter real personal data — use synthetic or anonymised inputs only.
Open the tool with the sample prefilled: https://ainumbers.co/chaingraph/art-476-map-agent-payment-mandate.html#p=v1.H4sIAAAAAAAA_wFPAbD-eyJzb3VyY2VfcHJvdG9jb2wiOiJhcDIiLCJ0YXJnZXRfcHJvdG9jb2wiOiJ4NDAyIiwic291cmNlX21hbmRhdGUiOnsibWFuZGF0ZV9pZCI6ImFwMi1wYXktMDAxIiwibWFuZGF0ZV90eXBlIjoicGF5bWVudCIsIm1lcmNoYW50X2lkIjoibWVyY2hhbnQtNDIiLCJhbW91bnQiOjI1LjUsImN1cnJlbmN5IjoiVVNEQyIsImlzc3VlZF9hdCI6IjIwMjYtMDctMjRUMTA6MDA6MDBaIiwiZXhwaXJlc19hdCI6IjIwMjYtMDctMjRUMTE6MDA6MDBaIiwiaHVtYW5fbm90X3ByZXNlbnQiOnRydWUsInNjb3BlIjp7Im1heF9hbW91bnQiOjEwMCwibWVyY2hhbnRfaWRzIjpbIm1lcmNoYW50LTQyIl19fX0MRkKsTwEAAA