Ibanforge

io.github.cammac-creatorPublished by GitHub account cammac-creatorv1.9.0Updated Oct 24, 2026

Check the bank behind an IBAN before you pay: bank-code check, BIC with source, bank-level sanctions

VerifiedStreamable HTTPWeb executableFinanceSecurity & MonitoringBusiness & Commerce

Overview

AI-generated overview

Checks the bank behind an IBAN before payment: validation, bank-code and BIC lookup, SEPA readiness and bank-level sanctions.

What you can do
  • Validate single IBANs or batches of up to 100, with bank, BIC and SEPA/VoP flags
  • Look up BIC/SWIFT codes and Swiss BC-Nummer/IID clearing numbers
  • Run pre-payment compliance triage on an IBAN's bank and country against sanctions lists
  • Check structured payment references, Swiss QR-bill payloads and ISO 20022 postal addresses
  • Request and collect a free API key, and send feedback to the operators
When to use it
Useful when an assistant handles payment instructions, supplier or creditor data, or invoice and QR-bill details and needs to confirm the bank behind an IBAN, catch typos, or triage sanctions and SEPA reachability before money moves.
Requirements
Either the remote Streamable HTTP endpoint or the npm package run locally with Node.js. No key is required for a limited keyless allowance; an optional ifk_ API key goes in IBANFORGE_API_KEY or the X-API-Key / Authorization header. Network access to the hosted API is needed.
Before you install
Calls go to a third-party hosted API under its terms. Paid tools need a key, prepaid credits or x402 USDC micropayments; the package has no wallet and does not pay automatically. A valid result does not prove an account exists or belongs to the payee, national check digits are mostly unchecked, and sanctions are matched on bank and country only. Keys are handed over once, so store them securely.

Installation

In SourceWeft

  1. Open Ibanforge in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.cammac-creator%2Fibanforge/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "ibanforge": {
      "type": "http",
      "url": "https://api.ibanforge.com/mcp"
    }
  }
}

README

ibanforge-mcp

[npm] [License]

Official Model Context Protocol (MCP) server for IBANforge.

Check the bank behind an IBAN before you pay: validation in 89 countries, a bank-code verdict from the national register (DE, AT, BE, SK, BG, CH, LI at this release; the live list is in llms.txt), the bank and BIC with their source, the SEPA, SEPA Instant and VoP readiness of the bank, and bank-level sanctions (OFAC, EU, UN).

Not a name check (VoP, BAV, CoP), not proof that an account exists or is open, not a sanctions screening of the payee (bank and country only), not a licensed copy of the SWIFT BIC directory. The national check digits inside the BBAN are not checked yet (the French RIB key, the Italian CIN, the Spanish DC, the German account-number methods): an IBAN with a wrong national key but a correct mod-97 still comes back valid. Only the UK modulus check and the Polish settlement-number check digit are run.

For business software and AI agents alike: an API key that needs no e-mail, prepaid packs by card, and x402 micropayments on the HTTP API.

Free access

This README gives no figures on purpose: a published package stays as it is until the next release, while the allowances of the service can change. The figures in force are served live at rate-limits.yml and by GET /v1.

  • Remote MCP, nothing to install: https://api.ibanforge.com/mcp answers full tool calls without a key or a wallet, within its own allowance per source address (mcp_anonymous in rate-limits.yml), a batch counting one per IBAN. It is separate from the REST trial below. With an API key in the Authorization: Bearer header, its calls count against that key exactly as on the REST API.
  • This package, before you have a key: validate_iban goes through the REST API's keyless trial (rest_anonymous_trial), counted per source address; the trial block of each answer says how many calls are left and when the count resets. The other paid tools need a key, prepaid credits or x402.
  • A key that needs no e-mail and no card: POST https://api.ibanforge.com/v1/keys/generate with an empty body returns an ifk_ key with its own allowance on every endpoint (anonymous_key). Claimed at POST /v1/keys/claim with a code mailed to an address given for this, the same key gets a larger allowance (free_tier; see Keep using the same key).

Tools

