Bridge AP2 / x402 agent-payment mandates into wire-valid ISO 20022 pain.001 / pacs.008 records.
MCPpedia last refreshed this data
io.github.sebastienrousseau/ap2-iso20022 is an MCP server that bridge AP2 / x402 agent-payment mandates into wire-valid ISO 20022 pain.001 / pacs.008 records. Its tool list has not been published yet over stdio and sse, requires no API key, and scores 87/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"ap2-iso20022": {
"command": "ap2-iso20022-mcp"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Bridge [AP2][ap2] (Google's Agent Payments Protocol) and [x402][x402] (Coinbase's HTTP-402) mandates into ISO 20022 pain.001 / pacs.008 records — with spending-cap, expiry and authorisation guardrails, and an [MCP][mcp] server. These agentic-payment protocols authorise a payment; this library turns that authorisation into the bank-rail message that actually settles it — the rail the card networks and stablecoins don't cover.
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
uvx 'ap2-iso20022' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked ap2-iso20022 against OSV.dev.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in finance
Real-time financial market data: stocks, forex, crypto, commodities, and economic indicators
HoneyBook client-portal MCP server for Claude — view contracts and invoices from wedding vendors
Self-custody Ethereum agent wallet (MCP/stdio). Keys stay in a local Docker volume.
MCP server for QuickBooks Online — accounts, customers, invoices, bills, and reports.
MCP Security Weekly
Get CVE alerts and security updates for io.github.sebastienrousseau/ap2-iso20022 and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Bridge [AP2][ap2] (Google's Agent Payments Protocol) and [x402][x402]
(Coinbase's HTTP-402) mandates into ISO 20022 pain.001 / pacs.008 records —
with spending-cap, expiry and authorisation guardrails, and an [MCP][mcp]
server. These agentic-payment protocols authorise a payment; this library
turns that authorisation into the bank-rail message that actually settles it
— the rail the card networks and stablecoins don't cover.
Latest release: v0.0.1 — 5 MCP tools over stdio, pure-Python (only
mcp), 100% branch coverage, for Python 3.10+. Output feeds straight into [pain001][pain001-mcp] / [pacs008][pacs008-mcp] to generate wire-valid XML. Part of the ISO 20022 MCP suite.
An agent with a signed AP2 mandate (or an x402 payment authorisation) can prove
it's allowed to pay — but nothing in those protocols emits the pain.001 a
bank needs to move the money. ap2-iso20022 is that missing hop. And because
moving money is consequential, it only transforms and validates — producing
the ISO record is deliberately separate from generating and sending it, so the
actual payment stays an explicit, guarded step.
pip install ap2-iso20022
# or run the MCP server without installing:
uvx ap2-iso20022
MCP client config (e.g. Claude Desktop):
{
"mcpServers": {
"ap2-iso20022": {
"command": "ap2-iso20022-mcp"
}
}
}
from ap2_iso20022 import bridge
# 1. Normalise the protocol payload into a canonical mandate.
mandate = bridge.from_ap2({
"intent_id": "AP2-CoffeeRun-7",
"payer": "Alice's Shopping Agent",
"payer_account": "DE89370400440532013000",
"merchant_name": "Blue Bottle Coffee",
"payee_account": "GB29NWBK60161331926819",
"amount": "12.50", "currency": "EUR", "memo": "oat latte",
"spending_limit": "50.00",
"signature": "eyJ...", "signature_type": "jws",
})
# 2. Guardrail before it becomes a payment.
check = bridge.check_mandate(mandate, as_of="2026-03-02T09:00:00")
assert check["ok"] # required fields ok, within cap, not expired, signed
# 3. Convert to a pain.001 record that feeds pain001 -> wire-valid XML.
record = bridge.to_pain001(mandate) # exact pain001 field names + JSON number amounts
normalize_ap2 — AP2 mandate payload → canonical mandate.normalize_x402 — x402 payment payload → canonical mandate.check_mandate — Guardrail: required fields, spending cap, expiry (with as_of), authorisation proof.to_pain001 — Canonical mandate → pain.001 record (customer credit transfer).to_pacs008 — Canonical mandate → pacs.008 record (FI-to-FI).The output field names and types match what pain001 / pacs008 expect
(validated against their JSON schemas), so to_pain001(mandate) → pain001
generate_message → XSD-valid pain.001 with no glue.
check_mandate returns {ok, violations, warnings}:
amount <= max_amount when a cap is presentas_ofproof_type/proof_value is presentIt never moves money; it tells you whether the mandate is safe to act on.
Part of a family of vendor-neutral, Python-native ISO 20022 MCP servers:
iso20022-mcp][iso20022-mcp] — unified gateway across the families.pain001-mcp][pain001-mcp] · [pacs008-mcp][pacs008-mcp] — generate the XML this bridge feeds.reconcile-mcp][reconcile-mcp] — statement/payment reconciliation.camt-exceptions][camt-exceptions] — E&I messages (cancellation, investigation).git clone https://github.com/sebastienrousseau/ap2-iso20022
cd ap2-iso20022
python -m venv .venv && . .venv/bin/activate
pip install -e . && pip install p
... [View full README on GitHub](https://github.com/sebastienrousseau/ap2-iso20022#readme)