ISO 20022 Navigator
Server Details
Look up ISO 20022 messages, bank transaction codes, legacy MT replacements, schemes and code sets.
- Status
- Healthy
- Uptime
- 100.0% over 23 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- kreativeManish/iso20022-navigator-mcp
- GitHub Stars
- 1
- Server Listing
- ISO 20022 Navigator MCP Server
TDQS
Scored across 4 tools
Each tool targets a distinct artifact: Bank Transaction Codes, external code sets, legacy/scheme mappings, and message metadata. The descriptions explicitly disambiguate with 'Not covered: ... use X' cross-references, making misselection very unlikely.
All four tools follow the same iso20022_ prefix with snake_case noun phrases (bank_transaction_codes, code_sets, legacy_and_scheme_mappings, message_details), a fully predictable pattern.
Four tools is reasonable for a large domain, and each consolidates a well-defined area with rich parameters. It is slightly lean, with each tool bundling multiple query modes, but none feels redundant.
The surface covers message metadata, code sets, BTCs, and legacy/scheme mappings, which are the core lookups for this domain. Minor gaps exist (no full-list/discovery or cross-comparison operations), but the main workflows have no dead ends.
Available Tools
4 toolsiso20022_bank_transaction_codesISO 20022 bank transaction codesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | A Bank Transaction Code or part of one, written domain-family-subfamily with hyphens, e.g. 'PMNT-RCDT-ESCT'. Each part is four letters or digits. Begin with slashes to fix the level ('/RCDT' is a family, '//ESCT' is a subfamily) and leave a level empty to skip it ('PMNT//ESCT'). Slash, comma or space also work as separators. |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | Yes | |
| input | Yes | The code as interpreted by the server, slash-separated by level, e.g. PMNT/RCDT, /RCDT, //ESCT |
| notes | No | Caveats to pass on to the user |
| matches | No | |
| segments | No | Not found only: where each part of the input exists in the ISO list |
| provenance | Yes | |
| closest_paths | No | Not found only: up to 5 existing paths sharing a part with the input |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds what actually comes back per input shape and discloses two scope limits (external code list only; no message structure/bank fill behavior). It does not discuss pagination or result size on the open-world=closed lookup, a minor remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the trigger sentence, then a bulleted list of input forms – easy to scan. It is long relative to a single-parameter tool and the form list partially restates the schema description, but each bullet carries distinct return semantics, so little is pure waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter lookup with an output schema present, the description supplies everything else an agent needs: trigger conditions, input grammars, per-form output expectations, and scope boundaries. Nothing required to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes beyond it by enumerating eight concrete input forms and stating the return content for each ('PMNT//ESCT' returns the families under PMNT that contain ESCT; bare 'ESCT' is matched at every level separately). This meaningfully extends the schema's shorter format note, though the two texts overlap on slash/separator rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('ISO 20022 Bank Transaction Codes... that classify entries in bank statements and account reports') with concrete examples (PMNT, PMNT-RCDT, PMNT-RCDT-ESCT). It explicitly bounds the tool ('matches codes, not meanings', 'ISO external code list only'), which cleanly separates it from the legacy/scheme-mapping sibling. An agent can select this tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with an explicit trigger ('Use for ANY question about...') and pre-empts the common mistake of skipping the call for familiar codes ('Call it even when the code looks familiar'). It also gives exclusions: no proprietary/bank-specific codes, no message-structure information. Guidance covers when to use, when not to, and how to browse when searching by meaning.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iso20022_code_setsISO 20022 code setsARead-onlyIdempotentInspect
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
codeto 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.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Optional, only when message is a code set: check one code in that set, e.g. message 'BalanceType' with code 'CLBD'. Returns just that value, so use it for 'is X a valid ...' questions instead of fetching the whole set. | |
| offset | No | Row to start from; 0 (the default) is the first row. Use only to continue a list whose previous response said it was not complete, with the next_offset from that response. | |
| message | Yes | A code set (e.g. 'BalanceType', or its full name 'ExternalBalanceType1Code'), a code (e.g. 'CLBD', 'OTHR'), or an ISO 20022 message (e.g. 'camt.053', 'pacs.008.001.08'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | No | Paging of the pipe-delimited list. Continue with next_offset until complete is true. |
| found | Yes | |
| input | Yes | The identifier as interpreted by the server: the code set's short name, the ISO 20022 message, or the code |
| notes | No | Caveats to pass on to the user |
| values | No | input_kind code_set: the values, pipe-delimited, one row per line. First line is the header: code|name|description|deactivated_in. deactivated_in is empty for current values. |
| matches | No | input_kind code: every code set containing the code, pipe-delimited, one row per line. First line is the header: concept|code|name|description|deactivated_in. |
| code_set | No | Attributes of the code set (input_kind code_set) |
| code_sets | No | input_kind message: the code sets the message uses, pipe-delimited, one row per line. First line is the header: concept|navigator_group|code_count. code_count is the number of current values. |
| input_kind | Yes | |
| provenance | Yes | |
| used_in_messages | No | input_kind code_set: IDs of the messages (all variants) that use this code set. Complete on every page. |
| iso20022_message_name | No | Name of the ISO 20022 message, when the input is one |
| iso20022_deactivated_in | No | Navigator data load (quarter) in which the input message was marked deactivated; absent if current |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds real behavioral context beyond that: it returns 'sourced, current values' and flags deactivated codes, and it discloses the pagination contract (page.complete/page.next_offset) with an instruction to finish paging before answering. It also warns that concept_description is AI-generated, a useful trust caveat not available in structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose, then per-identifier behavior, then the 'Not covered' block — a sensible order. Bullets are tight, though the description is on the long side and repeats the paging rule twice (once in prose, once in the schema for offset).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape explanation is not required, yet the description still usefully characterizes the return format (pipe-delimited with header row). Coverage of the three identifier modes, exclusions, and paging is enough for correct invocation; the only minor gap is that element-level vs message-level scope is asserted without elaboration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description earns above baseline by explaining the interaction between `message` and `code` (code only applies when message is a code set), advising the `code` shortcut for validity questions instead of fetching a whole set, and describing the paging loop for `offset`.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific directive ('Use for ANY question about ISO 20022 external code sets') and enumerates the concrete question types it answers (values of a code set, meaning of a code, validity, which code sets a message uses). It explicitly names the sibling iso20022_bank_transaction_codes as out of scope, so an agent can route correctly without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('Call it even when the answer seems well known'), a when-NOT-to-use section that names two concrete sibling tools for excluded topics, and a concrete alternative for the session-language question ('use iso20022_bank_transaction_codes'). Routing logic is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iso20022_legacy_and_scheme_mappingsISO 20022 legacy and scheme mappingsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | A legacy message (e.g. 'MT103', 'MT 202COV', '940', 'ACH Statement') or an ISO 20022 message (e.g. 'pacs.008', 'camt.053.001.08'). | |
| standard | No | Omit (or leave empty) unless the user names one specific standard or scheme. Omitted returns every recorded scheme and legacy equivalent in one call; do not use this to check schemes one by one. Examples when the user names one: 'SWIFT_MT', 'SEPA', 'NPP', 'CHAPS'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | Yes | |
| input | Yes | The message identifier as interpreted by the server |
| notes | No | Caveats to pass on to the user |
| input_kind | Yes | |
| provenance | Yes | |
| used_by_schemes | No | Payment schemes that use this ISO 20022 message |
| legacy_equivalents | No | Legacy or non-ISO messages (SWIFT MT, NACHA, CHAPS legacy) and their ISO 20022 equivalent |
| iso20022_message_name | No | Name of the ISO 20022 message, when the input is one |
| iso20022_deactivated_in | No | Navigator data load (quarter) in which the input message was marked deactivated; absent if current |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/non-destructive annotations it discloses real behavioral traits: results are sourced with status and caveats, 'schemes' responses omit descriptions for compactness while `standard` adds a scheme description, and retired ISO messages are returned flagged via iso20022_deactivated_in rather than hidden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The imperative 'Use for ANY question...' is front-loaded and the bulleted legacy/ISO cases are easy to scan. It is somewhat long and repeats the omit-`standard` guidance already present in the schema, keeping it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, yet the description still previews the return structure (legacy_equivalents, used_by_schemes, iso20022_deactivated_in), so an agent fully understands inputs and outputs. Nothing material is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the `standard` description already states the omit-by-default rule, so baseline is 3. The description goes further by explaining the differentiated response shape for legacy vs ISO input and the effect of `standard` on output size, adding genuine meaning. It stops just short of syntax details, so a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: mapping legacy payment messages (MT103, NACHA, CHAPS) to/from ISO 20022 messages and identifying which schemes use a message. It explicitly bounds the scope ('message-level only') and disclaims field-level mapping, which cleanly separates it from any sibling focused on transaction codes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance ('Use for ANY question about...', 'Call it even when the answer seems well known'), the exact condition for including the optional `standard` param ('Omit unless the user names one scheme'), and an explicit when-not ('this tool does not map individual fields... Do not cite it for those').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iso20022_message_detailsISO 20022 message detailsARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | An ISO 20022 message identifier: four letters and three digits, e.g. 'pacs.008' or 'camt.053'. Any case works, and a hyphen, underscore, space or no separator also works ('pacs-008', 'pacs008'). A full identifier with variant and version ('pacs.008.001.13') is accepted; the response gives the latest version held and notes any difference. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | Official message name, e.g. BankToCustomerAccountReport |
| found | Yes | |
| input | Yes | The message identifier as interpreted by the server, e.g. pacs.008 |
| notes | No | Caveats to pass on to the user |
| structure | No | Size and shape of the message definition; absent when no structure is held |
| next_calls | No | Follow-up calls that return related data too large to include here, each with the tool and the arguments to send; absent when there is nothing to follow up |
| provenance | Yes | |
| closest_ids | No | Not found only: up to 5 held messages in the same business area, nearest number first |
| description | No | AI-generated plain-English description of the message. |
| business_area | No | |
| code_set_count | No | Number of external code sets the message uses |
| deactivated_in | No | Navigator data load (quarter) in which this message was marked deactivated; absent if current |
| latest_version | No | Full identifier of the latest version held, e.g. camt.053.001.14 |
| navigator_group | No | The Navigator's own functional grouping of messages. It is not part of the ISO 20022 standard. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world, non-destructive behavior. The description adds real context beyond those: it covers only variant 1, returns the latest version held and notes differences, flags retired messages, and points to next_calls. It stops short of describing pagination or error behavior, so not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is front-loaded with the core promise and the alternatives follow immediately after. It is slightly long and the long enumeration of return fields borders on restating the output schema, but no sentence is purely filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one required parameter, full schema coverage, an output schema present and sibling routing provided, an agent has everything needed to call this correctly. The variant/version and retirement caveats close the remaining ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the pattern, length bounds and accepted separators already documented in the schema, so the baseline is 3. The description reinforces accepted forms ('pacs.008', 'camt.053', 'pain.001') but adds only the latest-version-resolved behavior, which the schema description already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (an ISO 20022 message) and enumerates exactly what it returns: official name, purpose, business area, latest version, structure statistics. It also names the siblings it is not for (legacy/scheme mappings, code sets), so the agent can separate it from alternatives without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing: use this for any 'what is this message' question, use iso20022_legacy_and_scheme_mappings for MT/NACHA/CHAPS equivalents and schemes, and iso20022_code_sets for code-set lists. It even tells the agent to call it despite familiarity, removing the main false-negative risk.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
iso20022_code_sets1 field changed- added
Output schema / $defs / CodeSetInfo / properties / message_countAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Number of messages in used_in_messages (all variants). Use it instead of counting the list; absent when the requested code is not in the set", + "title": "Message Count" +}
- Changed
iso20022_message_details2 fields changed- added
Output schema / $defs / NextCallAdded value: +{ + "properties": { + "arguments": { + "additionalProperties": { + "type": "string" + }, + "description": "The arguments to send to that tool", + "title": "Arguments", + "type": "object" + }, + "purpose": { + "description": "What the call returns", + "title": "Purpose", + "type": "string" + }, + "tool": { + "description": "Name of the tool that returns the related data", + "title": "Tool", + "type": "string" + } + }, + "required": [ + "tool", + "arguments", + "purpose" + ], + "title": "NextCall", + "type": "object" +} - added
Output schema / properties / next_callsAdded value: +{ + "description": "Follow-up calls that return related data too large to include here, each with the tool and the arguments to send; absent when there is nothing to follow up", + "items": { + "$ref": "#/$defs/NextCall" + }, + "title": "Next Calls", + "type": "array" +}
1 tool update
- Added
iso20022_code_sets
1 tool update
- Added
iso20022_message_details
2 tool updates
- Added
iso20022_bank_transaction_codes - Changed
iso20022_legacy_and_scheme_mappings4 fields changed- added
Output schema / $defs / Provenance / descriptionAdded value: +"Where the data comes from [3.6]. Each tool supplies its own `scope`." - removed
Output schema / $defs / Provenance / properties / scope / defaultRemoved value: -"Message-level mappings only (not field-level). ISO 20022 messages at their latest version only." - added
Output schema / $defs / Provenance / requiredAdded value: +[ + "scope" +] - changed
Output schema / requiredPrevious value: -[ - "found", - "input", - "input_kind" -]New value: +[ + "found", + "input", + "input_kind", + "provenance" +]
1 tool update
- First observed
iso20022_legacy_and_scheme_mappings
Related MCP Connectors
Find IANA ports, MIME types, HTTP codes/fields, URI schemes, PENs, BCP 47 tags, RFCs, any registry.
Bank Code Lookup: the site's own MCP server — dataset, enquiry (enquiry = a human handoff, not a...
Generate and validate SEPA ISO 20022 XML (pain.001, pain.008) and SWIFT MT103 payment messages.
Cross-border payment & banking intelligence for AI agents: SWIFT/BIC, IBAN, sanctions, FX, tracking.
Related MCP Servers
- AlicenseAqualityAmaintenanceUnified gateway for ISO 20022 message families, providing meta-tools to search, describe, validate, generate, and parse financial messages.7448 PyPI1Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables looking up ISO standards (e.g., 27001, 9001) with live status, pricing, compliance catalogue, and ISO Open Data file pointers.11 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to explain, scrub and check ISO 20022 payment messages and SSI files entirely on the local machine, including CBPR+ readiness hints, lifecycle triage, IBAN/BIC validation and payment-vs-SSI checks against the user's own licensed reference data. Runs as a local stdio MCP server with no network calls, telemetry or bundled vendor data.MIT
- AlicenseAqualityAmaintenanceMCP server for ISO 20022 acmt.001 Account Opening (and companion acmt.* messages): message-type discovery, required-field lookup, JSON Schema introspection, IBAN/BIC/LEI validation, flat-record validation, and validated acmt XML generation.791 PyPI1Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.