ToolDescriptionCost (USDC)
validate_ibanValidate a single IBAN (ISO 13616 mod-97), resolve BIC, classify issuer (bank/EMI/vIBAN), SEPA + VoP flags0.005
batch_validate_ibanValidate up to 100 IBANs in one call0.002 each
lookup_bicLookup BIC/SWIFT against 121k+ BIC entries (39k+ LEI-enriched via GLEIF)0.003
lookup_ch_clearingLookup Swiss BC-Nummer / IID against 1,100+ SIX BankMaster entries — full rail participation (SIC, euroSIC, CHF instant) + QR-IID0.003
check_compliancePre-payment check: IBAN + sanctions lists (OFAC, EU, UN) matched on the payee's bank (BIC8) and country, never on the payee's name + FATF + SEPA Instant + VoP readiness + risk score (0-100)0.02
validate_payment_referenceValidate a structured payment reference — RF/ISO 11649 ("SCOR"), Swiss QR reference ("QRR"), Belgian OGM/VCS, Finnish viitenumero — each against the dated document that publishes the rule. Supply an IBAN to get the QRR↔QR-IBAN pairing verdict (billed as one validate_iban call)free
check_postal_addressCheck a structured ISO 20022 postal address against SPS (SIX), HVPS+ (T2) or Fedwire rules; timetables differ (SPS 2026 in force 14 Nov 2026, though SIC does not validate addresses and each bank decides; Fedwire release moved to November 2027) — every finding cites its source document and datefree
check_swiss_qr_billCheck the text payload of a Swiss QR-bill against its structural rules; does not validate the beneficiary accountfree
audit_creditor_fileAudit an entire creditor/supplier file (CSV/XLSX): IBAN, bank, BIC, SEPA reach and address conformity per row, plus file-wide checks (duplicates, BIC mismatch, address vs. IBAN country). Free preview with masked IBANs; the full annotated report is a paid deliverablefree preview (report: CHF via Stripe)
audit_statusCheck payment status of an audit job created by audit_creditor_file and get the report download link once paidfree
send_feedbackReport incorrect data, or claim the refund the x402 terms promise when a paid answer was wrongfree
request_api_keyOpen a key request a human approves in a browser — no e-mail, no card, no account. Shows a short code and a link to hand to your humanfree
poll_api_keyCollect the key once a human has approved it. Handed over exactly once, with the line to paste into an MCP client configfree

The USDC prices are those of x402 payments on the HTTP API, the only way a batch costs less per IBAN than single validations. On a key or prepaid credits, each paid call uses one request or one credit, and each IBAN of a batch uses one.

Get a durable key from inside your MCP client

No e-mail, no account, no form. Four steps, about fifteen seconds of human time:

  1. Call request_api_key. Read status first — ok means a code was issued.
  2. Show your human the display_to_human block verbatim: it carries the short code and the link. Do not open the link yourself, and never invent an address.
  3. Your human opens the page, checks the code matches, and clicks. The page gives a key with no address at all; they may add one there to raise the allowance.
  4. Call poll_api_key (no argument needed). On approved it carries the key once, plus a ready-made config_line to paste. Save it as IBANFORGE_API_KEY and reconnect.

Both tools are free and keep working after the free allowance is spent — that is the point of them.

Connect and get a first result

Remote MCP: no installation or key

Use the Streamable HTTP URL https://api.ibanforge.com/mcp in a compatible MCP client. This remote service has its own allowance per source address (see Free access); each IBAN in a batch counts as one unit. With a key sent as Authorization: Bearer ifk_... (or X-API-Key), tool calls count against that key exactly as on the REST API, instead of this allowance. A key in the URL is not read.

For Claude Code:

bash
claude mcp add --transport http ibanforge https://api.ibanforge.com/mcp# with your key:claude mcp add --transport http ibanforge https://api.ibanforge.com/mcp --header "Authorization: Bearer ifk_your_key"

In Claude and Claude Desktop, add the key under Request headers when you create the custom connector. ChatGPT sends no key to a connector: there, the remote service stays on its keyless allowance.

Ask: “Validate DE89370400440532013000, identify the bank, and explain what the result can and cannot prove.” Read valid, bank_code_check and the provenance of any BIC. A valid checksum does not prove that an account exists or belongs to a named person.

Installed MCP: REST access with an optional reusable key

For Claude Desktop, add this to its MCP configuration; for Cursor, use .cursor/mcp.json:

json
{  "mcpServers": {    "ibanforge": {      "command": "npx",      "args": ["-y", "ibanforge-mcp"]    }  }}

