Skip to main content
Glama

Server Details

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

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
cammac-creator/ibanforge
GitHub Stars
3
Server Listing
ibanforge

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.6/5 across 5 of 5 tools scored.

Server CoherenceA
Disambiguation4/5

Most tools are clearly distinct: batch vs single validation, BIC lookup, Swiss clearing lookup. However, validate_iban already returns risk indicators and SEPA/VoP data, which overlaps with check_compliance's deeper compliance checks. The descriptions adequately clarify when to use each, but there is potential for confusion.

Naming Consistency5/5

All tools follow a verb_noun pattern in snake_case (validate_iban, lookup_bic, lookup_ch_clearing, check_compliance). batch_validate_iban adds a descriptive prefix but still adheres to the same verb-first convention. The naming is highly predictable.

Tool Count5/5

Five tools is well-scoped for an IBAN-focused server. Each tool serves a distinct purpose (single/batch validation, BIC lookup, Swiss clearing, compliance check) without redundancy or bloat. The count is within the ideal range.

Completeness5/5

The tool surface covers the full lifecycle of IBAN handling: validation (single and batch), enrichment (BIC, Swiss clearing), and pre-flight compliance. There are no obvious gaps for the stated purpose; the server even includes edge-case data like CH/LI specific details.

Available Tools

5 tools
batch_validate_ibanBatch Validate IBANsA
Read-onlyIdempotent
Inspect

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 }.

ParametersJSON Schema
NameRequiredDescriptionDefault
ibansYesArray of IBANs (1-100)

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYesNumber of IBANs processed.
resultsYesOne result per input IBAN, in the same order. Same shape as validate_iban.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds valuable context beyond annotations: the batch limit of 100, cost per IBAN, and the return shape including count and valid_count. It does not cover partial failure behavior, but the references to 'same shape as validate_iban' imply per-IBAN validity results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear labels ('USE WHEN:', 'RETURNS:'). Every sentence serves a purpose: stating the operation, cost benefit, use cases, and return format. It is concise despite covering several aspects, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one parameter) and benefits from an output schema (marked as present). The description explains the return shape explicitly (results array, count, valid_count) and references the sibling validate_iban for shape consistency. Combined with schema and annotations, the agent has all necessary information to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (the only parameter 'ibans' is fully described as 'Array of IBANs (1-100)' in the schema). The description repeats this constraint without adding new meaning or usage details beyond what the schema provides. The minimum viable baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Validate up to 100 IBANs in a single call' with a specific verb, resource, and scope. It distinguishes from sibling tool validate_iban by highlighting the batch capability and cost efficiency.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides 'USE WHEN' scenarios, listing specific cases like pasting a list, cleaning CSV/spreadsheets, deduping, or triaging payout lists. It also gives a clear threshold ('more than 2-3 times in a row') when to prefer batch over single validation, and implicitly indicates single IBANs should use validate_iban.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_complianceCompliance CheckA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
ibanYesIBAN to check

Output Schema

ParametersJSON Schema
NameRequiredDescription
bicNo
ibanYes
metaYes
sepaNo
errorNo
validYes
issuerNo
countryNo
cost_usdcYes
complianceYes
next_stepsNoOrdered 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 advice is auditable. Empty for an IBAN that failed validation.
error_detailNo
bank_code_checkNo
risk_indicatorsNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent, so the description's job is to add context. It clearly states the informational-only nature, the exact checks performed (OFAC, FATF, SEPA Instant, VoP), and the return structure including risk_score semantics and flags. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections (purpose, USE WHEN, NOT, CHECKS, RETURNS). Front-loaded with the main purpose. Every sentence adds value, and the length is justified by the tool's complexity. No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single parameter, high schema coverage, safety annotations, and presence of an output schema, the description is comprehensive. It covers usage scenarios, limitations, exact checks, and return values. Even without the output schema, the description provides a detailed preview of the response object.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with 'IBAN to check', so the baseline is 3. The description does not add additional parameter meaning or format details; it only reinforces that the IBAN is the subject of the compliance check. No new information beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'Run a full pre-flight compliance check on an IBAN'. Clearly distinguishes from siblings by focusing on compliance (sanctions, reachability, VoP) rather than plain validation or lookup. Includes the payment context and use cases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'USE WHEN' section lists concrete scenarios (about to send payment, asks about IBAN safety, sanctions screening, SEPA Instant success, risk score). Gives an explicit exclusion: 'NOT A REGULATED AML/CFT PRODUCT' and names alternative tools (Refinitiv, Acuris, ComplyAdvantage).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_bicLookup BIC/SWIFTA
Read-onlyIdempotent
Inspect

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 SWIFT directory, Bundesbank, SIX, NBP, EBA Step2 SCT), refreshed monthly.

