Unified Model Context Protocol (MCP) gateway for ISO 20022: one small set of meta-tools (search, describe, validate, generate, parse) routing across the pain, pacs, camt and acmt message families.
Strong domain-specific tool design with clear naming (search, list_families, describe, validate, generate, parse) and comprehensive parameter descriptions. All 7 tools have explicit schemas with type definitions and detailed descriptions (avg 180+ chars). Error handling guidance is present (e.g., 'On failure the error value lists every missing or invalid field at once'). However, output schemas are not formally documented in the tool definitions themselves, responses are described narratively rather than as structured JSON Schema. Parameter descriptions are excellent (field names, formats, aliases documented), but some tools lack explicit enum constraints where applicable (e.g., message_type could enumerate valid families). No security-sensitive parameters exposed. Tool composition is clean: each tool has one responsibility, and chaining is supported via returned identifiers.
Describe a message type: its required fields and input JSON Schema, resolved from the family's backing server.
Generate a validated ISO 20022 XML message from records; the XML document is returned in the 'xml' key. Supported for initiation and interbank families (pain, pacs, acmt); statement families (camt) are inbound-only and return an explanatory error. On failure the 'error' value lists every missing or invalid field at once — fix them all and retry once.
List every ISO 20022 family the gateway routes to (pain, pacs, camt, acmt): its capabilities, backing package, and whether that package is installed in this environment.
List the whole ISO 20022 suite the gateway knows: the message families (pain/pacs/camt/acmt), the Exceptions & Investigations messages (camt.056/camt.029), and the specialized servers (reconciliation, agent-payment bridge) with what each does.
Parse an inbound ISO 20022 XML message into structured data. Parse coverage is per-family: pacs (e.g. pacs.008) and camt (e.g. camt.053) only. The initiation families pain and acmt are outbound-only — they have NO parser here, so do not attempt a generate→parse round-trip for pain.001 or acmt.001; use 'validate' instead.
Output schemas not formally documented. Tool descriptions state what is returned (e.g., 'xml document returned in xml key', 'error value lists every missing or invalid field') but do not provide JSON Schema definitions for response objects. LLMs cannot reliably extract fields from undocumented responses.
message_type parameter accepts free-form strings with implicit resolution rules (e.g., 'pain.001' resolves to 'pain.001.001.09'). Should declare valid enum values or provide a discovery tool to list supported message types. Current approach invites hallucinated message types.
No pagination support documented for list_families and list_servers. If these return large result sets, LLMs cannot request subsets or iterate safely. Should add limit/offset or cursor parameters.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
Search the ISO 20022 catalogue by use-case, message type or keyword (e.g. 'reconciliation', 'make a payment', 'pacs.008') and get the matching message types, their family, and which package provides them.
Validate records for a message type against its JSON Schema, via the family's backing server.
Error responses described narratively ('On failure the error value lists...') but no structured error schema provided. LLMs cannot reliably parse error details to determine if a retry is safe or if user input is needed.
Tool descriptions include example field names (e.g., 'id, date, initiator_name, payment_id') which LLMs may reuse literally. Should use formal schema constraints (enums, patterns) instead of examples in descriptions.