For Claude Code:

bash
claude mcp add --transport stdio ibanforge -- npx -y ibanforge-mcp

This configuration intentionally works without a placeholder key. The installed package calls the REST API: without a key, validate_iban uses its keyless trial, separate from remote MCP. Always read the returned limits; individual free utilities have their own protections. After the trial, single-IBAN validation may return format only, marked _degraded: true and _scope: "format_only". It contains no bank, SEPA or compliance verdict. A rejected batch returns an error; it is not expanded into individual free requests.

Keep using the same key

Create a key without supplying an address:

bash
curl -X POST https://api.ibanforge.com/v1/keys/generate

Store the returned api_key securely and add it as IBANFORGE_API_KEY in the MCP server's env object, then reconnect the client. Do not paste a placeholder key and do not mint a new key for every conversation. The key starts at the allowance given in Free access; read monthly_limit, since a temporary protection can reduce it. It provides a stable identity, a dedicated quota and GET /v1/keys/usage.

Once used, that same key can be claimed at POST /v1/keys/claim, with Authorization: Bearer ifk_…, never a key in the body. A six-digit code sent to an address explicitly supplied for this purpose raises the key's allowance, renewed with each new period. An x402 payment made on the key raises it once, without renewal. The figures are those of free_tier in rate-limits.yml. Do not infer an address or initiate payment without authorization. Prepaid credits also work with the configured key: one credit per call, and one per IBAN in a batch.

This package has no wallet and does not sign or automatically pay x402 requests. It returns the API's payment requirements. To pay per call, use an x402-capable HTTP client following the payment guide.

Recover without guessing

  • isError: true: no successful tool result. Inspect error, status, cause and _hint.
  • 402: follow the existing key's cause or configure an available key; do not create keys to bypass limits.
  • 429: wait for retry_after when present. The client forwards the HTTP Retry-After value.
  • request_timeout / transport_error: no complete response was received. This is not a bank verdict.
  • _degraded: true: only format was checked. Never use it as evidence of bank or SEPA reachability.

Requests time out after 30 seconds, including reading the response body. There is no automatic retry: an interrupted upload or other POST may already have been processed.

Examples

After adding the server, ask your AI agent:

  • "Validate the IBAN DE89 3704 0044 0532 0130 00 and tell me which bank holds its code"
  • "Is the bank code of CH93 0076 2011 6238 5295 7 allocated?" (the IBAN passes mod-97; the SIX register allocates its bank code to nobody, so bank_code_check.reason is not_allocated)
  • "Look up BIC UBSWCHZH80A"
  • "Look up Swiss BC-Nummer 230"
  • "Run a compliance check on IBAN GB29 NWBK 6016 1331 9268 19"
  • "Validate these 5 IBANs in batch: …"

Configuration

Env varDefaultDescription
IBANFORGE_API_BASEhttps://api.ibanforge.comOverride for self-hosted or staging instances
IBANFORGE_API_KEY(unset)Optional real Bearer ifk_* key; omit until one is available
IBANFORGE_TIMEOUT_MS30000Complete HTTP response deadline, 1–120000 ms; invalid values use the default

Data sources

  • Bank-code verdict: the national registers of Germany (Bundesbank), Austria (OeNB), Belgium (NBB), Slovakia (NBS), Bulgaria (BNB) and Switzerland and Liechtenstein (SIX BankMaster) at this release, where a code the register does not hold is not_allocated; elsewhere a partial register or a composite map, where a miss is not a refusal. The live list is in llms.txt.
  • 121k+ BIC entries (entries, not institutions). GLEIF and the national registers are refreshed monthly; the SwiftCodes rows are a public copy of the SWIFT directory frozen in January 2018, re-imported without changing, and still about two thirds of the directory. Exact live counts at api.ibanforge.com/llms.txt. Sources:
    • PeterNotenboom/SwiftCodes (MIT-licensed public copy of the SWIFT directory, data frozen in January 2018)
    • GLEIF BIC-LEI mapping (the only rows with LEI codes, 39k+)
    • EBA Clearing STEP2 SCT (official SEPA Reachable PSPs directory)
    • Deutsche Bundesbank BLZ (official quarterly file)
    • NBP EWIB (official Polish bank registry)
    • SIX Group BankMaster (Swiss BICs)
  • 1,100+ BC-Nummern from the official SIX BankMaster CSV
  • EMI / vIBAN classification from a curated set of non-bank issuers (EMIs, payment institutions, digital banks) and, for Spanish bank codes, the EBA PSD2 register; the live count is served at llms.txt
  • VoP readiness from the EPC Verification of Payee scheme register (vop.csv), refreshed weekly with the other compliance lists
  • Sanctions from the OFAC, EU and UN lists, matched on the payee's bank (BIC8) and country, never on the payee's name

