ISO 20022 Navigator
Datos de referencia de solo lectura para mensajería financiera ISO 20022. Consulte los códigos de transacción bancaria, asigne mensajes heredados de SWIFT MT, NACHA y CHAPS a ISO 20022, y vea qué esquemas de pago utilizan un mensaje. Gratis, sin autenticación.
Servidor MCP alojado
npx add-mcp 'https://mcp.isonavigator.io/iso20022'Se instala en Claude Code, Codex, Cursor y más
Documentación
ISO 20022 Navigator MCP server
An MCP server that gives AI assistants grounded answers about ISO 20022 financial messaging, from the reference data behind the ISO 20022 Navigator.
Free and public. The endpoint URL is all a client needs.
Endpoint: https://mcp.isonavigator.io/iso20022 (Streamable HTTP, open access)
Documentation · Privacy · Support: i22navigatorapp@gmail.com
Tools
All tools are read-only.
| Tool | What it answers |
|---|---|
iso20022_bank_transaction_codes | What an ISO 20022 Bank Transaction Code (domain, family, subfamily) means, and which codes exist under a domain or family. |
iso20022_message_details | What a specific ISO 20022 message is: its name, description, business area, latest version and structure size. |
iso20022_legacy_and_scheme_mappings | Which ISO 20022 message replaces a legacy message, and which payment schemes use an ISO 20022 message. |
iso20022_code_sets | What an ISO 20022 external code set contains, what a code means, and which code sets a message uses. |
iso20022_bank_transaction_codes
- Answers: what an ISO 20022 Bank Transaction Code means: the domain, family and subfamily codes that classify entries in bank statements and account reports, for example
PMNT-RCDT-ESCT. It also shows which families sit under a domain, which subfamilies under a family, and where a code appears. - Input:
code, written domain-family-subfamily with hyphens. Any part can stand alone or be skipped:PMNT: a domain, with its families.PMNT-RCDT: a domain and family, with the subfamilies.PMNT-RCDT-ESCT: a full code, with the three names and a description./RCDTand//ESCT: a family or a subfamily on its own (the leading slashes fix the level)./RCDT/ESCTandPMNT//ESCT: two parts with one level skipped.ESCT: no level given; every level where the code exists is returned.
- Returns: official names, counts, lists of the related codes, a description when one combination matches, notes and a
provenanceblock. A code that is not found says where each part exists and lists the closest existing codes. - Example questions:
- What does bank transaction code PMNT-RCDT-ESCT mean?
- Which families does the PMNT domain contain?
- Which domains use the family RCDT?
- Is OTHR a family or a subfamily?
- Notes:
- Covers the ISO external code list. Bank-specific (proprietary) codes are outside it, so a code that is not found may be one of those.
- Codes are matched, not meanings. To find a code for a type of transaction, browse from the domain down.
- Combination descriptions are AI-generated and validated against the official ISO definitions.
iso20022_message_details
- Answers: what a specific ISO 20022 message is, for example
pacs.008orcamt.053: its official name, a plain-English description, the business area and domain it belongs to, its latest version and the size and shape of its structure. - Input:
message_id, four letters and three digits. Any case works, and a dot, hyphen, underscore, space or a bare join all work (pacs.008,PACS-008,pacs008). A full identifier such aspacs.008.001.13is accepted too; the response describes the latest version held and notes any difference. - Returns: the message name, description, business area (code, name and domain), the Navigator's functional grouping, latest version, structure statistics (total elements, maximum depth and element counts at each depth), the number of external code sets the message uses with a
next_callspointer toiso20022_code_setsfor the list, notes and aprovenanceblock. A message that is missing from the dataset says so and lists up to five held messages in the same business area, nearest number first. - Example questions:
- What is pacs.008?
- Which business area does camt.053 belong to?
- How large is the pain.001 message definition?
- Is camt.099 still current?
- Notes:
- Covers the standard variant (variant 1) of each message, at the latest version held.
- Structure figures are element counts from the message definition. The element tree itself is outside this tool's response. Counts cover every declared element: optional elements and every alternative of a choice are counted alongside mandatory ones, so the figures describe the size of the definition, and a single message instance uses a subset of it.
total_elementsalso counts the two elements at depths 0 and 1 (Document container, message), whichelements_by_depthomits. - The functional grouping is the Navigator's own and is separate from the ISO 20022 standard.
- Retired messages are returned with the data load in which they were retired.
- Descriptions are AI-generated and validated against the official ISO definitions.
iso20022_legacy_and_scheme_mappings
- Answers: which ISO 20022 message replaces a legacy message (SWIFT MT, NACHA, CHAPS legacy), for example MT103 → pacs.008, and which payment schemes use an ISO 20022 message.
- Inputs:
message(a legacy or ISO 20022 message, such asMT103,940orpacs.008) and an optionalstandard(narrows the answer to one standard or scheme, such asSEPA). - Returns: message-level mappings with status, scheme usage, notes and a
provenanceblock. - Example questions:
- What replaced MT103?
- What is the ISO 20022 equivalent of MT940?
- Which payment schemes use pacs.008?
- Is tsin.004 still current?
- Notes:
- Latest message version only. A version in the input (for example
pacs.008.001.08) maps to its message (pacs.008). - Retired messages are returned with the data load in which they were retired.
- Responses list what the Navigator has recorded. When a mapping is missing, the response says so and directs assistants to answer from the recorded data.
- Latest message version only. A version in the input (for example
iso20022_code_sets
- Answers: what an ISO 20022 external code set contains (for example
BalanceType), what a code such asCLBDmeans, whether a code belongs to a set, which code sets a message uses, and which messages use a code set. - Inputs:
message(a code set such asBalanceTypeorExternalBalanceType1Code, a code such asCLBD, or an ISO 20022 message such ascamt.053), an optionalcode(checks one value in the code set) and an optionaloffset(continues a long list). - Returns: for a code set, its details, its values (code, name, description) and the messages that use it with their number (
message_count). For a code, every code set that holds it. For a message, its code sets with their number of values. Lists arrive as pipe-delimited text with a header row. Long lists come in pages; each response states whether the list is complete and thenext_offsetto continue. - Example questions:
- Which codes does the BalanceType code set contain?
- Is CLBD a valid balance type code?
- What does the code OTHR mean in ISO 20022?
- Which code sets does camt.053 use?
- Notes:
- Bank Transaction Code values are served by
iso20022_bank_transaction_codes. - Links between code sets and messages are recorded per message, and per element is outside the data.
- Deactivated values are returned with the data load in which they were deactivated.
- Code set descriptions (
concept_description) are AI-generated. Value descriptions are ISO text. navigator_groupis the Navigator's own grouping of code sets, which differs from an ISO classification.
- Bank Transaction Code values are served by
Getting the assistant to use it
Some assistants answer from general knowledge unless asked to use a tool, a choice made by the assistant. Adding the following line to a Project's instructions helps the assistant use the tools where they apply:
For any question about ISO 20022 bank transaction codes, messages, their legacy equivalents (SWIFT MT, NACHA), which payment schemes use a message, what an external code set or code means, or which code sets a message uses, call the ISO Navigator connector first and answer from its data.
Other assistants may behave differently. If an answer comes without a tool call, ask again with "according to the ISO Navigator".
Usage limits
- Shared rate limit. The limit is 600 calls per minute across all users together. When it is reached, the response says how long to wait before retrying.
- Request size. Requests up to 64 KB are accepted, and the server handles up to 20 requests at the same time.
Data
Every response carries a provenance block. Its data_baseline (for example 4Q2025) is the quarter of the Navigator's baseline data load, which marks when the data was added to the Navigator and differs from any ISO 20022 publication date. Check the scheme's or SWIFT's own current documentation before relying on a migration date.
The Navigator records a selection of the world's payment schemes, not all of them. The standards covered are SWIFT MT, SEPA, CIPS, NACHA / ACH, AFT, Lynx, RTR, CHAPS, Elixir, iDEAL, SIC, Bankgirot, NPP, MEPS+, RENTAS and BAHTNET. A scheme not on this list, such as T2, FedNow or Fedwire, has no recorded mappings, so the response will not list it.
Some explanations are AI-generated. Verify against official ISO 20022 and scheme documentation before use in production.
Connect
Use the endpoint URL above. Menu names change between releases; if a label below differs from what you see, the client's own MCP documentation is the reference.
Claude (web and desktop app)
- Open Customize → Connectors, choose + Add → Add custom connector.
- Enter a name (for example
ISO 20022 Navigator) and the endpoint URL. Leave authentication off. - In a chat, use the + button at the lower left, then Connectors, and switch the connector on.
On Team and Enterprise plans an owner first adds it under Organization settings → Connectors → Add → Custom → Web; members then connect it from Customize → Connectors. The Free plan allows one custom connector. See Anthropic's guide.
Claude Code
claude mcp add --transport http iso20022 https://mcp.isonavigator.io/iso20022
Check it with claude mcp list, or /mcp inside Claude Code. Add --scope user to make it available in every project.
VS Code with GitHub Copilot
-
Run MCP: Open User Configuration from the Command Palette (or create
.vscode/mcp.jsonin a project). -
Add:
{ "servers": { "iso20022": { "type": "http", "url": "https://mcp.isonavigator.io/iso20022" } } } -
Run MCP: List Servers, select
iso20022and start (or restart) it. -
Use Copilot Chat in Agent mode; the tools appear in the tools list.
Cursor
Add to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):
{
"mcpServers": {
"iso20022": {
"url": "https://mcp.isonavigator.io/iso20022"
}
}
}
Tools can be switched on and off from the chat's tools list.
ChatGPT
Custom MCP connectors need developer mode and are available on the web. Availability depends on your plan; see OpenAI's guide. In short: turn on developer mode under Settings → Apps → Advanced settings, choose Create, enter the endpoint URL and leave authentication off, select Scan Tools, then Create. This server reads data, so read-only access is enough.
Codex CLI
codex mcp add iso20022 --url https://mcp.isonavigator.io/iso20022
This saves the server to ~/.codex/config.toml. Or add it there yourself (.codex/config.toml for one trusted project):
[mcp_servers.iso20022]
url = "https://mcp.isonavigator.io/iso20022"
Check it with codex mcp list, or /mcp inside a Codex session.
Gemini CLI
gemini mcp add --transport http iso20022 https://mcp.isonavigator.io/iso20022
Add --scope user to make it available in every project; the default is the current project only. Or add it to ~/.gemini/settings.json (.gemini/settings.json for one project):
{
"mcpServers": {
"iso20022": {
"httpUrl": "https://mcp.isonavigator.io/iso20022"
}
}
}
Use httpUrl, not url, which is for SSE servers. Check it with gemini mcp list, or /mcp inside a session. Which Google accounts or API keys Gemini CLI accepts is set by Google and has changed; check Google's current documentation if it will not start.
Any other MCP client
Any client that supports remote MCP servers over Streamable HTTP can use the endpoint URL. A database-independent
health check is at https://mcp.isonavigator.io/iso20022/health.
Run locally
Requires Python 3.14 and access to the Navigator database (private).
python -m venv .venv
.venv\Scripts\activate # Windows; on macOS/Linux: source .venv/bin/activate
pip install -r requirements.txt
Put the connection string in a .env file as DATABASE_URL=..., then either:
python server.py— stdio transport, for Claude Desktop or MCP Inspector- set
MCP_TRANSPORT=http, thenpython server.py— HTTP transport as deployed, athttp://localhost:8000/iso20022(health check:/iso20022/health)
See the top of server.py for the other settings.
Tests
pip install -r requirements-dev.txt
bandit -q -r . -x ./tests,./.venv
ruff check .
python -m pytest -q
Database tests run when DATABASE_URL is available.
License
The code is under the MIT License. The reference data served by the tools sits outside this repository and its license.