validate_iban
Validate IBAN
Validate an IBAN offline against the bundled SWIFT IBAN Registry snapshot: country, length, BBAN structure and MOD-97 check digits. Does not confirm the account exists.
ibanrequired
io.github.Raafet57Published by GitHub account Raafet57v0.3.2Updated Nov 1, 2026
Offline ISO 20022 payment tools: explain and scrub pacs/camt, CBPR+, SSI checks, IBAN and BIC.
Offline MCP server that lets an assistant explain, scrub and check ISO 20022 payment messages, IBANs, BICs and SSI files on your own machine.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
Offline ISO 20022 tools for payment operations, investigations and migration teams, packaged for Claude Code, OpenAI Codex, GitHub Copilot, VS Code, Gemini CLI, Cursor and any MCP client. It is built on the same libraries as the Payment Intelligence Modules browser suite.
Nothing leaves your machine. The plugin runs a local MCP server over stdio. It makes no network calls, sends no telemetry and has no account. It only reads files you name, and writes only the scrubbed copy you ask for.
We don't provide reference data. The plugin works on your own. No SwiftRef, BIC Directory or SSI data is shipped, sold or downloaded. Your institution already licenses that data; the tools read the files you point them at, on your machine: your own reference files, your own SSI file and your own payment messages. It is provider-agnostic:
column_map covers any other layout, and any column it cannot map is listed in the result, so there is no lock-in to one data vendor.The only data built in is public format rules: the SWIFT IBAN Registry structures, ISO country and currency codes, and the ISO 20022 External Code Sets (2Q2026 v3, August 2026) for payment status, reason and investigation codes.
Messages are read by element, not by schema version. The tests run the payment, statement and cancellation samples on their CBPR+ SR2025 version and on the latest ISO version (for example pacs.008.001.13 and pacs.002.001.15) and expect the same result.
payments/batch-0412.xml before I send it to the vendor."DE89 3704 0044 0532 0130 00 a valid IBAN?" or "Build a French IBAN from these bank and account numbers."ssi/master.tsv." or "Does this pacs.009 pay Nova through the correspondent in our SSI file?"DEUTDEFF in our BIC Directory at ~/swiftref/2026-02." or "Which BIC does sort code 400501 route to?"The SSI and reference tools read your files locally, return only the records that match your request, and mask every account number they return.
To avoid naming your reference folder in every request, set PAYMENT_INTELLIGENCE_REFERENCE_PATH to it in the shell you start your agent from (for example export PAYMENT_INTELLIGENCE_REFERENCE_PATH=~/swiftref/latest).
Only scrub_payment_message writes anything. It writes the scrubbed file to the output_path you give, refuses to overwrite an existing file, and never touches the original.
Requires Node.js 20.10 or later. Each agent reads its own manifest from this repository.
Then start a new session and try one of the requests above. To try it without your own data, use the sample messages in samples/.
server/runtime/ is plain, readable JavaScript with no dependencies and no install step. Every agent runs it with node. Each file is generated from the TypeScript sources of the Payment Intelligence Modules browser suite, so the plugin and the web app share one copy of the payment logic, and each file names the source it came from.
runtime/dom-shim.mjs gives them a DOMParser in Node, using an unmodified vendored copy of @xmldom/xmldom (MIT).runtime/mcp.mjs is a small hand-written MCP server over stdio. It handles initialize, tools/list and tools/call, and checks every tool call against the tool's input schema.evals/ holds a claude plugin eval suite (Claude Code's eval runner). It checks that the skills trigger, that the right tools are called (scrubbing never reads the original file), and that unrelated requests leave the plugin alone.MIT. See LICENSE.
Source: README.md at commit da7202c
Validate IBAN
Validate an IBAN offline against the bundled SWIFT IBAN Registry snapshot: country, length, BBAN structure and MOD-97 check digits. Does not confirm the account exists.
ibanrequiredBuild IBAN
Build an IBAN from its BBAN fields and compute the MOD-97 check digits. Call without `fields` first to get the country's field template.
fieldscountry_coderequiredCheck BIC syntax
ISO 9362 BIC syntax and ISO 3166 country-code checks. No bank directory is bundled. With `reference_path` (or the PAYMENT_INTELLIGENCE_REFERENCE_PATH setting), also looks the BIC up in the user's own BIC Directory, Payments Directory, BIC Plus or other provider export: name, location, current or expired, successor BIC, and service participation. A directory record does not prove reachability for a specific payment; never use it alone for routing or compliance decisions.
bicrequiredas_ofreference_pathLook up identifiers in your reference data
Look up BICs (BIC8 or BIC11), national clearing codes (sort codes, ABA, IFSC, CNAPS, ...) and LEIs in the user's own reference files, read locally: SWIFTRef BIC Directory and Payments Directory folders (IDENTIFIERS, including historical, PARTICIPANTS and RELATIONSHIPS files; layouts come from the STRUCTURES file), legacy SWIFTRef products (BIC Plus, BIC Directory 2018, Bank Directory Plus, IBAN Plus, SEPA routing, Reach Plus, gpi), or a CSV/TSV export from any provider or in-house system. Returns per identifier: directory records (name, town, country, current or expired, successor), national IDs linked to a BIC, service participation, and SSI relationship counts with masked accounts. Only matching records are returned. No reference data ships with the plugin.
idsrequiredpathas_ofcolumn_mapExplain payment message
Explain an ISO 20022 payment message. pacs.008, pacs.009 and camt.053 get a plain-language narrative; pacs.002, pacs.004, camt.052 and camt.054 get a structured field projection. Case messages (camt.056 cancellation request, camt.029 resolution, camt.110 investigation request, camt.111 investigation response, the older camt.026, camt.027, camt.028 and camt.087, and the Swift Tracker messages trck.003 alert and trck.005 case status) get the projection plus a `case` field: case id, investigation type, status, reason, the underlying payment's UETR and references, camt.111 answer details (booking confirmation, payment status, amendments, compensation, value date adjustment) and any MT 199 copy Swift embedded in a delivered camt.110, with what it leaves out. All get an operator summary and quick insights. Field projection for triage, not usage-guideline rule validation.
xmlpathScrub payment message
Replace names, IBANs, account ids, UETRs and references in a pacs/camt message with consistent pseudonyms. With `path` + `output_path`, writes the scrubbed copy to disk and returns only masked statistics, so the original data never enters the conversation. Never overwrites an existing file.
xmlpathoptionsoutput_pathCheck CBPR+ readiness
Local CBPR+ readiness hints: AppHdr/Document namespaces, schema-profile coverage, UETR, BIC and IBAN syntax. Readiness hints, not usage-rule validation.
xmlpathAnalyze payment lifecycle
Group a set of ACK/NACK, pacs and camt files by shared identifiers (UETR, EndToEndId, TxId) into threads with a timeline and warnings. Case messages (camt.026, camt.027, camt.028, camt.029, camt.056, camt.087, camt.110, camt.111) and Tracker messages (trck.003, trck.005) join the thread of the payment they quote; a camt.111 or trck.005 joins its camt.110 by EIR. Works only on the files given.
pathsdocumentsValidate SSI file
Validate a standing settlement instruction (SSI) file: a SWIFTRef SSI Plus V3 extract or a CSV/TSV export. Checks BIC, ISO country, ISO 4217 currency and SSI asset-category formats, required fields, preferred flags, lifecycle dates, staleness, and conflicts (two preferred correspondents, overlapping active instructions). Rule ids match SSI Control Tower. Accounts are masked in the output.
as_ofssi_pathcolumn_mapssi_contentmax_findingsCheck payment against SSI file
Check that a payment pays the beneficiary institution through the correspondent and account in the user's own SSI file. Reads the route from a pacs.008 (creditor agent, last intermediary, CdtrAgtAcct) or pacs.009 (creditor, creditor agent, CdtrAcct), or from explicit fields, then looks up owner BIC + currency + asset category and compares with the preferred SSI effective on the value date. Returns MATCH, ACCOUNT_MISMATCH, AGENT_MISMATCH, NOT_PREFERRED, AMBIGUOUS_SSI, NO_EFFECTIVE_SSI or NO_SSI per transaction. Accounts are masked.
xmlpathaccountcurrencyssi_pathowner_biccolumn_mapvalue_datessi_contentasset_categoryaccount_holder_bicDecode status or reason code
Explain an ISO 20022 status or reason code such as RJCT, AC01 or MD07. Omit `code` to list the curated set.
code90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.