Links

Legal

Calls made through this server hit the hosted API and are governed by the Terms of Service (privacy, DPA). Validation confirms IBAN structure and registry data — it does not confirm that an account exists or belongs to anyone; verify the payee by name before sending funds.

License

Apache-2.0

Source: mcp/README.md at commit bb02363

Tools

11

validate_iban

Validate IBAN

Verify whether an IBAN from any of the 89 IBAN countries 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: bank_code_holder: confirmed (a register names who holds the bank code), inferred (we name a holder from a source that cannot settle it: our composite map, the prefix fallback, a published structural rule), not_allocated (the national register says nobody holds it: do not send) or unknown. valid stays true in all four: it only means the IBAN is well formed. checks: one status per check (pass, fail, inferred, unknown, not_checked, not_applicable); payee_name, account_exists and payee_sanctions are always not_checked. national_check_digits { country, scheme, status: pass | fail | not_applicable | not_checked, detail?, method?, verified_by? } (FR, MC, BE, IT, SM, ES and DE only): the national key inside the BBAN; fail means the account number cannot have been issued as written, and valid stays true; in DE a fail with verified_by independent_implementation is a warning (national_check_digits_suspect), not a stop, and not_checked means the bank code or its Bundesbank method is not covered here. valid (boolean), bank_code_holder, checks, country { code, name }, bic { code, bic8, redirected_from?, bank_name, city, basis

Parametersibanrequired

batch_validate_iban

Batch Validate IBANs

Validate up to 100 IBANs in a single call. Paid per call in USDC via x402, it costs $0.002 per IBAN instead of $0.005 per validate_iban call; on an API key or a credit pack each IBAN uses one request or credit, the same as one validate_iban call. 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 USDC per IBAN via x402 (free with no key on this transport: 25 units a week per source address, one per call and one per IBAN in batch_validate_iban, reset on Monday 00:00 UTC. Or an ifk_ key with no e-mail at all: POST https://api.ibanforge.com/v1/keys/generate with no body for 25 calls/month, on the REST API or on this transport, and POST /v1/keys/claim lifts that same key to 200 a month. Send the key here as Authorization: Bearer ifk_… (or X-API-Key) and each call counts against it exactly as on the REST API).

Parametersibansrequired

lookup_bic

Lookup BIC/SWIFT

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: BIC directory, 121,000+ entries (entries, not institutions): GLEIF and national registers, refreshed monthly, plus a public copy of the SWIFT directory frozen in January 2018 that still makes up about two thirds of the rows. 39,000+ of the rows carry an LEI from GLEIF. SOURCE: source names the dataset of this row and source_name spells it out; source_as_of is present only when that dataset is a copy frozen at that month (the public copy of the SWIFT directory, frozen in January 2018). listed_in_current_source says whether this BIC8 still appears in a list refreshed this cycle (GLEIF, a national register, the EPC scheme registers, the EBA STEP2 and NBP lists): true when one of them carries it, null when it was not found in what could be read in full. It never answers false today: the EBA STEP2 and NBP lists are only read through our deduplicated directory, which can drop a BIC they carry, so an absence is not proven. It does not prove the bank still exists under this name. COST: $0.003 per call (free with no key on this transport: 25 units a week per source address, one per call and one per IBAN in batch_validate_iban, reset on Monday 00:00 UTC. Or an ifk_ key with no e-mail at all: POST https://api.ibanforge.com/v1/keys/generate with no body for 25 calls/month, on the REST API or on this transport, and POST /v1/keys/claim lifts that same key to 200 a month. Send the key here as Authorization: Bearer ifk_… (or X-API-Key) and each call counts against it exactly as on the REST API).

Parametersbicrequired

check_compliance

Compliance Check

Run a pre-flight compliance triage 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 whether the payee's bank or its country is under sanctions, asks if a SEPA Instant transfer can reach the bank, 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 lists (OFAC, EU, UN) matched on the payee's bank (BIC8), the country checked against a fixed list of sanctioned jurisdictions, never the payee's name + FATF status + SEPA Instant reachability + whether the EPC Verification of Payee (VoP) register lists the bank as ready; the name check itself is done by the payee's bank, never here. RETURNS: the full validate enrichment plus a compliance object with risk_score (0-100, 0 = safest), risk_level (low/medium/elevated/high/critical), sanctions matched_lists + fatf_status, reachability, vop status, and flags[] (e.g. sanctioned_country, fatf_grey_list, emi_issuer, no_vop). compliance.sanctions.institution_listed says whether the payee's bank is on a list (null when no bank was screened, where bank_sanctioned still answers false) and payee_screened is always false; compliance.reachability.listed_in_epc_registers and compliance.vop.register_status name the registers' answers, null when not consulted (screened false); outside the SEPA area the country answers (false, not_listed) whether or not the registers are loaded. The flag bank_code_inferred carries no weight. COST: $0.02 per call (free with no key on this transport: 25 units a week per source address, one per call and one per IBAN in batch_validate_iban, reset on Monday 00:00 UTC. Or an ifk_ key with no e-mail at all: POST https://api.ibanforge.com/v1/keys/generate with no body for 25 calls/month, on the REST API or on this transport, and PO

Parametersibanrequired

validate_payment_reference

Validate Payment Reference

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 itself — that is validate_iban. SCHEMES: RF Creditor Reference (ISO 11649, "SCOR" in Swiss Payment Standards, mod 97-10); Swiss QR reference ("QRR", 27 digits, modulo 10 recursive); Belgian OGM/VCS (12 digits, modulo 97, a remainder of 0 written 97); Finnish viitenumero (4-20 digits, weights 7-3-1 from the right). Norwegian KID and Swedish OCR are RECOGNISED but never judged: they answer valid: null with status unverifiable_without_creditor_config, because modulus type and length are configured per creditor account by the beneficiary bank and are not a property of the string. NEVER relay those to a user as "invalid" — say the check needs the creditor bank configuration. AMBIGUITY: only a leading "RF" and a 27-digit length pin a scheme down. A bare 12-digit string is both a Belgian OGM and a legal Finnish length, so the more specific reading is returned and the other appears in also_valid_as. Pass reference_type when you know the country. THE PAIRING RULE — the part no checksum library reproduces: pass an iban and you also get a pairing verdict. Per the Swiss Implementation Guidelines a QRR reference may ONLY be used with a QR-IBAN (institution identifier in the SIX range 30000-31999), and an ISO 11649 reference may NOT be used with one. Outside CH and LI, pairing is not_applicable — there is no QR-IBAN to pair against — and that does not affect the reference's own checksum verdict. IMPORTANT: valid and pairing are INDEPENDENT. A reference can be arithmetically valid and still

Parametersibanreferencerequiredreference_type

check_swiss_qr_bill

Check Swiss QR-bill Payload

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): type K has not been permitted since 21.11.2025, and the banks guarantee payment of a type K QR-bill only until the end of September 2026. DO NOT USE to learn which bank holds the account or its payment-rail participation: that is the paid validate_iban. RETURNS: { valid, ready_for_2026_11_14, creditor_iban { value, valid, country, qr_iban, iid }, creditor { present, address, structured, sps_check, proposed_structured }, ultimate_debtor, amount, currency, reference { type, value, valid, note }, findings [{ code, severity, field, detail, source }], next_steps, source }. A combined address comes back with proposed_structured, the S-type fields derived from the combined lines, to relay as a fix. IMPORTANT: relay each finding's source string. COST: $0 per call, on every surface (free with no key on this transport: 25 units a week per source address, one per call and one per IBAN in batch_validate_iban, reset on Monday 00:00 UTC. Or an ifk_ key with no e-mail at all: POST https://api.ibanforge.com/v1/keys/generate with no body for 25 calls/month, on the REST API or on this transport, and POST /v1/keys/claim lifts that same key to 200 a month. Send the key here as Authorization: Bearer ifk_… (or X-API-Key) and each call counts against it exactly as on the REST API).

Parameterspayloadrequired

check_postal_address

Check ISO 20022 Postal Address

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 them. DO NOT USE to verify that a street or town EXISTS: this checks conformity with the message format rules, not postal reality. SCHEMES: 'sps' (Swiss Payment Standards, SIX), 'hvps_plus' (HVPS+ / T2, ECB), 'fedwire' (Federal Reserve). There is deliberately NO 'cbpr+' scheme: that guideline sits behind swift.com, unreachable to automated readers, and a conformity boolean quoting an unread document would be a guess dressed as a verdict — the note field restates this on every answer. VERDICTS: pass, fail, and not_applicable — the last marks a rule whose precondition is not met and never counts as a pass. conforms is true when no finding failed. IMPORTANT: relay each finding's source string — it names the exact document, version and validity date the rule is quoted from. They are what makes the verdict auditable. FREE: the rules are published commodities. The paid surface is the postal_address block that /v1/bic and /v1/iban/validate return for the resolved institution. COST: $0 per call, on every surface (free with no key on this transport: 25 units a week per source address, one per call and one per IBAN in batch_validate_iban, reset on Monday 00:00 UTC. Or an ifk_ key with no e-mail at all: POST https://api.ibanforge.com/v1/keys/generate with no body for 25 calls/month, on the REST API or on this transport, and POST /v1/keys/claim lifts that same key to 200 a month. Send the key here as Authorization: Bearer ifk_… (or X-API-Key) and each call counts against it exactly as on t

Parametersschemerequiredaddressrequired

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). EVERY IID OF THE SIX BANKMASTER, with its full 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. Only relevant for CH and LI accounts. COST: $0.003 per call (free with no key on this transport: 25 units a week per source address, one per call and one per IBAN in batch_validate_iban, reset on Monday 00:00 UTC. Or an ifk_ key with no e-mail at all: POST https://api.ibanforge.com/v1/keys/generate with no body for 25 calls/month, on the REST API or on this transport, and POST /v1/keys/claim lifts that same key to 200 a month. Send the key here as Authorization: Bearer ifk_… (or X-API-Key) and each call counts against it exactly as on the REST API).

Parametersiidrequired

send_feedback

Send Feedback to IBANforge

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 free allowance — it works even after the allowance is spent. A human reads every report; verified data errors on paid x402 calls are refunded on-chain.

Parametersgotagentnotesrequiredcontactendpointexpectederror_typerequired

request_api_key

Request an IBANforge API key

Start the process that gives your human a free IBANforge API key, without any e-mail address. The key does not unlock this session: it works once your human puts it in the MCP client configuration and reconnects, or sends it to the REST API, so tell them where it goes when you hand it over: `config_line` (returned by poll_api_key) for Claude Code with the npm package; for the hosted server https://api.ibanforge.com/mcp, the header "Authorization: Bearer <key>", which Claude and Claude Desktop take under Request headers when the custom connector is added; ChatGPT sends no key to a connector, so in ChatGPT the key serves on the REST API only. USE WHEN: you used up the free allowance, a call answers 402, or your human is 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 VERBATIM (the user_code and the link) and say, in your own words, that opening the link and approving takes about fifteen seconds and asks for nothing. Do NOT open the link yourself, do NOT fill anything in on their behalf, and do NOT invent an e-mail address: the page gives a key with no address at all, and your human may add one if THEY choose. Then call poll_api_key. This tool is free and does NOT count against the free allowance — it works even after the allowance is spent.

Parametersreasonclient_name

poll_api_key

Collect the approved IBANforge API key

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 nobody has approved yet — wait `retry_in_seconds` and call again; `approved` carries the key ONCE and never again, so hand it to your human immediately together with `config_line`, or the header "Authorization: Bearer <key>" for the hosted server; `access_denied` means somebody refused — tell your human, ask THEM whether to try again, and open at most ONE more request; `expired_token` means the code timed out — you may call request_api_key ONE more time, and if that expires too, stop and keep using the keyless allowance or x402; `invalid_grant` means this code can no longer be used at all — stop. This tool is free and does NOT count against the free allowance.

Parametersdevice_code

Version history

4
  1. v1.9.0LatestOct 7, 2026
  2. v1.8.1Sep 29, 2026
  3. v1.8.0Sep 25, 2026
  4. v1.7.0Sep 16, 2026

Score

100% 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.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts