# ISO 20022 Navigator

> Look up ISO 20022 messages, bank transaction codes, legacy MT replacements, schemes and code sets.

- name: io.github.kreativeManish/iso20022-navigator
- version: 0.2.0
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 87/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.kreativeManish%2Fiso20022-navigator
- tools: https://api.protogrid.dev/v1/servers/io.github.kreativeManish%2Fiso20022-navigator/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "iso20022-navigator": {
      "type": "http",
      "url": "https://mcp.isonavigator.io/iso20022"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% +updated-7d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 87/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 3 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 4 of 4 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,107 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 6 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 4, about 2,107 tokens to load them all
- tool set hash: 897cc4c9029a69f7b4ecaf4e6babb0c3
- tools last changed: 2026-10-13T05:26:38.478Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.kreativeManish/iso20022-navigator.svg)](https://protogrid.dev/servers/io.github.kreativeManish/iso20022-navigator)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-13 `iso20022_code_sets` changed (outputSchema)
- 2026-10-13 `iso20022_message_details` changed (description, outputSchema)
  - before: Use for ANY question about what an ISO 20022 message is: its official name, purpose, business area, latest version, and the size and shape of its structure. Send a message identifier such as pacs.008, camt.053 or pain.001. Call it even when the message looks familiar: it returns the official name, a plain-English description, the business area and domain, the Navigator's own functional grouping, whether the message is retired, structure statistics (total elements, maximum depth, element counts at each depth) and the number of external code sets the message uses. Covers the standard variant (variant 1) of each message, at the latest version held. For legacy equivalents (SWIFT MT, NACHA, CHAPS) and the schemes that use a message, use iso20022_legacy_and_scheme_mappings.
  - after: Use for ANY question about what an ISO 20022 message is: its official name, purpose, business area, latest version, and the size and shape of its structure. Send a message identifier such as pacs.008, camt.053 or pain.001. Call it even when the message looks familiar: it returns the official name, a plain-English description, the business area and domain, the Navigator's own functional grouping, whether the message is retired, structure statistics (total elements, maximum depth, element counts at each depth) and the number of external code sets the message uses. Covers the standard variant (variant 1) of each message, at the latest version held. For legacy equivalents (SWIFT MT, NACHA, CHAPS) and the schemes that use a message, use iso20022_legacy_and_scheme_mappings. For the list of code sets a message uses, use iso20022_code_sets (the response's next_calls names it).
- 2026-10-12 `iso20022_code_sets` added
  - Use for ANY question about ISO 20022 external code sets: the values of a code set (BalanceType, ReturnReason, Purpose, StatusReason, ...), what a code means (CLBD, OTHR, ...), whether a code is valid in a code set, which code sets a message uses (camt.053, pain.001, ...), or which messages use a code set. Call it even when the answer seems well known: it returns the sourced, current values with their official descriptions and flags deactivated ones. Send one identifier in `message`: - A code set (BalanceType, or ExternalBalanceType1Code): its description, its values (code, name, description) and the messages that use it. Add `code` to check a single value. - A code (CLBD): every code set that contains it, with the name and description in each. - An ISO 20022 message (camt.053): the code sets it uses, with their number of values. The values, code sets and matches are pipe-delimited text with a header row. Long lists are paged by whole rows: when `page.complete` is false, call again with the same input and the offset in `page.next_offset` until it is true, before answering about the whole list. Not covered: Bank Transaction Codes (PMNT, PMNT-RCDT-ESCT; use iso20022_bank_transaction_codes), which ISO 20022 message replaces a legacy message or which schemes use one (use iso20022_legacy_and_scheme_mappings), and what a message itself contains. Code set usage is message-level, not element-level. The code set description (concept_description) is AI-generated.
- 2026-10-11 `iso20022_message_details` added
  - Use for ANY question about what an ISO 20022 message is: its official name, purpose, business area, latest version, and the size and shape of its structure. Send a message identifier such as pacs.008, camt.053 or pain.001. Call it even when the message looks familiar: it returns the official name, a plain-English description, the business area and domain, the Navigator's own functional grouping, whether the message is retired, structure statistics (total elements, maximum depth, element counts at each depth) and the number of external code sets the message uses. Covers the standard variant (variant 1) of each message, at the latest version held. For legacy equivalents (SWIFT MT, NACHA, CHAPS) and the schemes that use a message, use iso20022_legacy_and_scheme_mappings.
- 2026-10-08 `iso20022_legacy_and_scheme_mappings` changed (outputSchema)
- 2026-10-08 `iso20022_bank_transaction_codes` added
  - Use for ANY question about ISO 20022 Bank Transaction Codes (BTC): the Domain / Family / SubFamily codes that classify entries in bank statements and account reports, such as PMNT, PMNT-RCDT or PMNT-RCDT-ESCT. Call it even when the code looks familiar: it returns the official names, descriptions and how the codes fit together. Send the code in one of these forms: - PMNT (a domain): its name and its families. - PMNT-RCDT (domain and family): both names and its subfamilies. - PMNT-RCDT-ESCT (all three): the three names and an explanation of the combination. - /RCDT (a family): its name, the domains it appears in and its subfamilies. - //ESCT (a subfamily): its name, the domains and families it appears in. - /RCDT/ESCT (family and subfamily): the domains where this pair exists. - PMNT//ESCT (domain and subfamily): the families under PMNT that contain ESCT. - ESCT (no level given): matched as a domain, a family and a subfamily; each level where it exists is returned separately. This tool matches codes, not meanings. To find the code for a type of transaction, browse from the domain down: PMNT, then its families, then their subfamilies. It covers the ISO external code list only; bank-specific (proprietary) codes are outside it. It has no information about message structure or how a bank fills in a code.

