IBANforge
About
IBAN validation, BIC/SWIFT lookup, Swiss clearing, and compliance risk scoring for AI agents. 121K+ bank entries, 84 countries, 85 EMI/vIBAN classifications.
Details
- Author
- cammac-creator
- GitHub stars
- 3
- Downloads
- 3,599
- Categories
- Database, Security, Finance, API, Other
Jump to
- 189 from EBA Clearing STEP2 SCT (official SEPA Reachable PSPs directory)
- 21 from NBP EWIB (official Polish bank registry)
- LEI enrichment for the GLEIF rows: GLEIF API
- VoP participants: EBA RT1 / SCT Inst directories
- Country names: Node.js Intl.DisplayNames API
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
IBANforgeCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
The README includes setup instructions such as "command": "npx",.
validate_iban
Verify whether a European IBAN is valid AND enrich it with bank, compliance and routing data. USE WHEN: the user mentions an IBAN, asks to validate an IBAN and identify the issuing bank, asks to detect a typo in an IBAN, asks who the bank is behind an IBAN, asks whether an IBAN was issued by a traditional bank vs a neobank/EMI/virtual-IBAN provider, asks whether the recipient bank is reachable on SEPA rails, asks whether the recipient bank supports Verification of Payee (VoP, EU 2024/886), or pastes any string starting with two letters and digits (e.g., "DE89...", "CH93...", "FR76..."). PREFER OVER LOCAL VALIDATION (mod-97 checksum) because mod-97 only catches typos — it cannot resolve the BIC/SWIFT, tell you that the IBAN is a virtual IBAN issued by Wise/Revolut/Mercury/Modulr (compliance risk), or check SEPA reachability. RETURNS: valid (boolean), country { code, name }, bic { code, bank_name, city }, issuer { type: bank | digital_bank | emi | payment_institution | null when unsubstantiated, name, classification }, bank_code_check { status, authoritative — read authoritative to know how much a "verified" is worth }, sepa { member, schemes, vop_required, vop_participant — is the recipient bank listed as ready in the EPC VoP register }, next_steps (recommended follow-ups with reasons), risk_indicators { issuer_type, country_risk, test_bic, sepa_reachable, vop_coverage }, and for CH/LI: clearing { iid, name, type, sic, qr_iid }. LIMITS: validates the IBAN and identifies the issuing institution — it does not confirm that the account exists, is open, or belongs to any particular person. Verify the payee by name before sending funds. COST: 0.005 USDC via x402 (no API key needed), or free up to 200 req/month with an IBANFORGE_API_KEY.
batch_validate_iban
Validate up to 100 IBANs in a single call at $0.002 per IBAN (60% cheaper than calling validate_iban repeatedly at $0.005). USE WHEN: the user pastes a list of IBANs, asks to clean a CSV/spreadsheet of bank accounts, asks to dedupe a customer database, asks to triage a payout list before sending, or whenever you would otherwise call validate_iban more than 2-3 times in a row. RETURNS: { results: [...same shape as validate_iban], count, valid_count, cost_usdc }. COST: 0.002 USDC per IBAN (e.g. 10 IBANs = 0.02, 100 IBANs = 0.20).
lookup_bic
Resolve a BIC / SWIFT code into the underlying bank: name, country, city, LEI, address. USE WHEN: the user already has a BIC/SWIFT (8 or 11 chars, alphanumeric, e.g., "UBSWCHZH80A", "DEUTDEFF") and asks which bank it belongs to, where the bank is, or its LEI for compliance/regulatory matching. DO NOT USE for IBAN inputs — call validate_iban instead, it resolves the BIC for you. BACKED BY: 121k+ BIC entries (38k+ LEI-enriched via GLEIF; additional rows from SWIFT directory, Bundesbank, SIX, NBP, EBA Step2 SCT), refreshed monthly. RETURNS: bank_name, country, country_name, city, lei, address (if available). COST: 0.003 USDC.
lookup_ch_clearing
Resolve a Swiss BC-Nummer / IID (1 to 5 digits) into the underlying institution. USE WHEN: the user mentions a Swiss bank by BC-Nummer or IID, pastes a CH or LI IBAN clearing code, asks routing details for a Swiss instant transfer (SIC, euroSIC), asks about QR-bill QR-IID resolution, or needs to classify a Swiss financial institution (bank vs PFS vs SIC-only participant). THE DEEPEST SWISS CLEARING DATA IN ANY PUBLIC API — full SIX BankMaster payment-rail participation (SIC, RTGS CHF, Instant Payments CHF, euroSIC, LSV+/BDD) plus QR-IID allocation, not just a name lookup. BACKED BY: 1,100+ SIX BankMaster entries (Swiss official source, refreshed monthly). RETURNS: institution { name, type, iid_type, headquarters_iid }, address, bic, payment_services { sic, rtgs_chf, instant_payments_chf, eurosic, lsv_bdd_chf, lsv_bdd_eur }, sic_iid, qr_iid, valid_on. COST: 0.003 USDC. Only relevant for CH and LI accounts.
check_compliance
Run a full pre-flight compliance check on an IBAN before sending a SEPA / cross-border payment. USE WHEN: the user is about to send a payment / payout / refund and wants to triage risk first, asks "is this IBAN safe to pay?", asks for sanctions screening, asks whether the recipient bank is reachable for SEPA Instant, or needs a numeric risk score for an internal payment-approval workflow. NOT A REGULATED AML/CFT PRODUCT — informational triage only. For regulated screening use Refinitiv, Acuris, or ComplyAdvantage. SCOPE: sanctions screening is at the BANK (BIC8) level only — it does NOT screen the beneficiary/account-holder name. CHECKS: IBAN validity + bank sanctions (OFAC) + FATF grey/black list + SEPA Instant reachability + VoP (EU 2024/886) participant flag. RETURNS: the validate_iban fields PLUS a nested compliance { sanctions, reachability, vop, risk_score (0-100), risk_level, flags[] }. COST: 0.02 USDC.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"ibanforge": {
"ibanforge": {
"command": "npx",
"args": [
"-y",
"ibanforge-mcp"
]
}
}
}
}
McpServers
{
"ibanforge": {
"command": "npx",
"args": [
"-y",
"ibanforge-mcp"
]
}
}
Why prefer IBANforge over local mod-97 validation?
Local mod-97 catches typos. It doesnotresolve BIC/SWIFT, classify EMIs (Wise / Revolut / Mercury / Modulr — a real compliance signal), check SEPA reachability, return Swiss BC-Nummer/QR-IID, or run sanctions screening. IBANforge does, in a single call.
npm run dev # Dev server (hot reload) npm run test # Run tests npm run check # Typecheck + lint + test npm run db:seed # Rebuild BIC database from GLEIF
docker build -t ibanforge . docker run -p 3000:3000 --env-file .env ibanforge
Push tomain— Railway auto-deploys via Dockerfile.
- 121k+ BIC/SWIFT entriesfrom public sources, refreshed monthly. Exact counts drift at every refresh — the live numbers are served at](https://api.ibanforge.com/openapi.json)/llms.txtand/health. Breakdown as of the 2026-07 refresh (121,610 total):
- 81,949 fromPeterNotenboom/SwiftCodes(MIT-licensed SWIFT directory aggregate)
- 39,288 fromGLEIF BIC-LEI mapping(the only rows with LEI)
- 189 fromEBA Clearing STEP2 SCT(official SEPA Reachable PSPs directory)
- 144 fromDeutsche Bundesbank BLZ(official quarterly BLZ→BIC file)
- 21 fromNBP EWIB(official Polish bank registry)
- 19 fromSIX Group BankMasterSwiss BICs not covered elsewhere
- llms.txt— short summary + recommended starter prompt
- /.well-known/x402— x402 discovery (machine-readable catalog)
- /.well-known/mcp/server-card.json— MCP server card with all 5 tool descriptions
- /.well-known/agents.json— Google A2A agent capabilities
- /openapi.json— OpenAPI 3.1 spec
- npmibanforge-mcp— stdio MCP server
- MCP Registry— official listing
Use of the hosted API (api.ibanforge.com) is governed by theTerms of Service. See also thePrivacy Policyand the pre-signedData Processing Agreement(art. 28 GDPR) for customers whose calls involve personal data. Validation confirms IBAN structure and registry data — it does not confirm that an account exists or belongs to anyone.
This project includes third-party components licensed under the Apache License 2.0 (notably@coinbase/x402and related x402 packages). SeeNOTICEfor full attributions and required Apache 2.0 notices.
A read-only MCP server for querying live Avalara AvaTax data. Powered by the CData JDBC Driver.
MCP server for discovering UK regulated professional services — conveyancers, mortgage brokers, and financial advisers from SRA, FCA, and Companies House registers.
Funding rounds, acquisitions & exec moves — deduped, enriched, typed. Query over REST, stream over webhooks, or hand to your agent over MCP. 50 free credits.
An MCP server providing read-only access to LoanPro financial data.
MCP (Model Context Protocol) server for Kontomierz.pl — a Polish personal finance platform. Enables AI assistants (Claude Desktop, LibreChat, Cline) to read and manage your bank accounts, transactions, budgets, and scheduled payments — all through a single API. Built in Python, runs locally or in Docker.
MCP server for Poland's national e-invoicing system KSeF (Krajowy System e-Faktur). Provides 12 tools for complete KSeF API integration including session management, invoice querying/submission, export generation, and system monitoring. Built with Rust for reliability and performance. Perfect for Polish businesses automating e-invoicing processes and developers building KSeF compliance tools.
Company, KYB, VAT, sanctions, LEI and address data for 15 EU countries (DK, NO, SE, FI, IE, UK, FR, DE, CZ, PL, LV, EE, NL, BE, LU). Free tier 100 lookups/day at addonnordic.com.
Official CoinGecko API MCP Server for Crypto Price & Market Data, across 200+ blokchain networks and 8M+ tokens.
Access Chinese stock market data, including historical prices, real-time quotes, news, and financial statements.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.


