Skip to main content
Glama

BAP-1 ISO 20022 Banking Message Validator

iso20022_validate
Read-onlyIdempotent

Deterministic validation for institutional ISO 20022 XML/JSON payment messages (pain.001 credit transfer, pacs.008 customer credit, camt.053 bank statement) with XML DOCTYPE security guards, BigInt CtrlSum decimal sums, and ISO 13616 / 9362 / 17442 checksums (BAP-1).

Input Schema

NameRequiredDescriptionDefault
formatNo'xml' or 'json' (default auto-detected)
namespaceNoExpected ISO 20022 schema namespace (e.g. 'pain.001.001.09')
raw_payloadYesRaw ISO 20022 XML or JSON message text
transactionsNoStructured transactions array for JSON validation

Output Schema

NameRequiredDescriptionDefault
okYes
validYes
findingsNo
standardYes
tx_countNo
namespaceNo
message_idNo
ctrl_sum_minorNo
receipt_digestNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added
  2. Removed
  3. Added
  4. Removed
  5. Changed22 schema fields changed
    • changedInput schema / examples
      Previous value: -[
      -  {
      -    "xml": "<Document xmlns=\"urn:iso:std:iso:20022:tech:xsd:pain.001.001.03\"><CstmrCdtTrfInitn><PmtInf><CdtTrfTxInf><Amt><InstdAmt Ccy=\"USD\">5000.00</InstdAmt></Amt><CdtrAcct><Id><IBAN>GB82WEST12345698765432</IBAN></Id></CdtrAcct></CdtTrfTxInf></PmtInf></CstmrCdtTrfInitn></Document>"
      -  }
      -]New value: +[
      +  {
      +    "raw_payload": "<Document xmlns=\"urn:iso:std:iso:20022:tech:xsd:pain.001.001.09\"><CstmrCdtTrfInitn><GrpHdr><MsgId>MSG-2026-001</MsgId><NbOfTxs>1</NbOfTxs><CtrlSum>100.00</CtrlSum></GrpHdr><PmtInf><CdtTrfTxInf><Amt><InstdAmt Ccy=\"USD\">100.00</InstdAmt></Amt><CdtrAgt><FinInstnId><BICFI>DEUTDEDDFXX</BICFI></FinInstnId></CdtrAgt><CdtrAcct><Id><IBAN>DE89370400440532013000</IBAN></Id></CdtrAcct></CdtTrfTxInf></PmtInf></CstmrCdtTrfInitn></Document>"
      +  }
      +]
    • addedInput schema / properties / format
      Added value: +{
      +  "description": "'xml' or 'json' (default auto-detected)",
      +  "type": "string"
      +}
    • addedInput schema / properties / namespace
      Added value: +{
      +  "description": "Expected ISO 20022 schema namespace (e.g. 'pain.001.001.09')",
      +  "type": "string"
      +}
    • addedInput schema / properties / raw_payload
      Added value: +{
      +  "description": "Raw ISO 20022 XML or JSON message text",
      +  "type": "string"
      +}
    • addedInput schema / properties / transactions
      Added value: +{
      +  "description": "Structured transactions array for JSON validation",
      +  "type": "array"
      +}
    • removedInput schema / properties / xml
      Removed value: -{
      -  "description": "ISO 20022 XML string (< 512KB).",
      -  "type": "string"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "xml"
      -]New value: +[
      +  "raw_payload"
      +]
    • removedOutput schema / properties / amount
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / ctrl_sum_minor
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / currency
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / findings
      Added value: +{
      +  "type": "array"
      +}
    • addedOutput schema / properties / message_id
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / message_type
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / namespace
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / ok
      Added value: +{
      +  "type": "boolean"
      +}
    • removedOutput schema / properties / reason
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / receipt_digest
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / scope
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / standard
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / tool
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / tx_count
      Added value: +{
      +  "type": "number"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "valid"
      -]New value: +[
      +  "ok",
      +  "standard",
      +  "valid"
      +]
  6. Changed22 schema fields changed
    • changedInput schema / examples
      Previous value: -[
      -  {
      -    "raw_payload": "<Document xmlns=\"urn:iso:std:iso:20022:tech:xsd:pain.001.001.09\"><CstmrCdtTrfInitn><GrpHdr><MsgId>MSG-2026-001</MsgId><NbOfTxs>1</NbOfTxs><CtrlSum>100.00</CtrlSum></GrpHdr><PmtInf><CdtTrfTxInf><Amt><InstdAmt Ccy=\"USD\">100.00</InstdAmt></Amt><CdtrAgt><FinInstnId><BICFI>DEUTDEDDFXX</BICFI></FinInstnId></CdtrAgt><CdtrAcct><Id><IBAN>DE89370400440532013000</IBAN></Id></CdtrAcct></CdtTrfTxInf></PmtInf></CstmrCdtTrfInitn></Document>"
      -  }
      -]New value: +[
      +  {
      +    "xml": "<Document xmlns=\"urn:iso:std:iso:20022:tech:xsd:pain.001.001.03\"><CstmrCdtTrfInitn><PmtInf><CdtTrfTxInf><Amt><InstdAmt Ccy=\"USD\">5000.00</InstdAmt></Amt><CdtrAcct><Id><IBAN>GB82WEST12345698765432</IBAN></Id></CdtrAcct></CdtTrfTxInf></PmtInf></CstmrCdtTrfInitn></Document>"
      +  }
      +]
    • removedInput schema / properties / format
      Removed value: -{
      -  "description": "'xml' or 'json' (default auto-detected)",
      -  "type": "string"
      -}
    • removedInput schema / properties / namespace
      Removed value: -{
      -  "description": "Expected ISO 20022 schema namespace (e.g. 'pain.001.001.09')",
      -  "type": "string"
      -}
    • removedInput schema / properties / raw_payload
      Removed value: -{
      -  "description": "Raw ISO 20022 XML or JSON message text",
      -  "type": "string"
      -}
    • removedInput schema / properties / transactions
      Removed value: -{
      -  "description": "Structured transactions array for JSON validation",
      -  "type": "array"
      -}
    • addedInput schema / properties / xml
      Added value: +{
      +  "description": "ISO 20022 XML string (< 512KB).",
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "raw_payload"
      -]New value: +[
      +  "xml"
      +]
    • addedOutput schema / properties / amount
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / ctrl_sum_minor
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / currency
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / findings
      Removed value: -{
      -  "type": "array"
      -}
    • removedOutput schema / properties / message_id
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / message_type
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / namespace
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / ok
      Removed value: -{
      -  "type": "boolean"
      -}
    • addedOutput schema / properties / reason
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / receipt_digest
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / scope
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / standard
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / tool
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / tx_count
      Removed value: -{
      -  "type": "number"
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "ok",
      -  "standard",
      -  "valid"
      -]New value: +[
      +  "valid"
      +]
  7. Changed22 schema fields changed
    • changedInput schema / examples
      Previous value: -[
      -  {
      -    "xml": "<Document xmlns=\"urn:iso:std:iso:20022:tech:xsd:pain.001.001.03\"><CstmrCdtTrfInitn><PmtInf><CdtTrfTxInf><Amt><InstdAmt Ccy=\"USD\">5000.00</InstdAmt></Amt><CdtrAcct><Id><IBAN>GB82WEST12345698765432</IBAN></Id></CdtrAcct></CdtTrfTxInf></PmtInf></CstmrCdtTrfInitn></Document>"
      -  }
      -]New value: +[
      +  {
      +    "raw_payload": "<Document xmlns=\"urn:iso:std:iso:20022:tech:xsd:pain.001.001.09\"><CstmrCdtTrfInitn><GrpHdr><MsgId>MSG-2026-001</MsgId><NbOfTxs>1</NbOfTxs><CtrlSum>100.00</CtrlSum></GrpHdr><PmtInf><CdtTrfTxInf><Amt><InstdAmt Ccy=\"USD\">100.00</InstdAmt></Amt><CdtrAgt><FinInstnId><BICFI>DEUTDEDDFXX</BICFI></FinInstnId></CdtrAgt><CdtrAcct><Id><IBAN>DE89370400440532013000</IBAN></Id></CdtrAcct></CdtTrfTxInf></PmtInf></CstmrCdtTrfInitn></Document>"
      +  }
      +]
    • addedInput schema / properties / format
      Added value: +{
      +  "description": "'xml' or 'json' (default auto-detected)",
      +  "type": "string"
      +}
    • addedInput schema / properties / namespace
      Added value: +{
      +  "description": "Expected ISO 20022 schema namespace (e.g. 'pain.001.001.09')",
      +  "type": "string"
      +}
    • addedInput schema / properties / raw_payload
      Added value: +{
      +  "description": "Raw ISO 20022 XML or JSON message text",
      +  "type": "string"
      +}
    • addedInput schema / properties / transactions
      Added value: +{
      +  "description": "Structured transactions array for JSON validation",
      +  "type": "array"
      +}
    • removedInput schema / properties / xml
      Removed value: -{
      -  "description": "ISO 20022 XML string (< 512KB).",
      -  "type": "string"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "xml"
      -]New value: +[
      +  "raw_payload"
      +]
    • removedOutput schema / properties / amount
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / ctrl_sum_minor
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / currency
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / findings
      Added value: +{
      +  "type": "array"
      +}
    • addedOutput schema / properties / message_id
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / message_type
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / namespace
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / ok
      Added value: +{
      +  "type": "boolean"
      +}
    • removedOutput schema / properties / reason
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / receipt_digest
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / scope
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / standard
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / tool
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / tx_count
      Added value: +{
      +  "type": "number"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "valid"
      -]New value: +[
      +  "ok",
      +  "standard",
      +  "valid"
      +]
  8. Added
  9. Removed
  10. Added

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and openWorld, so safety is covered; the description goes further by naming concrete mechanics: XML DOCTYPE security guards (XXE/entity hardening), BigInt CtrlSum decimal summation, and ISO 13616/9362/17442 checksum enforcement. That tells the agent the validator is strict and deterministic, though it doesn't state the failure mode (e.g., whether it throws or returns a structured error list).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence that leads with the core capability before the parenthetical spec lists. Dense but zero filler; the packed parentheticals (message types, then three standards) cost some readability but each item carries information an agent can act on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 4 documented params, full schema coverage, and an output schema, the description only needs to frame scope and strictness - which it does by naming supported message types and the security/checksum regime. The remaining gap is operational: no statement about what a failed validation returns or how message type is inferred when namespace is omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, covering raw_payload, format, namespace, and transactions, so the schema already carries parameter meaning. The description adds only indirect hints - that both XML and JSON are accepted and that namespace-scoped message types exist - without clarifying when to supply 'transactions' versus 'raw_payload' or how the namespace value interacts with auto-detection.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('deterministic validation') and resource ('institutional ISO 20022 XML/JSON payment messages'), and enumerates the exact message types covered (pain.001, pacs.008, camt.053). This clearly separates it from adjacent siblings like iban_check, swift_bic_check, or iso20022_to_x402_intent, which do single-field or conversion work rather than full-message validation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the scope statement - you call it on an ISO 20022 payment message to validate it - but there is no explicit when/when-not guidance. It never says to prefer iban_check or swift_bic_check for standalone field lookups, nor what to do with non-ISO 20022 payloads, leaving the agent to infer boundaries from the message-type list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources