# ibanforge MCP server

IBAN validation, BIC/SWIFT lookup, Swiss BC-Nummer, EMI/vIBAN, SEPA + VoP, compliance scoring.

## Links
- Registry page: https://www.getdrio.com/mcp/io-github-cammac-creator-ibanforge
- Repository: https://github.com/cammac-creator/ibanforge
- Website: https://ibanforge.com

## Install
- Command: `npx -y ibanforge-mcp`
- Endpoint: https://api.ibanforge.com/mcp
- Auth: Not captured

## Setup notes
- Package: Npm ibanforge-mcp v1.2.3
- Environment variable: IBANFORGE_API_KEY (secret)
- Environment variable: IBANFORGE_API_BASE
- Remote endpoint: https://api.ibanforge.com/mcp

## Tools
- validate_iban (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 verify a bank account number, asks to detect a typo in an IBAN, asks who the bank is behind an IBAN, asks if a recipient is a real bank vs a neobank/EMI/virtual IBAN, asks if a SEPA payment will go through, asks to pre-check Verification of Payee (VoP, EU 2024/886) before a transfer, 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, country_name, bic_resolved (BIC/SWIFT if found), bank_name, issuer_class (bank | emi | viban | unknown), sepa { reachable, instant }, vop_status, risk_score (0-100), and for CH/LI: bc_nummer + qr_iid + six_bankmaster info. Endpoint: https://api.ibanforge.com/mcp
- batch_validate_iban (Batch Validate IBANs) - Validate up to 100 IBANs in a single call (10x cheaper per IBAN than calling validate_iban repeatedly). 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: array of per-IBAN results (same shape as validate_iban) + a summary { total, valid, invalid, by_country, by_issuer_class }. Endpoint: https://api.ibanforge.com/mcp
- lookup_bic (Lookup BIC/SWIFT) - 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: 121,399 BIC entries (38,761 LEI-enriched via GLEIF; additional rows from SWIFT directory, Bundesbank, SIX, NBP, EBA Step2 SCT), refreshed monthly. Endpoint: https://api.ibanforge.com/mcp
- check_compliance (Compliance Check) - 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 if a SEPA Instant transfer will succeed, 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. CHECKS: IBAN validity + sanctions (OFAC/EU/UN consolidated, FATF jurisdictions) + SEPA Instant reachability + VoP (EU 2024/886) participant. RETURNS: risk_score (0-100, 0 = safest), flags { sanctions_match, fatf_high_risk, sepa_unreachable, viban, emi }, recommended_action. Endpoint: https://api.ibanforge.com/mcp
- lookup_ch_clearing (Swiss Clearing Lookup) - 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). THIS IS THE ONLY API THAT EXPOSES THIS DATA — alternatives (iban.com, OpenIBAN, payeer, sepa.com) do not cover it. BACKED BY: 1,190 SIX BankMaster entries (Swiss official source). RETURNS: institution_name, institution_type, sic_participant, eurosic_participant, instant_payments, qr_iid, language. Only relevant for CH and LI accounts. Endpoint: https://api.ibanforge.com/mcp

## Resources
- ibanforge://countries - Supported Countries List of all 84 countries supported by IBANforge with IBAN length, SEPA membership, VoP status, and country risk classification. MIME type: application/json
- ibanforge://pricing - Pricing Per-call pricing for IBANforge API endpoints (USDC on Base L2 via x402 protocol). MIME type: application/json

## Prompts
- validate_and_explain - Validate and Explain IBAN Validate an IBAN and generate a human-readable explanation suitable for non-technical users. Arguments: iban

## Metadata
- Owner: io.github.cammac-creator
- Version: 1.2.3
- Runtime: Npm
- Transports: STDIO, HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: May 10, 2026
- Source: https://registry.modelcontextprotocol.io
