Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.cammac-creator/ibanforge

REMOTE · API.IBANFORGE.COM · 2 COMPONENTS · SCANNED SEP 20

Pre-payout IBAN screening for AI agents: validation, sanctions, Swiss clearing, risk scoring

0 this week 80 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security66
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • Authorisation not fully verified: no authorisation is required to call this server, and 1 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
  • HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
  • The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
  • DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
Schema Quality & AI Usability74
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 5010 tokens (~385/item across 13 items; 11 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "send_feedback" implies "send" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 13 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the io.github.cammac-creator/ibanforge MCP server?

io.github.cammac-creator/ibanforge is a hosted endpoint at https://api.ibanforge.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · api.ibanforge.com

# add to Claude Code
claude mcp add --transport http cammac-creator-ibanforge 'https://api.ibanforge.com/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "cammac-creator-ibanforge": {
      "url": "https://api.ibanforge.com/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "cammac-creator-ibanforge": {
      "type": "http",
      "url": "https://api.ibanforge.com/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.cammac-creator-ibanforge]
url = "https://api.ibanforge.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cammac-creator-ibanforge": {
      "type": "remote",
      "url": "https://api.ibanforge.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add cammac-creator-ibanforge --url 'https://api.ibanforge.com/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  cammac-creator-ibanforge:
    url: "https://api.ibanforge.com/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "cammac-creator-ibanforge": {
      "Transport": "http",
      "Url": "https://api.ibanforge.com/mcp"
    }
  }
}
# add to Vellum
assistant mcp add cammac-creator-ibanforge -t streamable-http -u 'https://api.ibanforge.com/mcp'
// mcp.json
{
  "mcpServers": {
    "cammac-creator-ibanforge": {
      "type": "http",
      "url": "https://api.ibanforge.com/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 17 Sept 26 0
    • The server rewrote its instructions, which are the text every model session reads security
  • 15 Sept 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “check_swiss_qr_bill” rewrote its description, which is the text the model reads security
    • Tool “batch_validate_iban” rewrote its description, which is the text the model reads security
    • Tool “check_compliance” rewrote its description, which is the text the model reads security
    • Tool “check_postal_address” rewrote its description, which is the text the model reads security
    • Tool “validate_payment_reference” rewrote its description, which is the text the model reads security
    • Tool “validate_iban” rewrote its description, which is the text the model reads security
    • Tool “lookup_ch_clearing” rewrote its description, which is the text the model reads security
    • Tool “lookup_bic” rewrote its description, which is the text the model reads security
    • Schema quality: 4054 → 5010 functional
    • Server version: 1.6.0 → 1.7.0 functional
    • Server version: 1.5.0 → 1.6.0 functional
    • New tool “poll_api_key” functional
    • New tool “request_api_key” functional
  • 4 Sept 26 0
    • Stability: 0.97 → pass security
  • 3 Sept 26 0
    • Schema quality: 3616 → 4054 functional
    • Stability: pass → 0.97 functional
    • Server version: 1.4.4 → 1.5.0 functional
    • New tool “check_swiss_qr_bill” functional
  • 2 Sept 26 −1
    • Tool “lookup_bic” rewrote its description, which is the text the model reads security
    • Tool “batch_validate_iban” rewrote its description, which is the text the model reads security
    • Tool “check_compliance” rewrote its description, which is the text the model reads security
    • Tool “check_postal_address” rewrote its description, which is the text the model reads security
    • Tool “lookup_ch_clearing” rewrote its description, which is the text the model reads security
    • Tool “validate_iban” rewrote its description, which is the text the model reads security
    • Tool “validate_payment_reference” rewrote its description, which is the text the model reads security
    • Schema quality: 318 → 361 functional
  • 30 Aug 26 0
    • Tool “validate_iban” rewrote its description, which is the text the model reads security
    • Server version: 1.4.3 → 1.4.4 functional
  • 28 Aug 26 0
    • Schema quality: 2723 → 3120 functional
    • New tool “check_postal_address” functional
  • 27 Aug 26 0
    • Schema quality: 263 → 302 functional
    • New tool “validate_payment_reference” functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Probed https://api.ibanforge.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=api.ibanforge.com CN=YE2,O=Let's Encrypt,C=US 2 Aug 2026 31 Oct 2026 ECDSA 256 ECDSA-SHA384 6abc1dc29b8aee8d704e0d8f30475b4f845
SANs: api.ibanforge.com
CN=YE2,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 4df3b15dd6c0784c507cd37b58e6f115
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd

Background: What to check on a remote MCP endpoint →

DNSSEC secure

Validation of api.ibanforge.com. Secure

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
ibanforge.com. present 27620 13 Verified
api.ibanforge.com. Verified address RRset verified with the apex keys
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=31536000; includeSubDomains
x-content-type-options nosniff
x-frame-options DENY
referrer-policy strict-origin-when-cross-origin
permissions-policy geolocation=(), microphone=(), camera=(), payment=(), usb=()

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://api.ibanforge.com/mcp Verified 200
http (plaintext) http://api.ibanforge.com/mcp HTTPS enforced 301 https://api.ibanforge.com/mcp
MCP tools · 11 exposed · ~4,574 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
batch_validate_iban ~236

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 on this transport, one per call and one per IBAN in batch_validate_iban, or an ifk_ key with no e-mail at all — POST https://api.ibanforge.com/v1/keys/generate with no body for 25 REST calls/month, and POST /v1/keys/claim lifts that same key to 200 a month).

NameTypeReqDescription
ibansarrayyesArray of IBANs (1-100)
NameTypeReqDescription
countnumberyesNumber of IBANs processed.
resultsarrayyesOne result per input IBAN, in the same order. Same shape as validate_iban.

No examples provided.

check_compliance ~337

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 list, FATF jurisdictions) + SEPA Instant reachability + VoP (EU 2024/886) participant. 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). COST: $0.02 per call (free: 10 units/IP/day on this transport, one per call and one per IBAN in batch_validate_iban, or an ifk_ key with no e-mail at all — POST https://api.ibanforge.com/v1/keys/generate with no body for 25 REST calls/month, and POST /v1/keys/claim lifts that same key to 200 a month).

NameTypeReqDescription
ibanstringyesIBAN to check
NameTypeReqDescription
bank_code_checkobject
bbanobject
bic
check_digitsstring
clearingSwiss clearing data when country is CH or LI.
complianceobjectyes
cost_usdcnumberyesWhat THIS call was billed. Zero on the free MCP tier.
countryobject
errorstring
error_detailstring
formattedstringIBAN with 4-char groups for display.
ibanstringyesNormalized IBAN (uppercase, no spaces).
issuerobject
list_price_usdcnumberCatalogue price of the same call on the paid REST/x402 route.
metaobjectyes
modulus_checkobject
next_stepsarrayOrdered advice derived from THIS result: what blocks a payment first, what merely enriches it after. Branch on `code`, never on the prose. `because` names the field that produced the step so the advi…
official_identityobjectWho a central bank says holds the resolved code (ECB by LEI and for FR bank codes, Banco de Espana for ES). Present only on a match — absence is not a negative. INFORMATIONAL ONLY: it never changes v…
pra_authorisationobject
processing_msnumber
psd_registrationobject
risk_indicatorsobject
sepaobject
validbooleanyes

No examples provided.

check_postal_address ~489

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: 10 units/IP/day on this transport, one per call and one per IBAN in batch_validate_iban, or an ifk_ key with no e-mail at all — POST https://api.ibanforge.com/v1/keys/generate with no body for 25 REST calls/month, and POST /v1/keys/claim lifts that same key to 200 a month).

NameTypeReqDescription
addressobjectyesThe ISO 20022 PostalAddress under test, in ISO tag vocabulary (snake_cased).
schemestringyesWhich rail's rules to check against: sps | hvps_plus | fedwire
NameTypeReqDescription
conformsbooleanyesTrue when no finding failed. not_applicable findings never count against it.
findingsarrayyesOne entry per rule of the scheme, in a stable order.
notestringyesWhy 'cbpr+' is not on the menu. Served on every answer.
schemestringyessps | hvps_plus | fedwire — the rule set that was applied.

No examples provided.

check_swiss_qr_bill ~467

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 standard removed type K on 21.11.2025 and banks stop processing payments built on it from 14.11.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: 10 units/IP/day on this transport, one per call and one per IBAN in batch_validate_iban, or an ifk_ key with no e-mail at all — POST https://api.ibanforge.com/v1/keys/generate with no body for 25 REST calls/month, and POST /v1/keys/claim lifts that same key to 200 a month).

NameTypeReqDescription
payloadstringyesThe 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, messag…
NameTypeReqDescription
alternative_schemesarrayyes
amountstring|nullyes
billing_informationstring|nullyes
codingstringyes
creditorobjectyes
creditor_ibanobjectyes
currencystring|nullyes
findingsarrayyes
next_stepsarrayyes
qr_typestringyes
ready_for_2026_11_14booleanyesvalid AND every present address is structured (type S): what banks require from 14.11.2026.
referenceobjectyes
sourcestringyes
trailerstringyes
ultimate_creditor_emptybooleanyes
ultimate_debtorobjectyes
unstructured_messagestring|nullyes
validbooleanyesTrue when no finding has severity error.
versionstringyes

No examples provided.

lookup_bic ~285

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; additional rows from SwiftCodes (MIT), Bundesbank, SIX, NBP, EBA Step2 SCT), refreshed monthly. COST: $0.003 per call (free: 10 units/IP/day on this transport, one per call and one per IBAN in batch_validate_iban, or an ifk_ key with no e-mail at all — POST https://api.ibanforge.com/v1/keys/generate with no body for 25 REST calls/month, and POST /v1/keys/claim lifts that same key to 200 a month).

NameTypeReqDescription
bicstringyesBIC/SWIFT code (8 or 11 chars)
NameTypeReqDescription
bicstringyesEcho of the input, normalized to uppercase.
bic11string11-char form including branch.
bic8string8-char form (institution-level).
branch_codestring
branch_infostring|null
citystring|null
countryobjectSame shape as REST GET /v1/bic/:code. name falls back to the country code when the row carries no name.
country_codestringDEPRECATED since 1.4.0, removed no earlier than 2027-01-01. Use country.code.
country_namestring|nullDEPRECATED since 1.4.0, removed no earlier than 2027-01-01. Use country.name, which falls back to the code rather than to null.
errorstring
foundboolean
institutionstring|nullBank legal name.
is_test_bicboolean
leistring|nullLegal Entity Identifier (ISO 17442) if available.
lei_statusstring|null
validbooleanSet when the BIC failed format validation.
valid_formatboolean

No examples provided.

lookup_ch_clearing ~357

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. Only relevant for CH and LI accounts. COST: $0.003 per call (free: 10 units/IP/day on this transport, one per call and one per IBAN in batch_validate_iban, or an ifk_ key with no e-mail at all — POST https://api.ibanforge.com/v1/keys/generate with no body for 25 REST calls/month, and POST /v1/keys/claim lifts that same key to 200 a month).

NameTypeReqDescription
iidstringyesSwiss IID (1-5 digit number)
NameTypeReqDescription
addressobject
bicstring|nullBIC if mapped.
cost_usdcnumberWhat THIS call was billed. Zero on the free MCP tier.
errorstring
foundboolean
iidstringNormalized 5-digit BC-Nummer.
institutionobject
list_price_usdcnumberCatalogue price of the same call on the paid REST/x402 route.
messagestring
notestring
payment_servicesobject
qr_iidstring|nullQR-bill enabled IID.
redirected_fromstring
sic_iidstring|null
valid_onstring

No examples provided.

poll_api_key ~276

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`; `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 daily free-tier limit.

NameTypeReqDescription
device_codestringOptional. Leave it empty to reuse the last request from this session.
NameTypeReqDescription
api_keystring|nullyesPresent exactly once, on the first approved poll.
config_linestring|nullyesThe exact command line to give the human. Do not run it yourself.
emailstring|nullyesAbsent on the anonymous tier: no address was ever given.
expires_innumber|nullyes
key_prefixstring|nullyes
messagestringyesOne sentence for the human.
monthly_limitnumber|nullyes
retry_in_secondsnumber|nullyes
statusstringyesauthorization_pending is normal: wait `retry_in_seconds` and call again.
tieryesanonymous = the entry allowance, email/claimed/paid = the raised one.

No examples provided.

request_api_key ~280

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 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 daily free-tier limit — it works even after the limit is reached.

NameTypeReqDescription
client_namestringOptional. Who is asking, shown to the human on the approval page.
reasonstringOptional. What the key is for, shown to the human on the approval page.
NameTypeReqDescription
display_to_humanstringyesA ready-made block of text to show verbatim. Do not paraphrase it.
expires_innumber|nullyesSeconds until the code stops working.
intervalnumber|nullyesMinimum seconds between two poll_api_key calls.
statusstringyesok means a code was issued. Anything else: read display_to_human and fall back.
user_codestring|nullyesShow this to the human, exactly as written, e.g. WDJB-MJHT.
verification_uristring|nullyesThe page the human opens. Never open it yourself.
verification_uri_completestring|nullyesSame page with the code pre-filled. This is the one to show.

No examples provided.

send_feedback ~280

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 every report; verified data errors on paid x402 calls are refunded on-chain.

NameTypeReqDescription
agentstringWhich agent/model is reporting, e.g. "claude-sonnet-5 via MCP".
contactstringWhere we may answer you (e-mail) — optional, reports can be anonymous.
endpointstringEndpoint or tool concerned, e.g. /v1/iban/batch.
error_typestringyesCategory of the report. Use "other" for product feedback, pricing/payment blockers or feature needs.
expectedstringWhat you expected (for data errors).
gotstringWhat you received instead (for data errors).
notesstringyesWhat happened, what you needed, or what blocked you — free text.
NameTypeReqDescription
idnumberyesReport id — check status at GET /v1/feedback/{id}.
okbooleanyes

No examples provided.

validate_iban ~857

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, basis, authoritative, source, as_of, lei, lei_status, address { street, post_code, region, city, country, romanized, romanization, source, language, as_of } } — basis says WHERE the bank code to BIC pairing came from (national_register | curated_map | directory_prefix) and authoritative, derived from it, says whether the BIC may be stored and settled against; outside a national_register pairing the BIC is advisory, confirm it before it becomes a routing instruction — lei and address are read from the same directory row /v1/bic/:code serves, so this call already carries them; both are null when GLEIF publishes nothing for that BIC, which means "no LEI on file", not "the institution has none". bic.address is the LEGAL ENTITY seat, so bic.address.city may legitimately differ from bic.city (the register city for THIS bank code), and bic.address.as_of dates the entity last filing, usually much older than bic.as_of. issuer { type: bank | digital_bank | emi | payment_institution, name }, sepa { member, schemes, vop_required, vop_participant — is the resolved bank listed as r…

NameTypeReqDescription
ibanstringyesIBAN to validate (spaces/hyphens stripped automatically)
NameTypeReqDescription
bank_code_checkobject
bbanobject
bic
check_digitsstring
clearingSwiss clearing data when country is CH or LI.
cost_usdcnumberyesWhat THIS call was billed. Zero on the free MCP tier.
countryobject
errorstring
error_detailstring
formattedstringIBAN with 4-char groups for display.
ibanstringyesNormalized IBAN (uppercase, no spaces).
issuerobject
list_price_usdcnumberCatalogue price of the same call on the paid REST/x402 route.
modulus_checkobject
next_stepsarrayOrdered advice derived from THIS result: what blocks a payment first, what merely enriches it after. Branch on `code`, never on the prose. `because` names the field that produced the step so the advi…
official_identityobjectWho a central bank says holds the resolved code (ECB by LEI and for FR bank codes, Banco de Espana for ES). Present only on a match — absence is not a negative. INFORMATIONAL ONLY: it never changes v…
pra_authorisationobject
processing_msnumber
psd_registrationobject
risk_indicatorsobject
sepaobject
validbooleanyes

No examples provided.

validate_payment_reference ~710

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…

NameTypeReqDescription
ibanstringOptional creditor IBAN — supply it to get the pairing verdict
referencestringyesThe reference as printed; spaces, slashes and the +++…+++ wrapper are stripped
reference_typestringOptional hint: rf | scor | qrr | ogm | vcs | viitenumero | kid | ocr
NameTypeReqDescription
also_valid_asobjectThe second reading of an ambiguous string, with its own verdict.
as_ofstringYYYY-MM of that document.
check_digit_expectedstringA STRING, so a two-digit value beginning with zero survives (OGM remainder 3 is "03", remainder 0 is "97").
notestringyesWhat was checked, and what was not.
pairingstringPresent only when an iban was supplied: ok | qrr_requires_qr_iban | scor_forbidden_with_qr_iban | not_applicable
pairing_as_ofstring
pairing_sourcestringThe document publishing the pairing rule — a DIFFERENT one from source.
referencestringyesNormalized: uppercase, separators removed.
schemestring|nullyesrf | qrr | ogm | viitenumero | kid | ocr, or null when nothing matched.
sourcestring|nullyesThe document publishing the rule. Null only when no scheme matched. Relay it.
statusstringyeschecked | unverifiable_without_creditor_config | unrecognised
validboolean|nullyesnull means the scheme was recognised and cannot be checked without the creditor bank configuration. Never report null as false.

No examples provided.

Common questions

What is the io.github.cammac-creator/ibanforge MCP server?

io.github.cammac-creator/ibanforge is an MCP server listed in the public MCP registry as io.github.cammac-creator/ibanforge. Pre-payout IBAN screening for AI agents: validation, sanctions, Swiss clearing, risk scoring. This page covers its hosted endpoint (https://api.ibanforge.com/mcp).

Is the io.github.cammac-creator/ibanforge MCP server safe to use?

io.github.cammac-creator/ibanforge scores 80 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.cammac-creator/ibanforge MCP server expose?

io.github.cammac-creator/ibanforge exposes 11 tools: validate_iban, batch_validate_iban, lookup_bic, check_compliance, validate_payment_reference, and 6 more. Their descriptions and schemas cost roughly 4,574 tokens of context every time the server is loaded.

Does the io.github.cammac-creator/ibanforge MCP server require authentication?

No. We connected to io.github.cammac-creator/ibanforge without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the io.github.cammac-creator/ibanforge MCP server still maintained?

io.github.cammac-creator/ibanforge is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.