ParametersJSON Schema
NameRequiredDescriptionDefault
bicYesBIC/SWIFT code (8 or 11 chars)

Output Schema

ParametersJSON Schema
NameRequiredDescription
bicYesEcho of the input, normalized to uppercase.
leiNoLegal Entity Identifier (ISO 17442) if available.
bic8No8-char form (institution-level).
cityNo
bic11No11-char form including branch.
errorNo
foundNo
validNoSet when the BIC failed format validation.
countryNoSame shape as REST GET /v1/bic/:code. name falls back to the country code when the row carries no name.
lei_statusNo
branch_codeNo
branch_infoNo
institutionNoBank legal name.
is_test_bicNo
country_codeNoDEPRECATED since 1.4.0, removed no earlier than 2027-01-01. Use country.code.
country_nameNoDEPRECATED since 1.4.0, removed no earlier than 2027-01-01. Use country.name, which falls back to the code rather than to null.
valid_formatNo
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds behavioral context beyond these: it notes that fields are returned 'where available', discloses the data sources and refresh frequency ('121,000+ BIC entries... refreshed monthly'), and implies completeness limits. This adds value without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is slightly longer than minimal but well-structured with labeled sections (USE WHEN, DO NOT USE, BACKED BY). Each part contributes useful context: purpose, usage boundaries, and data reliability. It is front-loaded and not verbose, earning a high but not perfect score due to the data-source background not being strictly necessary for tool invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple one-parameter schema, the presence of an output schema, and comprehensive annotations, the description covers all needed aspects: main purpose, when to use, when not to use with an alternative, data coverage, and refresh cadence. No significant gaps remain for an agent to correctly select and invoke this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (one parameter with a description). The description adds semantic value by specifying the allowed format '8 or 11 chars, alphanumeric' and providing concrete examples ('UBSWCHZH80A', 'DEUTDEFF'). This helps the agent validate input beyond the schema's generic length statement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Resolve' and the resource 'BIC/SWIFT code', listing the specific output fields (bank name, country, city, LEI, address). It explicitly distinguishes itself from siblings by stating 'DO NOT USE for IBAN inputs — call validate_iban instead', and the context of IBAN vs BIC differentiates it from validate_iban.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit 'USE WHEN' conditions ('user already has a BIC/SWIFT... asks which bank it belongs to, where the bank is, or its LEI') and a clear exclusion with a named alternative ('DO NOT USE for IBAN inputs — call validate_iban instead'). This goes beyond implied usage and directly guides the agent on when to select this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_ch_clearingSwiss Clearing LookupA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
iidYesSwiss IID (1-5 digit number)

Output Schema

ParametersJSON Schema
NameRequiredDescription
bicNoBIC if mapped.
iidNoNormalized 5-digit BC-Nummer.
noteNo
errorNo
foundNo
qr_iidNoQR-bill enabled IID.
addressNo
messageNo
sic_iidNo
valid_onNo
cost_usdcNo
institutionNo
redirected_fromNo
payment_servicesNo
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context beyond these: data source ('SIX BankMaster'), refresh cadence ('refreshed monthly'), coverage ('1,100+ entries'), and the return structure. However, it does not disclose error behaviors for invalid IIDs or rate limits, but the existing annotation coverage lowers the bar.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clearly labeled sections (USE WHEN, data claims, RETURNS, scope). It is front-loaded with the core purpose and uses the space efficiently. The promotional phrase 'THE DEEPEST SWISS CLEARING DATA IN ANY PUBLIC API' is somewhat unnecessary but not distracting. Overall, every section earns its place for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter lookup tool with an output schema, the description is exceptionally complete. It lays out the exact return fields (institution, address, bic, payment_services, sic_iid, qr_iid, valid_on), specifies the data source and refresh cycle, and enumerates the use cases. Nothing essential is missing for an agent to decide when and how to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema describes the only parameter as 'Swiss IID (1-5 digit number),' which covers 100% of the schema. The description adds the synonym 'BC-Nummer / IID,' reiterates the digit range, and specifies that it applies only to CH and LI institutions, giving additional meaning beyond the bare schema definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Resolve a Swiss BC-Nummer / IID (1 to 5 digits) into the underlying institution.' It clearly differentiates from sibling tools like lookup_bic by emphasizing Swiss-specific data and payment-rail participation, and the USE WHEN section further clarifies its niche.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes an explicit 'USE WHEN' list covering multiple concrete scenarios (e.g., user mentions BC-Nummer, pastes a CH/LI IBAN clearing code, asks about Swiss instant transfers, QR-IID resolution). It also provides a when-not via 'Only relevant for CH and LI accounts.' Although it doesn't name sibling alternatives directly, the scope and triggers are explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_ibanValidate IBANA
Read-onlyIdempotent
Inspect

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, name }, sepa { member, schemes, vop_required, vop_participant — is the resolved bank listed as ready in the EPC VoP register }, risk_indicators { issuer_type (null when no institution resolved), country_risk, test_bic, sepa_reachable, sepa_reachable_scope, 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. IMPORTANT — bic: null does not mean the bank code is wrong. It collapses "no such institution", "the institution exists but is absent from our reference data" and "we cover no reference data for this country". Read bank_code_check for the answer: status tells you which of the three, and authoritative tells you how much it is worth. Only where authoritative is true (today CH and LI against the SIX BankMaster, and DE against the Bundesbank Bankleitzahlendatei) does not_in_register mean the bank code is not allocated; everywhere else treat it as UNAVAILABLE and let the downstream name check decide. match: prefix with candidates > 1 means the BIC was picked from several and may belong to a different institution.

ParametersJSON Schema
NameRequiredDescriptionDefault
ibanYesIBAN to validate (spaces/hyphens stripped automatically)

Output Schema

ParametersJSON Schema
NameRequiredDescription
bicNoResolved BIC/SWIFT when BBAN→BIC mapping exists.
bbanNo
ibanYesNormalized IBAN (uppercase, no spaces).
sepaNo
errorNo
validYes
issuerNo
countryNo
clearingNoSwiss clearing data when country is CH or LI.
cost_usdcYes
formattedNoIBAN with 4-char groups for display.
next_stepsNoOrdered 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 advice is auditable. Empty for an IBAN that failed validation.
check_digitsNo
error_detailNo
processing_msNo
bank_code_checkNo
risk_indicatorsNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, but the description goes far beyond with rich behavioral context: it explains the meaning of null BIC (collapsing multiple cases), the authoritative vs. non-authoritative bank code checks, the match prefix ambiguity, and the limit that it does not confirm account ownership or existence. This provides significant value beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with sections (USE WHEN, PREFER OVER, RETURNS, LIMITS, IMPORTANT) and front-loaded with purpose and usage. Every paragraph adds value, though some sections (especially the IMPORTANT note on null BIC) could be trimmed without losing critical information. Slightly verbose but organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (validation, enrichment, SEPA, compliance, risk indicators), the description covers all major aspects: return fields, edge cases (null BIC, not_in_register semantics), limitations, and disambiguation of match. The existence of an output schema and the detailed RETURNS list make this description fully sufficient for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter 'iban', and the schema already describes that spaces/hyphens are stripped automatically. The description does not add additional parameter-specific meaning beyond examples in the USE WHEN list, so it relies on the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear, specific statement: 'Verify whether a European IBAN is valid AND enrich it with bank, compliance and routing data.' It goes beyond a tautology and distinguishes the tool from siblings like lookup_bic (which likely only resolves BIC) and check_compliance (which may focus on compliance checks) by combining validation and enrichment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides an explicit 'USE WHEN' list covering many scenarios, and it contrasts with local mod-97 validation, explaining why this tool is preferred. However, it does not mention sibling tools like batch_validate_iban or lookup_bic as alternatives, so an agent might not know when to choose those instead (e.g., for batch processing).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.