io.github.sebastienrousseau/camt-exceptions

Registre officiel Autres

Generate + XSD-validate ISO 20022 E&I camt messages (camt.056 cancellation, camt.029 resolution).

Que pouvez-vous faire avec io.github.sebastienrousseau/camt-exceptions ?

  • list_message_types — List supported E&I message types and names.
  • get_required_fields — Required top-level fields for a message type.
  • generate_message — Generate a validated E&I XML message from a record (validated against the bundled XSD before return).
  • validate_xml — Validate raw XML against a message type's bundled XSD.

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

PYPI package camt-exceptions
Claude Code
claude mcp add camt-exceptions -- uvx camt-exceptions==0.0.20
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "camt-exceptions": {
            "command": "uvx",
            "args": [
                "camt-exceptions==0.0.20"
            ]
        }
    }
}

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. camt-exceptions: ISO 20022 Exceptions & Investigations, generated + XSD-valid
  2. Why E&I
  3. Install
  4. Quick start — cancel a payment
  5. Transports
  6. Tools
  7. Supported messages
  8. The suite
  9. Documentation
  10. Development
  11. License

camt-exceptions: ISO 20022 Exceptions & Investigations, generated + XSD-valid

Generate and validate ISO 20022 Exceptions & Investigations (E&I) camt messages — with an [MCP][mcp] server. Starts with camt.056 (FI-to-FI Payment Cancellation Request): the message a bank sends to recall or cancel a payment it already dispatched — a duplicate, an erroneous amount, a fraud recall. Output is validated against the official bundled XSD before it's returned.

Latest release: v0.0.20: camt.056 + camt.029 generation + validation, 4 MCP tools over stdio, streamable HTTP or SSE, 100% branch coverage, for Python 3.10+. Part of the ISO 20022 MCP suite. Additional E&I messages (camt.029, camt.026, camt.027, camt.087) plug into the same engine.

Why E&I

When a payment goes wrong, the fix is an Exceptions & Investigations message — and these are the least tooled corner of ISO 20022. camt.056 alone covers the single most common need: "I need to cancel/recall that payment." This library makes it a one-call, schema-valid operation for an agent, with the same depth as the credit-transfer generators elsewhere in the suite.

Install

pip install camt-exceptions
# or run the MCP server without installing:
uvx camt-exceptions

MCP client config (e.g. Claude Desktop):

{
  "mcpServers": {
    "camt-exceptions": {
      "command": "camt-exceptions-mcp"
    }
  }
}

Quick start — cancel a payment

from camt_exceptions import generator as g

xml = g.generate_message("camt.056.001.12", {
    "assignment_id": "CXL-001",
    "assigner_agent_bic": "DEUTDEFF",
    "assignee_agent_bic": "COBADEFF",
    "creation_date_time": "2026-03-02T10:00:00",
    "original_msg_id": "MSG-ORIG-001",
    "original_msg_nm_id": "pacs.008.001.08",
    "transactions": [{
        "original_end_to_end_id": "E2E-001",
        "original_interbank_settlement_amount": "1000.00",
        "original_interbank_settlement_currency": "EUR",
        "cancellation_reason_cd": "DUPL",       # duplicate payment
    }],
})
assert g.validate_xml("camt.056.001.12", xml)["is_valid"]   # True

Transports

One command line, three transports:

CommandTransportEndpointProtocol revisions
camt-exceptions-mcpstdiothe client spawns the process2026-07-28, 2025-11-25
camt-exceptions-mcp --transport streamable-httpStreamable HTTPhttp://127.0.0.1:8000/mcp2026-07-28 (stateless, server/discover) and 2025-11-25 (initialize, Mcp-Session-Id) on the same endpoint; responses stream as server-sent events, GET opens the server-to-client stream
camt-exceptions-mcp --transport sseHTTP+SSE (2024-11-05)http://127.0.0.1:8000/sse and /messages/for clients that still expect the older transport

--host and --port change the bind address (defaults 127.0.0.1 and 8000). The HTTP transports carry no authentication of their own: bind loopback, or put the server behind a gateway you trust before binding a routable address. Every release is verified over streamable HTTP with scout in both protocol eras and over SSE with the MCP SDK client; see ADR 0001.

{
  "mcpServers": {
    "camt-exceptions": { "url": "http://127.0.0.1:8000/mcp" }
  }
}

Tools

  • list_message_types — List supported E&I message types and names.
  • get_required_fields — Required top-level fields for a message type.
  • generate_message — Generate a validated E&I XML message from a record (validated against the bundled XSD before return).
  • validate_xml — Validate raw XML against a message type's bundled XSD.

Supported messages

MessageNameStatus
camt.056.001.12FI to FI Payment Cancellation Request✅
camt.029.001.14Resolution of Investigation✅
camt.026Unable to Applyplanned
camt.027Claim Non-Receiptplanned
camt.087Request to Modify Paymentplanned

Each new message plugs into the same engine: bundle its official XSD + template.xml and register it in MESSAGE_TYPES. Generated output is always XSD-validated before return, so correctness is machine-checked, not asserted.

Note: the payment-status and return messages of the E&I family — pacs.002 (Payment Status Report) and pacs.004 (Payment Return) — are already generated, XSD-valid, by [pacs008-mcp][pacs008-mcp].

The suite

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] · [camt053-mcp][camt053-mcp] · [acmt001-mcp][acmt001-mcp] — per-family servers.
  • [reconcile-mcp][reconcile-mcp] — statement/payment reconciliation.

Documentation

Development

git clone https://github.com/sebastienrousseau/camt-exceptions
cd camt-exceptions
python -m venv .venv && . .venv/bin/activate
pip install -e . && pip install pytest pytest-cov hypothesis ruff black mypy interrogate "mutmut>=3.7,<4"
pytest                      # 100% branch coverage gate; output is XSD-validated
ruff check camt_exceptions tests && black --check camt_exceptions tests && mypy camt_exceptions
interrogate -c pyproject.toml camt_exceptions   # 100% docstring gate
mutmut run && mutmut export-cicd-stats && python scripts/mutation_gate.py --floor 90

License

Licensed under the Apache License, Version 2.0 or the MIT License, at your option. Bundled ISO 20022 message schemas (*.xsd) are © ISO 20022 and redistributed under the ISO 20022 terms; they are the same schemas published at iso20022.org.


mcp-name: io.github.sebastienrousseau/camt-exceptions

[mcp]: https://modelcontextprotocol.io [iso20022-mcp]: https://github.com/sebastienrousseau/iso20022-mcp [pain001-mcp]: https://github.com/sebastienrousseau/pain001-mcp [pacs008-mcp]: https://github.com/sebastienrousseau/pacs008-mcp [camt053-mcp]: https://github.com/sebastienrousseau/camt053-mcp [acmt001-mcp]: https://github.com/sebastienrousseau/acmt001-mcp [reconcile-mcp]: https://github.com/sebastienrousseau/reconcile-mcp

Questions fréquentes

Qu'est-ce que io.github.sebastienrousseau/camt-exceptions ?

Generate + XSD-validate ISO 20022 E&I camt messages (camt.056 cancellation, camt.029 resolution).

Comment installer io.github.sebastienrousseau/camt-exceptions ?

Il s'exécute sur votre machine. Dans Claude Code : claude mcp add camt-exceptions -- uvx camt-exceptions==0.0.20. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour io.github.sebastienrousseau/camt-exceptions ?

Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.

io.github.sebastienrousseau/camt-exceptions est-il open source ?

Oui. Son code est sur GitHub sous licence Apache-2.0.

Qui maintient io.github.sebastienrousseau/camt-exceptions ?

Il est publié par sebastienrousseau. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.