Full history: https://api.protogrid.dev/v1/servers/io.github.kreativeManish%2Fiso20022-navigator/changes

## Remotes

- https://mcp.isonavigator.io/iso20022 (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (4)

- `iso20022_bank_transaction_codes`: Use for ANY question about ISO 20022 Bank Transaction Codes (BTC): the Domain / Family /
SubFamily codes that classify entries in bank statements and account reports, such as PMNT,
PMNT-RCDT or PMNT-RCDT-ESCT. Call it even when the code looks familiar: it returns the
official names, descriptions and how the codes fit together.

Send the code in one of these forms:
- PMNT (a domain): its name and its families.
- PMNT-RCDT (domain and family): both names and its subfamilies.
- PMNT-RCDT-ESCT (all three): the three names and an explanation of the combination.
- /RCDT (a family): its name, the domains it appears in and its subfamilies.
- //ESCT (a subfamily): its name, the domains and families it appears in.
- /RCDT/ESCT (family and subfamily): the domains where this pair exists.
- PMNT//ESCT (domain and subfamily): the families under PMNT that contain ESCT.
- ESCT (no level given): matched as a domain, a family and a subfamily; each level
  where it exists is returned separately.

This tool matches codes, not meanings. To find the code for a type of transaction, browse
from the domain down: PMNT, then its families, then their subfamilies. It covers the ISO
external code list only; bank-specific (proprietary) codes are outside it. It has no
information about message structure or how a bank fills in a code.

- `iso20022_code_sets`: Use for ANY question about ISO 20022 external code sets: the values of a code set (BalanceType,
ReturnReason, Purpose, StatusReason, ...), what a code means (CLBD, OTHR, ...), whether a code is
valid in a code set, which code sets a message uses (camt.053, pain.001, ...), or which messages
use a code set. Call it even when the answer seems well known: it returns the sourced, current
values with their official descriptions and flags deactivated ones.

Send one identifier in `message`:
- A code set (BalanceType, or ExternalBalanceType1Code): its description, its values (code, name,
  description) and the messages that use it. Add `code` to check a single value.
- A code (CLBD): every code set that contains it, with the name and description in each.
- An ISO 20022 message (camt.053): the code sets it uses, with their number of values.

The values, code sets and matches are pipe-delimited text with a header row. Long lists are paged
by whole rows: when `page.complete` is false, call again with the same input and the offset in
`page.next_offset` until it is true, before answering about the whole list.

Not covered: Bank Transaction Codes (PMNT, PMNT-RCDT-ESCT; use iso20022_bank_transaction_codes),
which ISO 20022 message replaces a legacy message or which schemes use one (use
iso20022_legacy_and_scheme_mappings), and what a message itself contains. Code set usage is
message-level, not element-level. The code set description (concept_description) is AI-generated.

- `iso20022_legacy_and_scheme_mappings`: Use for ANY question about what replaces or corresponds to a legacy payment message
(SWIFT MT such as MT103, MT202, MT940; NACHA; CHAPS), or which payment schemes use an
ISO 20022 message (pacs.008, pain.001, pain.008, camt.053; SEPA, NPP, CHAPS, Lynx, CIPS
and others). Call it even when the answer seems well known: it returns sourced, current
mappings with status and caveats.

For "which schemes use X", call once with only the message: the response lists every
recorded scheme (without descriptions, to keep it compact). Omit `standard` unless the
user names one scheme; with `standard`, the response includes that scheme's description.

- Legacy input (MT103, 940, ACH Statement): returns its ISO 20022 equivalent(s)
  in legacy_equivalents.
- ISO 20022 input (pacs.008): returns legacy_equivalents (legacy messages that map to
  it) and used_by_schemes (schemes that use it).

Mappings are message-level only; this tool does not map individual fields and has no
information about a message's structure, elements or rules. Do not cite it for those.
ISO 20022 messages that have been retired are returned flagged with
iso20022_deactivated_in, not hidden.

- `iso20022_message_details`: Use for ANY question about what an ISO 20022 message is: its official name, purpose, business
area, latest version, and the size and shape of its structure. Send a message identifier such
as pacs.008, camt.053 or pain.001. Call it even when the message looks familiar: it returns the
official name, a plain-English description, the business area and domain, the Navigator's own
functional grouping, whether the message is retired, structure statistics (total elements,
maximum depth, element counts at each depth) and the number of external code sets the message uses.

Covers the standard variant (variant 1) of each message, at the latest version held. For legacy
equivalents (SWIFT MT, NACHA, CHAPS) and the schemes that use a message, use
iso20022_legacy_and_scheme_mappings. For the list of code sets a message uses, use
iso20022_code_sets (the response's next_calls names it).

