Hosted MCP server · #126 most used on Smithery
IBANforge
cammac/IBANforge
IBAN validation and bank-data tools for AI agents, ERP, invoicing and payroll workflows. IBANforge covers 89 countries and provides BIC/SWIFT lookup, Swiss clearing lookup, SEPA and country-risk indicators, payment-reference validation, postal-address checks and Swiss QR-bill checks. The current MCP service offers 11 tools, including batch validation, feedback and API-key requests. Connect to https://api.ibanforge.com/mcp or use the ibanforge-mcp npm package. Free access: 25 calls per day without a key, 25 per month with an anonymous key, or 200 per month after claiming a key by email. Paid credit packs, a Pro subscription and x402 payments are available. Batch validation consumes one unit per IBAN. Validation checks format and checksum; it does not confirm that an account exists or belongs to a beneficiary, and it does not perform beneficiary AML/KYC screening. Documentation: https://ibanforge.com/docs
- Uses
- 4.2k
- Tools
- 11
- Runs
- Hosted
- Prompts
- 1
- Listed
- 7mo ago
Get started
Add it to your agent
npx -y @smithery/cli@latest install cammac/IBANforge --client claudeSwap --client claude for cursor, vscode, windsurf or another client. The CLI asks for any required settings.
claude mcp add --transport http ibanforge https://server.smithery.ai/cammac/IBANforge/mcpA hosted server: nothing to install. Run /mcp in Claude Code to sign in if it asks.
[mcp_servers.ibanforge]
url = "https://server.smithery.ai/cammac/IBANforge/mcp"Add to ~/.codex/config.toml.
{
"mcpServers": {
"ibanforge": {
"url": "https://server.smithery.ai/cammac/IBANforge/mcp"
}
}
}Add to ~/.cursor/mcp.json.
{
"servers": {
"ibanforge": {
"type": "http",
"url": "https://server.smithery.ai/cammac/IBANforge/mcp"
}
}
}Add to .vscode/mcp.json.
gemini mcp add --transport http ibanforge https://server.smithery.ai/cammac/IBANforge/mcpSaved to .gemini/settings.json.
What it can do
11 tools
validate_iban1 paramVerify whether a European IBAN is valid AND enrich it with bank, compliance and routing data. USE WHEN: the user mentions an IBAN, asks t…
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 pa
| Parameter | Type | Description |
|---|---|---|
iban | string | IBAN to validate (spaces/hyphens stripped automatically) |
batch_validate_iban1 paramValidate 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…
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: $0.002 per IBAN (free: 10 units/IP/day
| Parameter | Type | Description |
|---|---|---|
ibans | array | Array of IBANs (1-100) |
lookup_bic1 paramResolve a BIC / SWIFT code into the underlying bank: name, country, city, LEI, and registered head-office address (where available). USE …
Resolve a BIC / SWIFT code into the underlying bank: name, country, city, LEI, and registered head-office address (where available). 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,000+ BIC entries (39,000+ LEI-enriched via GLEIF; additiona
| Parameter | Type | Description |
|---|---|---|
bic | string | BIC/SWIFT code (8 or 11 chars) |
check_compliance1 paramRun 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 pay…
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 ComplyAdvantag
| Parameter | Type | Description |
|---|---|---|
iban | string | IBAN to check |
validate_payment_reference3 paramsValidate a structured payment reference and, when an IBAN is supplied, decide whether the two may legally travel together. USE WHEN: asse…
Validate a structured payment reference and, when an IBAN is supplied, decide whether the two may legally travel together. USE WHEN: assembling a payment instruction from an invoice, a QR-bill or a remittance advice; whenever a Swiss IBAN and a reference appear together (the pairing rule is what most integrations get wrong); or when the user pastes an "RF..." string, a 27-digit number, a +++123/4567/89012+++ block, or asks whether a payment reference is correct. DO NOT USE to validate the IBAN i
| Parameter | Type | Description |
|---|---|---|
iban | string | Optional creditor IBAN — supply it to get the pairing verdict |
reference | string | The reference as printed; spaces, slashes and the +++…+++ wrapper are stripped |
reference_type | string | Optional hint: rf | scor | qrr | ogm | vcs | viitenumero | kid | ocr |
check_swiss_qr_bill1 paramCheck a Swiss QR-bill payload, the text a QR-bill's code carries (starts with SPC), rule by rule, each finding citing the SIX document it…
Check a Swiss QR-bill payload, the text a QR-bill's code carries (starts with SPC), rule by rule, each finding citing the SIX document it comes from. USE WHEN: an agent, an ERP or an accounting tool holds a scanned or generated QR-bill and must know before paying or issuing it whether it is well-formed, whether the reference type matches the IBAN (QRR needs a QR-IBAN, IID 30000-31999), and above all whether the creditor and debtor addresses are STRUCTURED (type S) or still COMBINED (type K): the
| Parameter | Type | Description |
|---|---|---|
payload | string | The Swiss QR Code text with real line breaks: SPC, 0200, 1, IBAN, creditor (7 lines), ultimate creditor (7 empty lines), amount, currency, ultimate debtor (7 lines), reference type, reference, message |
check_postal_address2 paramsCheck a structured ISO 20022 postal address against a payment rail's published address rules, rule by rule, each verdict citing the docum…
Check a structured ISO 20022 postal address against a payment rail's published address rules, rule by rule, each verdict citing the document it comes from. USE WHEN: assembling a payment instruction (pain.001, a Fedwire message, a T2 transfer) with a creditor or debtor address, to learn whether the rail accepts it BEFORE submitting. The November 2026 changes (SIC 20.11, Fedwire 16.11, T2 R2026.NOV) remove the fully unstructured address option — this check tells you whether an address survives th
| Parameter | Type | Description |
|---|---|---|
scheme | string | Which rail's rules to check against: sps | hvps_plus | fedwire |
address | object | The ISO 20022 PostalAddress under test, in ISO tag vocabulary (snake_cased). |
lookup_ch_clearing1 paramResolve 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…
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 Pa
| Parameter | Type | Description |
|---|---|---|
iid | string | Swiss IID (1-5 digit number) |
send_feedback7 paramsReport a problem or a need directly to the IBANforge operators: incorrect validation result, stale or missing BIC/bank data, latency, or …
Report a problem or a need directly to the IBANforge operators: incorrect validation result, stale or missing BIC/bank data, latency, or anything blocking you from using or PAYING for the service (missing network, unclear pricing, quota shape). USE WHEN: a result looks wrong, data you need is missing, or you hit a wall (quota, payment, capability) and want it fixed. This tool is free and does NOT count against the daily free-tier limit — it works even after the limit is reached. A human reads ev
| Parameter | Type | Description |
|---|---|---|
got | string | What you received instead (for data errors). |
agent | string | Which agent/model is reporting, e.g. "claude-sonnet-5 via MCP". |
notes | string | What happened, what you needed, or what blocked you — free text. |
contact | string | Where we may answer you (e-mail) — optional, reports can be anonymous. |
endpoint | string | Endpoint or tool concerned, e.g. /v1/iban/batch. |
expected | string | What you expected (for data errors). |
error_type | string | Category of the report. Use "other" for product feedback, pricing/payment blockers or feature needs. |
request_api_key2 paramsStart the process that gives this session its own free IBANforge API key, without any e-mail address and without leaving your conversatio…
Start the process that gives this session its own free IBANforge API key, without any e-mail address and without leaving your conversation. USE WHEN: you hit the daily free allowance, a call answers 402, or you are about to run more than a handful of validations. WHAT YOU MUST DO WITH THE RESULT: read `status` first — `ok` means a code was issued, anything else means no code exists and `display_to_human` tells you and your human what to do instead. On `ok`, show `display_to_human` to your human
| Parameter | Type | Description |
|---|---|---|
reason | string | Optional. What the key is for, shown to the human on the approval page. |
client_name | string | Optional. Who is asking, shown to the human on the approval page. |
poll_api_key1 paramCollect the API key once a human has approved the request opened by request_api_key. USE WHEN: you have called request_api_key and shown …
Collect the API key once a human has approved the request opened by request_api_key. USE WHEN: you have called request_api_key and shown the code to your human. HOW TO CALL IT: leave `device_code` empty to reuse the last request from this session. The server usually waits up to thirty seconds before answering, and sometimes answers at once when it is busy — either way, calling it once per minute is enough, never in a tight loop. WHAT THE ANSWERS MEAN: `authorization_pending` is normal and means
| Parameter | Type | Description |
|---|---|---|
device_code | string | Optional. Leave it empty to reuse the last request from this session. |
Ready-made
Prompts
validate_and_explainValidate an IBAN and generate a human-readable explanation suitable for non-technical users.
Readable data
Resources
countriesList of all 89 countries supported by IBANforge with IBAN length, SEPA membership, VoP status, and country risk classification.pricingPer-call pricing for IBANforge API endpoints (USDC on Base L2 via x402 protocol).