ISO 20022 MCP Suite — recipes.
Aerial view of illuminated financial district at night

ISO 20022 MCP Suite — recipes.

Four end-to-end flows an agent runs entirely through the suite — from a legacy MT103 to a validated wire, from a bank statement to a reconciled ledger.

Four flows an agent runs end to end, entirely through the published servers. Each is a short chain of tool calls — no glue code, every step validated. New here? Read the quickstart first, or the tool reference.

RECIPE 01 · MIGRATE

A legacy MT103 becomes a validated pacs.008.

  • Convert. pacs008-mcp · convert_mt103(mt_text) → structured pacs.008 records.
  • Validate. validate_records("pacs.008.001.08", records) → schema + rail checks pass.
  • Generate. generate_message("pacs.008.001.08", records) → XSD-valid XML, ready for the network.

The same shape works for convert_mt101 → pain.001 and convert_mt940/convert_mt942 → camt. Migrate one message type at a time.

RECIPE 02 · RECONCILE

A statement, matched to what you expected.

  • Normalise both sides. reconcile-mcp · normalize_camt053(statement) and normalize_pain001(payments) → canonical observed + expected records.
  • Match. reconcile(expected, observed) → exact matches, short/over payments (with the delta), split settlements and batch credits, each with a reason.
  • Explain the edge case. explain_match(expected, observed) → the per-signal score for anything that needs a human.

No data yet? run_sandbox_scenario("month_end") reconciles a realistic mixed close in one call.

RECIPE 03 · CANCEL & RESOLVE

Recall a duplicate wire, then close the case.

  • Cancel. camt-exceptions · generate_message("camt.056.001.12", record) with the original payment references and a cancellation reason (e.g. DUPL) → an XSD-valid FI-to-FI Payment Cancellation Request.
  • Resolve. When the response comes back, generate_message("camt.029.001.14", record) with a confirmation code (e.g. CNCL cancelled, RJCR rejected) → the Resolution of Investigation.

RECIPE 04 · BRIDGE AN AGENT PAYMENT

An AP2 mandate becomes a wire-valid pain.001.

  • Normalise. ap2-iso20022 · normalize_ap2(mandate) → a canonical mandate (works for Coinbase x402 too via normalize_x402).
  • Guardrail. check_mandate(mandate, as_of) → required fields present, within the spending cap, not expired, signed. Stop here if it fails.
  • Convert, then generate. to_pain001(mandate) → a pain.001 record; hand it to pain001-mcp · generate_message for wire-valid XML. The bridge never moves money — sending stays a separate, human-guarded step.

ONE SUITE · THE WHOLE LIFECYCLE

Compose your own.

These four chain the servers end to end; the gateway lets an agent discover and run any of them from natural language.

Quickstart · Tool reference · The suite