banking-intelligence
Server Details
Cross-border payment & banking intelligence for AI agents: SWIFT/BIC, IBAN, sanctions, FX, tracking.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
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.
Tool Definition Quality
Average 4.5/5 across 34 of 34 tools scored. Lowest: 3.8/5.
Tools generally have clear distinct purposes, but there is some overlap between date-related and FX tools (e.g., bank_holidays, is_business_day_check, value_date) and between compliance screening tools (sanctions_screen, export_controls_screen). However, detailed descriptions effectively disambiguate them.
All tool names follow a consistent snake_case pattern with descriptive verbs and nouns (e.g., bank_holidays, fx_rate, sanctions_screen). No mixing of conventions, and names clearly indicate the tool's function.
With 34 tools, the server is on the high side, covering many banking intelligence subdomains. While each tool serves a distinct purpose, the breadth feels slightly over-scoped, potentially overwhelming for agents.
The tool surface covers key intelligence areas: payment tracking, compliance, FX, SSI, and country rules. Minor gaps exist (e.g., no historical payment data, no batch operations), but the set is sufficient for most investigative workflows.
Available Tools
34 toolsbank_holidaysAInspect
Get bank/public holidays for a country with payment impact analysis.
Returns all public holidays plus a 'payment_impact' section that shows:
Whether today is a business day or holiday in this country
Upcoming holidays in the next 14 days
Recent holidays in the last 14 days — for diagnosing a payment that is ALREADY stuck ("in progress for N days", "sent X days ago"): subtract these (plus weekends) from the elapsed calendar time before judging whether the delay is abnormal. An empty list affirmatively means no recent holiday explains the delay — do not invent one from training data.
Next business day and how many consecutive non-business days remain This context helps determine if holidays are causing payment delays.
Args: country_code: ISO 3166-1 alpha-2 code (e.g., "US", "DE", "GB") year: Year (default: current year). Range: 2020-2030.
Examples: bank_holidays("US") bank_holidays("DE", 2026) bank_holidays("GB", 2025)
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| country_code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the tool's output structure, including payment_impact sections and diagnostic use. No contradictions or hidden behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured: main purpose, bullet points for return sections, args, and examples. Every sentence adds value; no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description explains return values thoroughly and provides usage context for payment delay diagnosis. Parameters are fully explained, making the tool fully understandable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description explains country_code as ISO 3166-1 alpha-2 with examples, and year as optional with default current year and range 2020-2030, adding crucial meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets bank/public holidays with payment impact analysis, specifying the return sections. It is specific and distinct from sibling tools like is_business_day_check due to its comprehensive payment delay analysis focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit context for diagnosing stuck payments, with step-by-step guidance on subtracting holidays and weekends. Lacks explicit mention of when not to use or alternatives, but the diagnostic instructions are strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
banks_using_correspondentAInspect
Reverse SSI lookup — find banks that use a given correspondent for a currency.
Given a correspondent BIC, currency, and origin country, returns the banks in that country that have a declared nostro at the correspondent for that currency. Inverse of ssi_lookup.
Returns only swift + name per bank — to retrieve the account number, intermediary chain, or other SSI details for a specific bank from the result list, call ssi_lookup(bank_swift, currency) on it.
Country and currency are required (not optional) — both bound the result set and the query is rejected without them.
Requires an API key with an active PRO, VIP, or FI subscription. Tight per-account daily caps apply (5/day on PRO, 10/day on VIP/FI/trial).
Args: correspondent_swift: BIC of the correspondent bank (e.g. "IRVTUS3N"). currency: ISO 4217 (e.g. "USD"). country: ISO 3166-1 alpha-2 of the client banks (e.g. "AE"). name_prefix: Optional prefix on bank name (e.g. "AL"). page: 1–4. Defaults to 1. api_key: Your Ohmyfin API key (prod-...). Can also be passed via KEY header or Authorization: Bearer header.
Examples: banks_using_correspondent("IRVTUS3N", "USD", "AE") banks_using_correspondent("CITIUS33", "USD", "SA", name_prefix="AL")
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| api_key | No | ||
| country | Yes | ||
| currency | Yes | ||
| name_prefix | No | ||
| correspondent_swift | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavior: it returns only swift and name per bank, and clarifies that to get more details one should call ssi_lookup. It also states that the query is rejected without country and currency, and mentions API key and daily cap constraints. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a one-liner, expanded explanation, args list, and examples. While informative, it could be slightly more concise by integrating some args info into the prose. However, it remains clear and organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (not shown), the description does not need to explain return values. It covers purpose, usage guidelines, parameters, examples, subscription, and caps, making it complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description compensates by providing a detailed 'Args' section explaining each parameter, including format hints (e.g., ISO codes) and examples. It also mentions that api_key can be passed via header, adding significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Reverse SSI lookup — find banks that use a given correspondent for a currency.' It specifies the inputs (correspondent BIC, currency, country) and outputs (banks with swift and name), and distinguishes itself from the sibling 'ssi_lookup' by noting it is the inverse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Given a correspondent BIC, currency, and origin country, returns the banks in that country that have a declared nostro at the correspondent for that currency.' It also advises when not to use it, directing users to call ssi_lookup for account numbers or intermediary details. Additionally, it notes that country and currency are required, and mentions subscription requirements and daily caps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bcc_get_balanceAInspect
Get balance and status for a specific IBAN.
Args: iban: The IBAN to query (e.g. KZ12345678901234567890).
Returns: {iban, type, status, dateOpened, currency, balance, availableFunds, blockedBalance}. Per-user: only works for a user with a provisioned BCC secret and an allow grant.
| Name | Required | Description | Default |
|---|---|---|---|
| iban | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses that the tool returns a specific set of fields and requires a secret and grant. It is a read operation, and the description is clear on inputs and outputs, though it could mention idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences plus a bullet list of return fields. No extraneous information; every part serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no nested objects, output schema exists), the description covers all essential aspects: purpose, parameter, return fields, and usage condition. It is fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It provides an example IBAN format (KZ12345678901234567890) which adds value, but does not describe full validation rules or acceptable formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get balance and status for a specific IBAN,' specifying both the action (get) and the resource (IBAN). This distinguishes it from siblings like bcc_list_accounts and bcc_get_statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a 'Per-user' note that only works with a provisioned BCC secret and allow grant, providing clear context on prerequisites. It implies usage when needing balance/status, but does not explicitly exclude alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bcc_get_statementAInspect
Get the transaction statement for an IBAN over a date range.
Args: iban: IBAN to query (e.g. KZ12345678901234567890). start_date: Start date in dd-mm-yyyy format (e.g. 01-05-2025). end_date: End date in dd-mm-yyyy format (e.g. 31-05-2025). currency: Optional ISO currency filter (e.g. KZT or USD). Leave empty to retrieve all currencies.
Returns: statement v2 structure — {inBalance, outBalance, transactions[]}. Per-user: only works for a user with a provisioned BCC secret and an allow grant.
| Name | Required | Description | Default |
|---|---|---|---|
| iban | Yes | ||
| currency | No | ||
| end_date | Yes | ||
| start_date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description discloses auth requirement (BCC secret and allow grant) and return structure (statement v2 with inBalance, outBalance, transactions[]). Not covered: pagination, ordering, or error handling, but still fairly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one-line purpose, bullet-point args, return structure, and auth note. No redundant information, well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, parameters, return type, and prerequisites. Lacks edge cases (e.g., empty result) but still adequate for a tool with 4 params and output schema mentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description fully compensates by documenting all 4 parameters with formats and examples: IBAN format, date format (dd-mm-yyyy), currency as optional filter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb ('Get'), resource ('transaction statement'), and scope ('for an IBAN over a date range'). It distinguishes from siblings like bcc_get_balance (balance only) and bcc_list_accounts (list accounts).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: use when you need a transaction statement for an IBAN over a date range. Includes a prerequisite condition (must have BCC secret and allow grant), but no explicit when-not or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bcc_list_accountsAInspect
List all accounts accessible via the customer's BCC API credentials.
Returns a list of objects: {iban, description}. Per-user: only works for a user with a provisioned BCC secret and an allow grant.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden. It discloses that the tool is read-only (list all accounts) and requires specific user credentials. It does not mention side effects because none exist. Minor missing detail: whether pagination or rate limits apply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero wasted words. The first sentence clearly states the primary function; the second adds return structure and usage constraint. Perfectly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and an output schema, the description covers all necessary context: what it does, what it returns, and prerequisites. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist (input schema empty), so the description does not need to add parameter meaning. It correctly implies the tool requires no further input beyond credentials.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all accounts accessible via BCC API credentials and specifies the return structure {iban, description}. It distinguishes from sibling tools like bcc_get_balance and bcc_get_statement by focusing on enumeration rather than balance or transaction details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the prerequisite (provisioned BCC secret and allow grant) but does not explicitly guide when to use this tool versus alternatives. No 'when-not' or sibling differentiation in usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
company_registriesAInspect
EXPERIMENTAL — List available company registries and supported jurisdictions.
Returns the list of company registries that can be searched, along with the jurisdiction codes you can use in company_search_person and company_search_company.
No API key required.
Examples: company_registries()
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the experimental nature, the fact that no API key is required, and that it returns a list of registries and jurisdiction codes. It does not mention any side effects or limitations, but for a read-only list tool, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using three short sentences and an example. It front-loads the experimental flag and the core purpose, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has zero parameters and an output schema (assumed present), the description is complete. It explains the output (list of registries and jurisdiction codes) and how to use it with related tools. No additional information is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema coverage is 100%. The description does not need to add parameter semantics beyond what the schema provides. A score of 4 is appropriate per the baseline for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool lists available company registries and supported jurisdictions. It uses specific verbs ('List') and resources ('company registries', 'jurisdiction codes'), and distinguishes from sibling tools like company_search_company and company_search_person by noting that the jurisdiction codes from this tool are used in those searches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool—before searching, to obtain jurisdiction codes. It mentions that no API key is required and provides an example call. However, it doesn't explicitly state not to use it under certain conditions or provide direct alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
company_search_companyAInspect
EXPERIMENTAL — Search company registries for a company with its officers and shareholders.
Find company registrations across worldwide registries, including directors, officers, and beneficial owners (PSC/shareholders). Every entity found is automatically screened against sanctions lists.
You MUST specify at least one jurisdiction. "ALL" is not supported. Available jurisdictions: UK, NO, FR, DE, CH, NL, AT, BE, DK, EE, LV, FI, SE, IS, IE, CA, AU, NZ, SG, JP, KR, IN, AM.
Args: name: Company name to search for. jurisdictions: Country codes to search (required, e.g. ["UK"]). "ALL" is not supported — specify individual countries. include_sanctions_check: Auto-screen results against sanctions DB (default: true). include_officers: Include directors and officers (default: true). include_shareholders: Include PSC/beneficial owners (default: true). include_only_active: Filter to active companies only (default: false). api_key: Your Ohmyfin API key (prod-...). Can also be passed via KEY header or Authorization: Bearer header.
Examples: company_search_company("Equinor", jurisdictions=["NO"]) company_search_company("Acme Corp", jurisdictions=["UK", "DE"], include_only_active=True)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| api_key | No | ||
| jurisdictions | Yes | ||
| include_officers | No | ||
| include_only_active | No | ||
| include_shareholders | No | ||
| include_sanctions_check | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses experimental status, sanctions screening, and automatic inclusion of officers/shareholders by default. Does not mention rate limits or error handling, but output schema likely covers return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Structured with a first-line summary, then paragraph, bullet list of args, and examples. Front-loaded with purpose and essential constraint. Slightly lengthy but every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, parameters, constraints, and examples. Given the presence of an output schema, the description is sufficiently complete for agent usage. Missing minor details like result limits but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates fully: explains all 7 parameters, their defaults, and constraints (e.g., 'jurisdictions' must be individual country codes). Adds valuable context beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Search company registries for a company with its officers and shareholders', specifying the verb, resource, and scope. Differentiates from siblings like 'company_search_person' by focusing on companies. Includes additional context about sanctions screening.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the requirement for at least one jurisdiction and that 'ALL' is not supported. Lists available jurisdictions and provides examples. Does not explicitly mention when to use alternatives, but the constraint is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
company_search_personAInspect
EXPERIMENTAL — Search company registries for a person's directorships, officer roles, and shareholdings.
Searches worldwide company registries to find where a person holds director, officer, or shareholder positions. Every person and company found is automatically screened against sanctions lists.
You MUST specify at least one jurisdiction. "ALL" is not supported. Available jurisdictions: UK, NO, FR, DE, CH, NL, AT, BE, DK, EE, LV, FI, SE, IS, IE, CA, AU, NZ, SG, JP, KR, IN, AM.
Args: name: Person name to search for. jurisdictions: Country codes to search (required, e.g. ["UK", "NO"]). "ALL" is not supported — specify individual countries. include_sanctions_check: Auto-screen results against sanctions DB (default: true). include_inactive_roles: Include resigned/ceased roles (default: true). api_key: Your Ohmyfin API key (prod-...). Can also be passed via KEY header or Authorization: Bearer header.
Examples: company_search_person("John Smith", jurisdictions=["UK", "NO"]) company_search_person("Jane Doe", jurisdictions=["DE"])
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| api_key | No | ||
| jurisdictions | Yes | ||
| include_inactive_roles | No | ||
| include_sanctions_check | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully covers behavioral aspects: it mentions automatic sanctions screening, experimental status, and parameter defaults. It does not discuss pagination, rate limits, or response format, but output schema exists for that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a bolded intro, explanatory paragraph, bullet-point Args, and examples. Every sentence adds value, and it is front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters (2 required) and an output schema, the description covers all key behavioral aspects and parameter details. It could mention result ordering or limits, but overall it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides detailed parameter explanations beyond the schema: name, jurisdictions (with example values), include_sanctions_check, include_inactive_roles, and api_key. It compensates for 0% schema coverage effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'search' and clearly identifies the resource: company registries for a person's directorships, officer roles, and shareholdings. It distinguishes from sibling 'company_search_company' by focusing on persons.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the jurisdiction requirement, lists available jurisdictions, and notes that 'ALL' is not supported. Examples clarify typical usage. However, it does not explicitly contrast with sibling tools or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
company_search_resultAInspect
EXPERIMENTAL — Retrieve cached company search results by search ID.
Every company_search_person and company_search_company call returns a search_id. Use this tool to retrieve those results again without re-running the search.
Args: search_id: The search_id from a previous company search response. api_key: Your Ohmyfin API key (prod-...). Can also be passed via KEY header or Authorization: Bearer header.
Examples: company_search_result("abc123-def456")
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | ||
| search_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It highlights 'EXPERIMENTAL' status, non-mutating nature (cached), and parameter alternatives. Could mention search_id expiration or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with sections, concise, and every sentence adds value. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, description doesn't need to detail returns. It covers purpose, usage, and parameters adequately for a retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but description adds clear meanings for both parameters beyond schema types, including optional api_key alternatives.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves cached company search results by search ID, distinguishing it from sibling tools that perform the initial search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains to use after a company_search_person/company_search_company call and that it avoids re-running. Lacks explicit when-not-to-use, but context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
country_banking_rulesAInspect
Get banking rules and requirements for a country.
Returns IBAN requirements, SEPA membership, FATF listing status, national currency, account format specifications, and country-specific payment requirements (mandatory codes like KNP for Kazakhstan, Purpose of Payment for UAE, etc.).
Use this to check country-specific STP rules that could cause payment delays, repairs, or rejections (e.g., missing purpose codes, regulatory fields).
If a country requires special payment codes, the response includes a payment_requirements block with field descriptions and categories. Use country_payment_codes to look up specific code values.
Args: country_code: ISO 3166-1 alpha-2 code (e.g., "DE", "US", "KZ")
Examples: country_banking_rules("DE") country_banking_rules("KZ") # includes KNP requirement info country_banking_rules("AE") # includes Purpose of Payment info
| Name | Required | Description | Default |
|---|---|---|---|
| country_code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with no annotations provided, the description fully discloses the tool's behavior: it returns country-specific banking rules, mentions the payment_requirements block for special codes, and implies idempotent read-only behavior through 'Get' verb and return type listing. No contradictions or hidden effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a concise summary, context for use, parameter details, and examples. Each sentence adds value without redundancy. At 120 words, it is efficient and front-loaded with critical information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, output schema exists), the description covers all necessary aspects: purpose, usage, parameter format, examples, and linkage to sibling tool. No gaps remain for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only a parameter name 'country_code' without description (0% coverage). The description compensates fully by specifying 'ISO 3166-1 alpha-2 code' and providing multiple examples ('DE', 'US', 'KZ', 'AE'), which adds significant semantic meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get banking rules and requirements for a country' with a specific list of return types (IBAN requirements, SEPA membership, etc.). It distinguishes itself from sibling tools like country_payment_codes by explaining the relationship and appropriate use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use: 'check country-specific STP rules that could cause payment delays, repairs, or rejections'. It also provides guidance on when to use a sibling tool (country_payment_codes) for specific code values, and includes examples of usage for different countries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
country_export_controlsAInspect
Look up export control restrictions for a specific country.
Returns embargo status, sanctioned programs, control reasons, and restriction details across jurisdictions (US EAR, EU, UN, etc.) for the given country. Response also includes a payment_jurisdiction_note explaining when each listed restriction actually applies to a payment (US controls only bind when there's a US nexus, etc.).
IMPORTANT: Each jurisdiction's controls only bind a payment when the payment has a nexus to that jurisdiction. Use the jurisdiction filter when you know the payment's actual jurisdictional touchpoints (sender country, clearing currency, intermediary banks). For a CHF/EUR payment with no US bank in the chain, US export controls are informational only — do NOT cite them as compliance blockers without confirming a US nexus.
Args: country_code: ISO 3166-1 alpha-2 country code (e.g. "RU", "CN", "DE"). jurisdiction: Optional filter by jurisdiction (e.g. "US", "EU"). When omitted, returns restrictions from all jurisdictions.
Examples: country_export_controls("RU") # Russia — heavily embargoed country_export_controls("CN") # China — partial restrictions country_export_controls("DE") # Germany — minimal controls country_export_controls("RU", "US") # Russia, US jurisdiction only
Use case: 'What export restrictions apply to shipping to Russia?'
| Name | Required | Description | Default |
|---|---|---|---|
| country_code | Yes | ||
| jurisdiction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns embargo status, sanctioned programs, control reasons, and a payment_jurisdiction_note. It also warns about the binding nature of controls and the importance of nexus, which is crucial for correct use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections for purpose, important notes, arguments, examples, and use case. While it is somewhat lengthy, every sentence adds value, and the structure aids readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple jurisdictions, return fields), the description is thorough. It explains the payment_jurisdiction_note and provides examples. An output schema exists, so detailed return format documentation is unnecessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by providing clear parameter explanations: country_code is an ISO 3166-1 alpha-2 code with examples, and jurisdiction is an optional filter with examples. The examples show typical usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Look up' with the resource 'export control restrictions for a specific country', clearly stating the tool's purpose. It distinguishes from sibling tools like sanctions_screen and country_banking_rules by focusing on export controls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the jurisdiction filter and includes an important warning about jurisdiction nexus. It gives a specific use case but does not explicitly mention when to use an alternative tool, though the context makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
country_payment_codesAInspect
Look up country-specific payment codes (KNP, purpose codes, etc.).
Use country_banking_rules first to see which code types a country requires (in the payment_requirements block), then use this tool to find the right code value.
Args: country_code: ISO 3166-1 alpha-2 (e.g., "KZ", "AE") code_type: Code table to search (from payment_requirements required_fields[].code_type, e.g., "knp", "purpose_code") search: Optional keyword filter (e.g., "transport", "trade", "insurance")
Examples: country_payment_codes("KZ", "knp", "transport") country_payment_codes("KZ", "knp", "insurance") country_payment_codes("AE", "purpose_code", "trade") country_payment_codes("KZ", "knp") # all codes (large response)
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | ||
| code_type | Yes | ||
| country_code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the tool as performing a lookup with optional search, and notes that omitting the search parameter returns all codes (large response). This sufficiently conveys the operation and potential response size, though it could mention that it is a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a one-line summary, a usage guideline sentence, parameter definitions, and examples. Every sentence adds value, and the structure is front-loaded with the most important information first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters, links to sibling workflow, output schema exists), the description is complete. It covers input semantics, usage order, and example invocations, leaving no ambiguity for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters are described in the Args block with type, source, and usage details. 'code_type' is explained as coming from payment_requirements fields, and 'search' is explained as an optional keyword filter with examples. Since the schema has no descriptions (0% coverage), the description compensates fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Look up country-specific payment codes (KNP, purpose codes, etc.)'. This is a specific verb+resource, and by referencing the sibling tool 'country_banking_rules' as a preceding step, it distinguishes the tool's role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises using 'country_banking_rules' first to determine required code types, then using this tool to find code values. This provides a clear when-to-use context and links to a sibling tool, guiding the agent on the correct workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eccn_lookupAInspect
Look up an Export Control Classification Number (ECCN).
Pure reference tool — returns classification details, controlled jurisdictions, and license requirements for the given ECCN.
ECCNs are alphanumeric codes (e.g. "5A001") used under export control regimes (US EAR, EU Dual-Use Regulation, Wassenaar Arrangement) to classify items that may require an export license.
Args: eccn: The ECCN to look up (e.g. "5A001", "3A001", "1C351").
Examples: eccn_lookup("5A001") # Telecommunications security equipment eccn_lookup("3A001") # Electronic components eccn_lookup("1C351") # Human pathogens, zoonoses, toxins
| Name | Required | Description | Default |
|---|---|---|---|
| eccn | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the tool as a 'Pure reference tool,' implying read-only behavior. It specifies the return values (classification details, controlled jurisdictions, license requirements). However, it does not explicitly state that it is read-only or idempotent, nor does it mention error handling or data freshness. Still, the behavioral intent is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear action statement, a brief explanation of ECCN, parameter documentation, and examples. It is front-loaded with the purpose. It could be slightly more concise by removing the ECCN definition or integrating it more tightly, but it remains clear and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (single required parameter, reference function), the description provides complete context. It explains the domain (export control regimes), the parameter, and the return value categories. Since an output schema exists, detailed return format is not required. Examples complete the picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 0%, meaning the input schema has no description for the parameter. The description thoroughly explains the 'eccn' parameter, including its meaning, format (alphanumeric codes), and examples ('5A001', '3A001', '1C351'). This significantly adds value beyond the schema's simple type definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Look up an Export Control Classification Number (ECCN)' with a specific verb and resource. It explains what ECCN is and what the tool returns (classification details, controlled jurisdictions, license requirements). The examples further clarify the purpose, and it distinguishes itself from sibling tools like country_export_controls by focusing on classification numbers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description calls it a 'Pure reference tool' which implies when to use it, but it does not explicitly state when not to use it or provide alternatives. Given sibling tools like country_export_controls and sanctions_screen, some guidance on when to use this vs. those would improve clarity. The usage context is clear but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_controls_screenAInspect
Screen goods for export-control restrictions to a destination country.
Combines the goods classification with the destination's restriction status and returns whether a license is required, the risk level, applicable license policies (e.g. presumption of denial), control reasons (NS, MT, NP, CB, AT), and proliferation/dual-use flags. Identify the goods by ANY of: ECCN, HS code, or a free-text description (English or Russian).
IMPORTANT — jurisdiction nexus: each jurisdiction's controls only bind a payment/shipment when there is a nexus to that jurisdiction (US EAR binds US persons, USD-clearing, and US-origin items; EU/UK/JP bind their persons, currencies, and origin). Use jurisdiction="ALL" for a comprehensive multi-jurisdiction view, or pick the one matching the actual touchpoints.
Args: destination_country: ISO 3166-1 alpha-2 destination code (e.g. "RU", "CN"). eccn: Optional Export Control Classification Number (e.g. "3A001"). hs_code: Optional Harmonized System code, 4-8 digits (e.g. "854231"). goods_description: Optional free-text goods description (EN or RU). jurisdiction: "US" (default), "EU", "UK", "JP", "ITAR", or "ALL".
Provide at least one of eccn / hs_code / goods_description.
Examples: export_controls_screen("RU", eccn="3A001") # electronics → Russia export_controls_screen("CN", eccn="3A090") # advanced computing → China export_controls_screen("IR", goods_description="industrial valves") export_controls_screen("RU", goods_description="drone", jurisdiction="ALL") export_controls_screen("DE", hs_code="854231") # → Germany (allied)
Use case: 'Can we ship integrated circuits to Russia?'
| Name | Required | Description | Default |
|---|---|---|---|
| eccn | No | ||
| hs_code | No | ||
| jurisdiction | No | US | |
| goods_description | No | ||
| destination_country | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It thoroughly explains what the tool returns (license required, risk level, policies, control reasons, flags) and highlights the critical jurisdiction nexus. It does not contradict any implicit assumptions about the tool's behavior. The description is transparent about the tool's read-only nature (screening) and the need for at least one goods identifier.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat lengthy but well-structured. It front-loads the core purpose, then explains key caveats (jurisdiction nexus), lists parameters, gives examples, and ends with a use case. Every sentence adds value, but it could be slightly more concise by condensing the examples. Overall, it is efficient and well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, no annotations, output schema exists), the description is remarkably complete. It covers all critical aspects: use case, parameter semantics, jurisdiction nuances, and return value summary. The existence of an output schema means the description doesn't need to detail every return field, but it still provides an overview. No gaps are apparent for an AI agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% coverage for parameter descriptions, so the description compensates fully. The 'Args' section provides meaningful details for each parameter: format (e.g., ISO 3166-1 alpha-2 for destination_country, 4-8 digits for hs_code), optionality, default values, and even the requirement to provide at least one of eccn/hs_code/goods_description. It lists allowed jurisdiction values explicitly, adding value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Screen goods for export-control restrictions to a destination country.' It specifies the verb 'screen' and the resource 'goods for export-control restrictions.' It also distinguishes itself from siblings like eccn_lookup, goods_classify, and sanctions_screen by combining classification with restriction status and returning a comprehensive output including license policies and control reasons.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on when to use the tool and how to invoke it. It explains the jurisdiction nexus and offers examples for different scenarios. However, it does not explicitly contrast with sibling tools like country_export_controls, leaving some room for ambiguity. Still, the usage examples and the requirement to provide at least one goods identifier offer sufficient direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
federal_register_changesAInspect
Get recent US regulatory changes from BIS and OFAC.
Returns Federal Register publications including entity list updates, rule changes, country policy shifts, and new sanctions programs.
Args: agency: Filter by agency — "BIS" (Bureau of Industry and Security) or "OFAC" (Office of Foreign Assets Control). Omit for both. category: Filter by change category — "entity_list", "rule_change", "country_policy", or "sanctions". Omit for all categories. severity: Filter by severity — "critical", "high", "medium", or "low". Omit for all severity levels. days: Number of days to look back (1–365). Default: 30. limit: Maximum number of results to return. Default: 50.
Examples: federal_register_changes() # Last 30 days, all federal_register_changes(agency="OFAC", days=7) # OFAC changes this week federal_register_changes(category="entity_list", severity="critical")
Use case: 'Any new entity list additions affecting China?'
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| limit | No | ||
| agency | No | ||
| category | No | ||
| severity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It describes the output (Federal Register publications) and parameter ranges but does not mention potential errors, rate limits, or authorization requirements. The tool appears read-only, but that is not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-line summary, a clear argument list with indentation, multiple examples, and a relevant use case. Every sentence adds value, and the organization aids quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values need not be detailed. The description covers parameters, examples, and a use case. It lacks details on pagination, ordering, or error handling, which would be helpful for complete usage, but the current information is largely sufficient for a query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, but the description compensates fully by detailing each parameter (agency, category, severity, days, limit) with acceptable values, defaults, and meanings. This adds significant value beyond the schema's type and default definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool fetches recent US regulatory changes from BIS and OFAC, listing specific categories like entity list updates and rule changes. It includes examples and a use case, making the purpose immediately clear. No sibling tool appears to overlap directly, so differentiation is inherent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides examples and a concrete use case ('Any new entity list additions affecting China?'), which implies appropriate usage scenarios. However, it does not explicitly state when not to use this tool or mention alternatives like sanctions_screen or country_export_controls, so there is room for improvement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fx_rateAInspect
Get the latest ECB reference exchange rate for a currency pair.
Supports ~30 currencies. Non-EUR pairs are computed as cross-rates via EUR (e.g., USD/GBP = EUR/GBP / EUR/USD).
BOTH currencies are required. Always pass the exact pair you intend. There is no implicit default pair: a call that omits or mis-names a currency returns a "missing required argument" error rather than a silently-wrong rate. Never assume EUR/USD when the user asked about a different pair such as USD/VND.
Args: base: Base currency (ISO 4217, e.g., "USD") target: Target currency (ISO 4217, e.g., "VND")
Examples: fx_rate("EUR", "USD") fx_rate("GBP", "JPY") fx_rate("USD", "VND")
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | ||
| target | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description explains cross-rate computation, requirement for exact pair, and error behavior for missing arguments. This is sufficient transparency for a simple rate tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, well-structured with sections for description, args, and examples. Every sentence serves a purpose; no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description covers purpose, inputs, behavior, and examples comprehensively. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description adds value by explaining both parameters with ISO 4217 format and examples. Meaning well beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get the latest ECB reference exchange rate for a currency pair,' specifying verb and resource. It distinguishes from siblings like fx_rate_history by focusing on current rates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidelines: both currencies required, no implicit defaults, and warns about error behavior. Examples illustrate usage. Lacks explicit when-not-to-use but context from siblings implies historical/volatility tools for other needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fx_rate_historyAInspect
Get historical ECB exchange rates for a currency pair.
Returns daily rates for the specified period. ECB publishes rates on weekdays only (no weekends/holidays).
BOTH currencies are required. Always pass the exact pair you intend. There is no implicit EUR/USD default: an omitted or mis-named currency errors rather than returning the wrong pair's history.
Args: base: Base currency (ISO 4217, e.g., "EUR") target: Target currency (ISO 4217, e.g., "USD") days: Number of days of history (1-365, default 90)
Examples: fx_rate_history("EUR", "USD", 30) fx_rate_history("GBP", "CHF", 365)
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | ||
| days | No | ||
| target | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses ECB publishes only on weekdays (no weekends/holidays) and that errors occur for misnamed currencies. No annotations provided, so description carries burden. Missing rate limits or auth info, but for a read-only historical tool, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: short intro, behavioral notes, args in a list, and examples. Every sentence adds value with zero redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists (true), description not required to detail return values. Covers purpose, parameters, behavioral constraints, and usage guidance. Slight gap on error handling or rate limits, but overall sufficient for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage. The description lists all three parameters (base, target, days) with ISO 4217 format, defaults, and examples, adding significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get historical ECB exchange rates for a currency pair.' It specifies the data source (ECB) and action (get historical rates), distinguishing it from siblings like 'fx_rate' (presumably current rates) and others.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'BOTH currencies are required,' 'Always pass the exact pair you intend,' and warns of errors for misnamed currencies. Lacks explicit when-not-to-use vs alternatives, but the sibling list and implicit contrast are sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fx_timing_advisorAInspect
Get FX trading windows for FX execution timing and spread / rate optimization.
Returns market sessions and liquidity windows for a currency. Use this to understand:
Rate optimization (primary, reliable use): higher liquidity means tighter spreads and better rates. Execute during peak windows to minimize conversion costs.
Delay diagnosis (use with care): the FX market session is when a currency TRADES. It is NOT a guaranteed processing schedule for an inbound foreign-currency payment that the beneficiary bank converts on arrival. Conversion timing is beneficiary-bank-specific (some convert in real time during the session, others batch once or twice daily), so do NOT tell the user a payment is "held until the next session" and do not quote specific hold durations ("adds X hours", "overnight delay"); those are bank policy and are not in our data. For the binding delivery-side cutoff that gates the converted local-currency leg, call country_banking_rules(destination) and read local_clearing.systems. When a currency is restricted, this tool's own output carries an inbound_processing_note with the accurate framing to quote.
Pass a currency code to get its optimal window, or omit to get all market sessions and overlap windows.
Args: currency: ISO 4217 currency code (e.g., "EUR", "JPY"). Omit to get all sessions and overlaps.
Examples: fx_timing_advisor("EUR") fx_timing_advisor("JPY") fx_timing_advisor("INR") # Check INR conversion windows fx_timing_advisor()
| Name | Required | Description | Default |
|---|---|---|---|
| currency | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that output includes market sessions and liquidity windows, mentions inbound_processing_note for restricted currencies, and warns about misuse for delay diagnosis. However, it does not explicitly state read-only behavior or other side effects, but the informational nature is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Despite length, the description is well-structured with bullet points, clear sections, and front-loaded purpose. Every sentence adds value, and the formatting aids readability. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a timing advisory tool: it explains inputs, outputs (market sessions, liquidity windows, inbound_processing_note), use cases, and limitations. The output schema exists (not shown but noted), so low need to explain return values. Subtle misuse scenarios are addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single optional parameter currency is well-documented: passing a code gets optimal window, omitting gets all sessions/overlaps. Examples demonstrate usage. Schema has 0% description coverage, so the description fully compensates, adding meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get FX trading windows for FX execution timing and spread / rate optimization.' It specifies the output (market sessions and liquidity windows) and distinguishes from related siblings like fx_rate, fx_volatility, and country_banking_rules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly differentiates between primary use (rate optimization) and cautionary use (delay diagnosis), advises against quoting hold durations, and directs to alternative tools (country_banking_rules) for specific scenarios. It provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fx_volatilityAInspect
Get realized FX volatility for a currency pair.
Computes 30-day and 90-day annualized volatility from historical ECB reference rates (standard deviation of daily log returns, annualized by sqrt(252)). Returns a qualitative bucket: LOW (<5%), MEDIUM (5-15%), HIGH (15-25%), VERY_HIGH (>25%), PEGGED (currency peg — near-zero volatility, e.g., USD/AED, USD/HKD).
Also returns practical daily/weekly movement estimates and a settlement_risk_note explaining what the volatility means over a typical T+2 settlement period — use these to advise users on FX risk for their specific payment.
Args: base: Base currency (ISO 4217, e.g., "EUR") target: Target currency (ISO 4217, e.g., "TRY")
Examples: fx_volatility("EUR", "USD") fx_volatility("USD", "TRY")
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | ||
| target | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden. It details computation method (standard deviation of daily log returns, annualized by sqrt(252)), qualitative thresholds, and settlement risk note, providing comprehensive behavioral context without contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a summary, detailed computation, bucket definitions, and Args section. It is slightly verbose but every sentence adds value; could be tightened without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, return values are covered. The description explains qualitative buckets, movement estimates, and settlement note. It lacks mention of data recency or caching, but overall adequate for the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description specifies both parameters as ISO 4217 currency codes with examples (EUR, TRY). This adds meaning beyond the schema's type string and clarifies usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb+resource: 'Get realized FX volatility for a currency pair.' It distinguishes from sibling tools like fx_rate (current rate) and fx_rate_history (historic rates) by focusing on volatility computation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool computes (30/90-day annualized volatility) and outputs (qualitative bucket, movement estimates, settlement risk note). It does not explicitly state when not to use it or mention alternatives, but the context is clear for a financial analyst.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goods_classifyAInspect
Classify goods for export control from a description (or HS code).
Bilingual (English / Russian, auto-detected) goods classifier. Returns the best-matching HS code (with EN+RU descriptions), related ECCNs, control reasons (NS, MT, NP, CB, AT...), an export-control level (high/medium/low/ none), a confidence score, and alternative matches for review.
This is destination-agnostic — it identifies WHAT the goods are and whether they are controlled in principle. To get the license decision FOR A SPECIFIC destination, pass the result into export_controls_screen.
Args: description: Goods description, min 2 chars (e.g. "uranium centrifuge", "центрифуга для урана"). Required. hs_code: Optional known HS code (4 or 6 digits) for a direct lookup. language: Optional hint — "en" or "ru" (auto-detected if omitted).
Examples: goods_classify("uranium centrifuge") # → HS 840120, ECCN 0B001 goods_classify("центрифуга для обогащения урана") # Russian query, same result goods_classify("semiconductor manufacturing equipment") goods_classify("", hs_code="840120") # direct HS lookup
Use case: 'Is a semiconductor lithography machine export-controlled?'
| Name | Required | Description | Default |
|---|---|---|---|
| hs_code | No | ||
| language | No | ||
| description | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It explains it returns HS code, ECCNs, control reasons, confidence score, and alternatives. It mentions bilingual auto-detection and minimum 2 char requirement. It is clear about the non-destructive classification, though it could explicitly state it does not modify data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with examples and clear sections. It front-loads the purpose. Every sentence adds value, though it could be slightly more concise without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (not shown), so description need not explain return format in detail. It mentions key return values and covers complexity well. It provides adequate context given the sibling tool list and parameter count.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description compensates. It explains description (required, min 2 chars, examples), hs_code (optional for direct lookup), language (optional hint). This adds meaning beyond the schema, such as the minimum length and behavior of hs_code for direct lookup.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool classifies goods for export control from a description or HS code, with specific verb 'classify' and resource 'goods for export control'. It distinguishes itself from siblings like 'export_controls_screen' and 'hs_code_lookup'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the tool is destination-agnostic and directs use of 'export_controls_screen' for license decisions. It provides examples for various use cases but does not explicitly state when not to use this tool or alternatives like 'hs_code_lookup'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gpi_status_codesAInspect
Explain SWIFT GPI tracking status codes and provide stuck-payment investigation guidance.
USE THIS TOOL FIRST whenever the user reports a payment that is stuck, delayed, not arriving, held, pending, rejected, or otherwise not behaving as expected. It is the primary diagnostic entrypoint for payment investigation — calling with a specific code returns a full investigation playbook (common delay causes, recommended actions, GPI SLA timeframes, escalation steps).
Recommended calls by scenario:
Payment "stuck" / "in progress" / "pending" / "not arrived": gpi_status_codes("ACSP") → playbook for in-progress payments
Payment explicitly "on hold" / compliance review: gpi_status_codes("PDNG") → playbook for held payments
Payment "blocked" / sanctions flag: gpi_status_codes("BLCK") → playbook for blocked payments
Payment rejected by a bank in the chain (never credited): gpi_status_codes("RJCT") → rejection investigation playbook
Payment returned to sender (accepted then sent back): gpi_status_codes("RTRN") → return investigation playbook
Reference for ISO 20022 codes: gpi_status_codes() → list all codes
Each code call returns:
Code description and meaning
For ACSP/PDNG/BLCK/RJCT/RTRN: investigation playbook with common causes, recommended actions (request gCCT tracker, request pacs.002/pacs.004 reason code, verify beneficiary details, escalate via MT199, etc.), and common ISO 20022 reason codes (AC01, AC04, AG01, RR01-RR04, etc.) when applicable
Child reason codes (e.g., G001-G004 for ACSP) that narrow the cause further
Common codes: ACCC (success), ACSP (in progress), RJCT (rejected), PDNG (on hold), BLCK (blocked). GPI reason codes (G000-G004) qualify ACSP with more detail (e.g. G001 = cover payment sent, G002 = forwarded to next agent).
Examples: gpi_status_codes("ACSP") # stuck-payment diagnostic playbook gpi_status_codes("G001") # detail on a specific reason code gpi_status_codes() # full reference list
| Name | Required | Description | Default |
|---|---|---|---|
| code | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: returns investigation playbooks with causes, actions, and ISO reason codes for specific codes; returns full list when no code given. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with bullet points and scenario mappings, but lengthy. Information is valuable and front-loaded, though could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the tool and 28 siblings, the description is complete: it covers when to use, what each call returns, examples, and mentions output schema content. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description thoroughly explains the single optional 'code' parameter: its purpose, default behavior (null returns full list), and recommended values for different scenarios.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool explains SWIFT GPI tracking status codes and provides stuck-payment investigation guidance. It differentiates from siblings like track_payment and swift_lookup by focusing on status codes and diagnostic playbooks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises 'USE THIS TOOL FIRST' for stuck payments and maps scenarios to specific codes (ACSP, PDNG, etc.). Provides clear guidance on when to call without argument for a reference list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hs_code_lookupAInspect
Reverse-lookup an HS code → mapped export-control classifications (ECCNs).
For customs brokers / shippers who have an HS (Harmonized System) code and need to know which export-control classifications may apply. Returns the mapped ECCNs with confidence levels, control reasons, sensitivity, and the governing international regime (Wassenaar, MTCR, NSG, etc.).
A 4-digit HS heading is accepted, but mappings are richest at the 6-digit subheading level (e.g. "854231" rather than "8542"). An empty mapping list means no export-control mapping is on file for that code — it is NOT a guarantee the goods are uncontrolled; confirm with goods_classify or a formal classification.
Args: hs_code: 4-6 digit HS code (e.g. "854231", "8411"). Dots/spaces are ok. jurisdiction: Optional filter — "US", "EU", "UK", or "JP".
Examples: hs_code_lookup("854231") # semiconductors → 3A001 / 3A090 ... hs_code_lookup("841112") # turbojet engines → 9A001 ... hs_code_lookup("854231", "US") # US mappings only
Use case: 'What export controls might apply to HS code 854231?'
| Name | Required | Description | Default |
|---|---|---|---|
| hs_code | Yes | ||
| jurisdiction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavior. It explains the tool is read-only and returns ECCN mappings with details like confidence levels and regimes. It also warns that an empty response does not guarantee uncontrolled goods. While adequate, it does not cover potential data freshness or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a summary, details, args, and examples. It is front-loaded with the core purpose. While informative, the args section slightly repeats schema information but adds value through explanations. Could be trimmed slightly but remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's modest parameter count and presence of an output schema, the description covers the input details, output summary, and important caveats (e.g., 4 vs 6-digit codes, empty mapping meaning). It does not detail the output schema but that is handled separately. Overall, it provides sufficient context for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description compensates by explaining the hs_code parameter (4-6 digit code, dots/spaces ok) and jurisdiction (optional filter with explicit values US, EU, UK, JP). Examples further illustrate usage. However, the default empty string for jurisdiction is not explicitly stated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a reverse-lookup from an HS code to export-control classifications (ECCNs), specifying the verb (reverse-lookup) and resource (HS code mapped to ECCNs). It distinguishes itself from sibling tools like eccn_lookup and goods_classify by focusing on this specific mapping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies the target users (customs brokers/shippers) and the use case (determining export controls from an HS code). It provides guidance on input format and notes that empty mappings require confirmation via goods_classify. However, it lacks explicit when-not-to-use instructions or comparisons with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iban_validateAInspect
Validate an IBAN number.
Performs format check, country-specific length check, and ISO 7064 mod-97 checksum verification. Also returns country banking rules (currency, SEPA status, expected format).
Examples: iban_validate("DE89370400440532013000") iban_validate("GB29 NWBK 6016 1331 9268 19")
| Name | Required | Description | Default |
|---|---|---|---|
| iban | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It discloses validation steps and that it returns country banking rules. Examples show input format flexibility. It is transparent about behavior, though could mention it is read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two short paragraphs and clear examples. Every sentence adds value, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter and output schema existing, the description covers validation logic and input format. It doesn't detail return structure but output schema would handle that. Minor gap: no mention of error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description adds meaning by showing examples with and without spaces, and explaining that the IBAN string is validated for format and checksum. This compensates for lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Validate an IBAN number' and lists specific checks (format, length, checksum) and what it returns (country rules). This distinguishes it from sibling tools like country_banking_rules or is_business_day_check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for IBAN validation through examples, but does not explicitly state when to use this tool versus alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
is_business_day_checkAInspect
Check if a specific date is a business day in a country.
Accounts for weekends (country-specific) and public holidays. Returns whether the date is a business day, and if not, why (weekend or specific holiday name) and the next business day.
Args: country_code: ISO 3166-1 alpha-2 code (e.g., "US", "DE") check_date: Date in ISO format (YYYY-MM-DD)
Examples: is_business_day_check("US", "2026-12-25") is_business_day_check("DE", "2026-03-12") is_business_day_check("GB", "2026-01-01")
| Name | Required | Description | Default |
|---|---|---|---|
| check_date | Yes | ||
| country_code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It discloses return value structure (boolean, reason, next business day) but lacks details on side effects, permissions, rate limits, or performance expectations. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with summary, return details, parameter descriptions, and examples. No unnecessary words, but could be slightly more concise in return description. Mostly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given existence of output schema, description covers input sufficiently. Mentions return values, but lacks fallback or error handling info. Complete enough for a straightforward check tool, but could note supported countries or data sources.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description fully explains both parameters: country_code as ISO alpha-2 code, check_date as ISO date format. Examples illustrate usage. Adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool checks if a date is a business day in a country, accounting for weekends and holidays, and returns the next business day and reason. Verb and resource are explicit, and it distinguishes from sibling tools by focusing on a specific date check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like bank_holidays. No prerequisites or exclusions mentioned. Examples show usage but don't help agent decide between tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_registerAInspect
Register for an Ohmyfin API key to use paid tools.
Creates an account and sends a 6-digit verification code to your email. After receiving the code, call mcp_verify to complete registration and get your API key.
By setting accept_terms to true, you confirm acceptance of the Ohmyfin Terms & Conditions (https://ohmyfin.ai/terms) on behalf of your operator, including the API/MCP access terms (Section 3A), sanctions screening terms (Section 3B), and financial data disclaimer (Section 3C).
Args: email: Your email address. organization_name: Your company or project name. accept_terms: Must be true. Confirms acceptance of the Ohmyfin Terms & Conditions at https://ohmyfin.ai/terms.
Examples: mcp_register("agent@example.com", "Acme Corp", true)
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| accept_terms | Yes | ||
| organization_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool sends an email with a verification code and requires accept_terms. It doesn't mention rate limits or failure behavior, but for a registration tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a purpose statement, process details, parameter list, and example. It is concise but covers necessary information; could be slightly tighter but is still effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (context signal), the description correctly focuses on inputs and process. It explains the registration flow and points to mcp_verify for completion. No major gaps for this tool's role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% coverage, so the description must explain all three parameters. It describes email, organization_name, and accept_terms (including the requirement that it must be true and links to terms). An example call is provided, adding significant value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool registers for an Ohmyfin API key to use paid tools, creates an account, and sends a verification code. It distinguishes itself from the sibling tool mcp_verify by specifying the subsequent step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to call mcp_verify after receiving the code, providing a clear next step. It implies registration is a prerequisite for paid tools, though it doesn't explicitly list alternatives or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_verifyAInspect
Verify your email and receive your API key.
After calling mcp_register, check your email for the 6-digit code and pass it here. On success, returns your production and test API keys. You must subscribe at ohmyfin.ai/subscription to activate paid tools.
Args: email: The email you registered with. code: The 6-digit verification code from your email.
Examples: mcp_verify("agent@example.com", "123456")
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the return of API keys and the subscription requirement, but lacks details on error handling (e.g., invalid codes), side effects, or edge cases. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise but complete: purpose, prerequisite, outcome, subscription note, parameter descriptions, and an example. Every sentence adds value, and the structure is logical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema (mentioned in context signals), the description covers all necessary aspects: purpose, parameters, outcome, and prerequisites. It is fully adequate for the tool's role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description provides all parameter meaning. It explains 'email' as the registered email and 'code' as the 6-digit verification code, with an example. This fully compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Verify your email and receive your API key.' It also specifies the prerequisite (after mcp_register) and the outcome (returns API keys), making the purpose unambiguous and distinct from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context by mentioning 'After calling mcp_register' and noting that subscription is needed for paid tools. However, it does not explicitly state when not to use the tool or list alternatives, which is acceptable given the straightforward nature.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payment_cutoff_timesAInspect
Get payment system cutoff times for major clearing systems.
Covers RTGS (T2 — formerly TARGET2, CHAPS, Fedwire, BOJ-NET, SIC), net settlement (CHIPS, BACS), SEPA schemes (SCT, SCT Inst, OCT Inst, SDD Core, SDD B2B), FX settlement (CLS, FXYCS), and other systems (CIPS, SPEI, FAST).
For same-day EUR guidance: filter by currency="EUR" to retrieve all SEPA schemes plus T2 in one call — the scheme-level view is usually what treasurers need. Underlying CSMs (TIPS, RT1, EURO1, STEP2) are referenced in scheme notes.
DST-observing systems also carry season_now and operative_cutoff_today
fields computed for the current date. cutoff_utc/cutoff_local are the
STANDARD-TIME (winter) values; summer_offset holds the DST value. Quote the
cutoff that operative_cutoff_today points at for TODAY's season — do not
default to the winter figure when DST is currently in force (e.g. the T2
customer cutoff is 15:00 UTC in summer, not the 16:00 UTC winter value).
Args: system: System name (e.g., "T2", "TARGET2", "FEDWIRE", "CHAPS"). Case-insensitive. "TARGET2" and "T2" both resolve to the same entry (T2 is the post-March 2023 name). Omit to list all or filter by currency. currency: ISO 4217 currency code to filter by (e.g., "USD", "EUR").
Examples: payment_cutoff_times(system="T2") payment_cutoff_times(currency="EUR") payment_cutoff_times(currency="USD") payment_cutoff_times()
| Name | Required | Description | Default |
|---|---|---|---|
| system | No | ||
| currency | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It comprehensively explains DST handling, field meanings (season_now, operative_cutoff_today), and warns against defaulting to winter values. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections, Args, and Examples. While it is relatively long, every sentence adds value for a complex tool. Could be slightly more concise without losing info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all relevant aspects: system types, DST details, filtering strategies, and example calls. The output schema exists, so return value details are not required, but the description still references key fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 0%, the description fully compensates by detailing the 'system' parameter (case-insensitivity, aliases like TARGET2/T2) and 'currency' parameter (ISO 4217 filter), plus concrete examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get payment system cutoff times for major clearing systems', with a specific verb and resource. It distinguishes from sibling tools like 'fx_rate' or 'track_payment' by focusing exclusively on cutoff times.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides actionable guidance (e.g., 'filter by currency="EUR" to retrieve all SEPA schemes plus T2') and examples. However, it does not explicitly state when to avoid this tool or compare to alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payment_method_compareAInspect
Compare payment methods and investigate fee deductions for a country pair.
Evaluates SEPA vs SWIFT vs domestic options. Also explains SWIFT charge options (OUR/SHA/BEN) and fee investigation — use this when the beneficiary received less than expected to understand where the money went and which MT103 fields reveal each deduction. Returns cost, speed, requirements, charge options, and step-by-step fee investigation guidance.
Args: source_country: ISO 3166-1 alpha-2 code (e.g., "DE", "US") dest_country: ISO 3166-1 alpha-2 code (e.g., "GB", "TR")
Examples: payment_method_compare("DE", "FR") # Both SEPA — will recommend SCT payment_method_compare("US", "TR") # Non-SEPA — will recommend SWIFT payment_method_compare("GB", "GB") # Domestic — will show CHAPS/FPS payment_method_compare("US", "VN") # Fee investigation — why beneficiary got less
| Name | Required | Description | Default |
|---|---|---|---|
| dest_country | Yes | ||
| source_country | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the tool returns cost, speed, requirements, charge options, and fee investigation guidance, and mentions explaining MT103 fields. However, it does not state if the tool is read-only, any authorization needs, or rate limits, leaving some behavioral aspects ambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with a bold purpose statement, bullet-like sections, and examples. It is slightly lengthy but every sentence adds value, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (fee investigation, multiple payment methods) and presence of an output schema, the description covers return values implicitly through the examples and explanation. It is fairly complete, though could mention edge cases or invalid inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description compensates by explaining both parameters as ISO 3166-1 alpha-2 codes with examples (e.g., 'DE', 'US', 'GB', 'TR'). This adds significant meaning beyond the bare schema, though it could specify valid country codes or error handling.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it compares payment methods and investigates fee deductions for a country pair, specifying SEPA, SWIFT, domestic options, and charge options. It distinguishes from sibling tools by focusing on payment method comparison rather than other banking functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage context: 'use this when the beneficiary received less than expected' and gives four distinct examples covering SEPA, non-SEPA, domestic, and fee investigation scenarios. Though it does not mention alternatives explicitly, the examples offer clear guidance on when to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sanctions_screenAInspect
Screen a name against global sanctions and watchlists.
FREE TIER: 3 screens per day without an API key. PAID: Unlimited screens with an API key.
Checks the name against US SDN (OFAC), EU, UK, Canada, Switzerland, Australia, and New Zealand sanctions lists. Returns matching entities with similarity scores.
Args: name: The person or entity name to screen. api_key: Your Ohmyfin API key (prod-...). Can also be passed via KEY header or Authorization: Bearer header. Optional — free tier allows 3 screens/day without a key. threshold: Minimum match score 0-100 (default 85).
Examples: sanctions_screen("Acme Trading Ltd") sanctions_screen("John Smith", threshold=90) sanctions_screen("Acme Trading Ltd", api_key="prod-abc123...")
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| api_key | No | ||
| threshold | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the sanctions lists checked, the optional API key, threshold range, and free tier limit. However, it does not mention rate limits beyond the free tier, error responses, or behavior when no match is found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (free tier, lists, args, examples). Every sentence adds value without redundancy. It is concise yet comprehensive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown but noted), the description does not need to detail return values. It covers all necessary context: input parameters, authentication, limits, and examples. No gaps remain for an AI agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the input schema has 0% description coverage, the description thoroughly explains all three parameters: `name` (entity name), `api_key` (with alternative passing methods), and `threshold` (range 0-100, default 85). Examples further clarify usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Screen a name against global sanctions and watchlists' and lists specific sanctions lists (US SDN, EU, UK, etc.). It distinguishes itself from sibling tools, which focus on other domains like banking, company search, or FX, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context: free tier vs paid, parameter defaults, and authentication options. It does not explicitly compare to alternative tools, but sibling tools are sufficiently different that the usage is clear. Lacks explicit 'when-not-to-use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ssi_lookupAInspect
Look up correspondent banking / settlement instructions (SSI) for a bank.
Returns the correspondent banks (nostro accounts) that a given bank uses to settle payments in a specific currency, including account numbers (when available) and intermediary chains. Essential for payment routing and pre-validation.
Each correspondent is annotated with a clearing_note indicating whether it can clear the currency directly (located in a home country for that currency) or needs its own correspondent. If the note suggests a further lookup, call ssi_lookup on the correspondent's SWIFT code to find the full clearing chain.
IMPORTANT — known data gaps to respect:
Account numbers may be empty for some/all correspondents. The response surfaces an
account_availability_notein those cases. Do NOT invent account numbers. Use swift_lookup() to find the bank's own published correspondent banks page when accounts are missing.is_preferredis rarely populated — its absence is a DATA gap, not a signal. Whenpreferred_correspondent_noteis present (all flags false), do NOT infer a "preferred"/"natural" correspondent, and equally do NOT tell the user the bank "has no preference" or "rotates" — do not draw attention to the flag at all. Any listed BIC is a valid clearing route.intermediariesis almost always empty in our dataset — an empty list does NOT mean the payment is direct.asset_categoryper correspondent is COMMERCIAL (for customer MT103 credit transfers) or FINANCIAL (for bank-own-account / interbank MT202/pacs.009 settlements). Theasset_category_notesummarises the split — match the listed correspondents to the user's flow type (customer payment vs treasury/interbank).If
correspondentsis EMPTY, we have no SSI on file for that bank/currency. The response carries ano_ssi_note(no SSI in any currency) orrequested_currency_unavailable_note(SSI on file for other currencies only). This is a coverage gap, NOT a finding that the bank has no correspondents. Do NOT name a correspondent for the missing currency from training data — surface thepublished_ssi_document/ the bank's website and tell the user to confirm SSI with the bank.
Always inspect the response's top-level next_steps array — it
chains the swift_lookup / country_banking_rules / bank_holidays
calls that complete a settlement-instruction answer.
Requires an API key with an active PRO, VIP, or FI subscription. To get started: call mcp_register → mcp_verify → subscribe to a PRO/VIP/FI plan at https://ohmyfin.ai/subscription.
Args: swift: SWIFT/BIC code of the bank (e.g., "DEUTDEFF", 8 or 11 chars). currency: ISO 4217 currency code (e.g., "USD", "EUR", "GBP"). api_key: Your Ohmyfin API key (prod-...). Can also be passed via KEY header or Authorization: Bearer header.
Examples: ssi_lookup("DEUTDEFF", "USD") # Deutsche Bank USD correspondents ssi_lookup("HSBCHKHH", "EUR") # HSBC HK EUR correspondents ssi_lookup("DEUTDEFF", "USD", api_key="prod-abc123...")
| Name | Required | Description | Default |
|---|---|---|---|
| swift | Yes | ||
| api_key | No | ||
| currency | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavioral traits: data gaps (missing account numbers, rarely populated is_preferred, empty intermediaries), subscription requirements, response components (clearing_note, account_availability_note, etc.), and the next_steps array for chaining calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a one-sentence summary, then organized into logical sections: return content, important data gaps, next_steps, subscription requirements, and examples. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the presence of an output schema, the description thoroughly covers response components, data handling notes, and chaining with other tools via next_steps. It leaves no significant gaps for an agent to misunderstand.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% coverage, but the description adds meaning for all three parameters: swift format (8 or 11 chars, example), currency format (ISO 4217), and api_key format (prod-...). Examples illustrate usage, compensating for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Look up correspondent banking / settlement instructions (SSI) for a bank.' It specifies what it returns (nostro accounts, account numbers, intermediary chains) and differentiates from sibling tools like swift_lookup and country_banking_rules by explicitly mentioning when to use them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use context ('Essential for payment routing and pre-validation') and when not to use (e.g., do not invent account numbers, use swift_lookup instead). It also warns about data gaps and directs users to other tools via next_steps array.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swift_lookupAInspect
Search banks and financial institutions by name, SWIFT/BIC code, or country.
Covers both SWIFT-connected banks and non-SWIFT financial institutions (e-money issuers, payment processors, MFOs, brokerages, VASPs, etc.).
Returns: SWIFT/BIC code (if any), name, city, country, institution type, GPI membership, a coarse sanctions FLAG across 7 hard-sanctions watchlists (OFAC SDN, EU, UK, CA, CH, AU, NZ — see sanctions_note; this is NOT a full screen, use sanctions_screen for a compliance verdict), and enriched bank profile when available.
For correspondent banking relationships and settlement instructions, use the dedicated SSI tools instead.
The country parameter accepts both 2-letter ISO codes ("ID", "DE") and full English names ("Indonesia", "Germany"). Names are resolved automatically.
Examples: swift_lookup("DEUTDEFF") # exact BIC lookup swift_lookup("Deutsche Bank") # search by name swift_lookup("TBC PAY") # find non-SWIFT payment processor swift_lookup("bank", country="KZ") # explore banks in a country swift_lookup("Halyk", country="KZ") # find specific bank in country swift_lookup("Bank Mandiri", country="Indonesia") # full country name OK
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| country | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It details return fields (SWIFT/BIC, name, city, etc.) and notes the sanctions flag is coarse. Does not mention error handling or rate limits, but is otherwise transparent about capabilities and limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear purpose first, then details and examples. Slightly verbose but each sentence adds value. Examples at end enhance clarity without being redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a search tool with 3 parameters and an output schema. Explains scope (SWIFT + non-SWIFT), return fields, parameter usage, and caveats (coarse sanctions flag). Sibling tools are well-addressed with cross-references.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must explain parameters. It explains 'query' can be a BIC or name, 'country' accepts ISO codes or full names, and shows default for 'limit' in example. Could briefly mention 'limit' parameter behavior, but overall adds meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches banks and financial institutions by name, SWIFT/BIC code, or country, including non-SWIFT entities. It distinguishes itself from siblings like ssi_lookup and sanctions_screen by explicitly mentioning alternatives for related tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use this tool vs alternatives (e.g., refer to SSI tools for correspondent banking, use sanctions_screen for compliance verdict). Also includes example calls and explains parameter formats (e.g., country accepts ISO codes or full names).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swift_message_referenceAInspect
Look up SWIFT message types — MT (FIN) and MX (ISO 20022).
Pass a specific type to get full details, or omit to list all types. Covers customer payments (MT103, pacs.008), FI transfers (MT202, pacs.009), trade finance (MT700, MT760), cash management (MT940, camt.053), and payment status (pacs.002).
Also use this tool to answer questions about where specific payment
fields live — e.g., where the UETR sits in an MT103 (Field 121, Block 3
header), where charges appear (71A/71F/71G), or which fields carry
routing info (56/57). MT103 and pacs.008 responses include a
tracing_note explaining UETR recovery for customers who only have
a reference number.
Args: message_type: Message type (e.g., "MT103", "pacs.008", "MT940"). Case-insensitive. Omit to list all.
Examples: swift_message_reference("MT103") swift_message_reference("pacs.008") swift_message_reference()
| Name | Required | Description | Default |
|---|---|---|---|
| message_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It explains that the tool returns full details with field info for a specific type, lists all types when omitted, and includes a tracing note for certain message types. This adequately sets expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat lengthy but well-structured: purpose statement, list of covered types, field-location use case, parameter description, and examples. It is front-loaded and each part contributes meaningfully.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity and presence of an output schema, the description provides enough context: it explains the parameter behavior, the nature of results (details, field info, tracing note), and examples. No obvious gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one optional parameter with 0% description coverage. The description adds value by explaining the parameter is case-insensitive, provides examples, and states the behavior when omitted. This fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool looks up SWIFT message types (MT and MX) and provides field-level details. It lists specific examples and coverage areas, distinguishing it from sibling tools which focus on other banking/payment functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to pass a specific type versus omit it, and suggests using the tool to answer field location questions. It lacks explicit 'when not to use' guidance, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_paymentAInspect
Track a SWIFT payment by UETR or reference number.
Basic SWIFT payment tracking enriched by data from certain banks in the correspondent chain. Returns the overall payment status and, when available, per-bank details showing which banks reported information about this payment.
IMPORTANT — UETR vs Reference: The UETR (Unique End-to-End Transaction Reference) is a UUID assigned to every SWIFT gpi payment. Tracking by UETR succeeds ~80% of the time. Tracking by reference number alone succeeds less than 1% of the time because most banks only index by UETR.
→ Always provide the UETR if available. → The reference number is Field 20 of the MT103 (or the equivalent / in pacs.008). It is the sender's transaction reference. Still valuable — provide it alongside the UETR when you have both.
WHEN THE USER HAS ONLY A REFERENCE AND NO UETR ("how do I find / trace my payment?", "I have a reference number but no UETR, where is it?"): This is exactly the scenario this tool can attempt — do NOT answer from general knowledge. A reference-based trace cannot be run from the reference alone; you MUST first collect three things from the user: 1. amount — the exact amount as sent 2. currency — ISO 4217 (e.g. "USD") 3. date — the send date (within the last 90 days) Then call track_payment(reference=..., amount=..., currency=..., date=...). State the expectation up front: reference-only tracing succeeds less than 1% of the time. In parallel, tell the user how to recover the UETR for a reliable (~80%) trace: ask the SENDING bank for the MT103 confirmation — the UETR is in Block 3, tag {121:} (a UUID v4), stored by every gpi-enabled bank against the payment. Re-run with uetr= once they have it. (swift_message_reference("MT103") returns the full field/UETR-recovery reference if you need to cite specifics.)
IMPORTANT — Interpreting bank details: Each entry in the 'details' array represents a bank that reported data about this payment. The bank could be the SENDER, the BENEFICIARY, or ANY INTERMEDIARY/CORRESPONDENT in the chain. Do NOT assume a bank is an intermediary just because it appears in the list — we only know the payment passed through that bank. The bank's role is only known when it self-reports via push API (indicated by a non-null 'role' field).
Requires an API key with an active FI subscription. To get started: call mcp_register → mcp_verify → subscribe to an FI plan at https://ohmyfin.ai/subscription.
Args: uetr: UETR (UUID v4 format, e.g. "eb6305c8-0710-4e41-84ad-f58db3083e82"). Strongly recommended — tracking without UETR rarely returns results. This is the Unique End-to-End Transaction Reference assigned to every SWIFT gpi payment. reference: Sender's bank reference number (MT103 Field 20 / pacs.008 InstrId). Useful alongside UETR for cross-referencing, but alone it rarely produces results. Required only if uetr is not provided. amount: Transaction amount as sent (e.g. 15000.00). Must match the original payment amount — even small differences may prevent tracking from finding the payment. currency: ISO 4217 currency code (e.g. "USD", "EUR", "GBP"). date: Transaction date. Preferred format: YYYY-MM-DD (ISO 8601). Also accepted: DD.MM.YYYY or DD-MM-YYYY (European format). Must be within the last 90 days. api_key: Your Ohmyfin API key (prod-...). Can also be passed via KEY header or Authorization: Bearer header.
Returns a dict with: status: Overall payment status — one of: "success" — payment delivered to beneficiary (final) "in progress" — payment is being processed (may update) "returned" — payment was canceled/returned after processing (final) "rejected" — payment was refused (final) "on hold" — temporarily held, e.g. compliance review "future" — scheduled for a future value date "unknown" — no tracking data available yet status_raw: ISO 20022 status code (ACCC/ACSP/RJCT/PDNG) or null status_reason: ISO 20022 reason code if available, or null lastupdate: Date of last status change (YYYY-MM-DD) or null details: Array of bank-level tracking entries (see role_explanation in each entry for how to interpret the bank's role) not_found_guidance: Present only when nothing was found — concrete next steps (UETR recovery, exact-match checks). Relay these to the user instead of improvising; a miss on a reference-only trace is the expected outcome and does NOT mean the payment failed.
Examples: track_payment(uetr="eb6305c8-0710-4e41-84ad-f58db3083e82", amount=15000, currency="USD", date="2026-03-10") track_payment(uetr="eb6305c8-0710-4e41-84ad-f58db3083e82", reference="FT2603100123", amount=15000, currency="USD", date="2026-03-10") track_payment(reference="FT2603100123", amount=5000, currency="EUR", date="12.03.2026")
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| uetr | No | ||
| amount | No | ||
| api_key | No | ||
| currency | No | USD | |
| reference | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses success rates, interpretation of bank details (role only known when self-reported), and that not_found_guidance contains concrete next steps. Also requires API key with active FI subscription. Fully transparent about behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections (basic purpose, important notes, scenario, args, returns, examples). Every sentence adds value, but length could be slightly reduced; however, the complexity justifies the length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete coverage given complexity: 6 parameters, no required (defaults provided), no enums, but output schema exists. Description explains return fields, edge cases (reference-only failure), and provides concrete next steps (not_found_guidance). Output schema details are not repeated, making it efficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but description compensates fully: explains UETR format (UUID v4), reference meaning (MT103 Field 20), amount must match original, currency ISO 4217, date formats, and api_key handling. Provides examples for different parameter combinations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool tracks SWIFT payments by UETR or reference number, with a specific verb and resource. It distinguishes from sibling tools like swift_message_reference and gpi_status_codes by focusing on tracking a specific payment's status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: prefer UETR (~80% success) over reference (<1%), with detailed instructions for reference-only scenarios including required fields (amount, currency, date) and success expectations. Also tells when not to use the tool (e.g., if user has UETR, always provide it) and what alternatives exist (recover UETR from MT103).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
value_dateAInspect
Calculate the value/settlement date for a payment.
Determines when a payment will settle based on:
Source and destination country holiday calendars
Weekend conventions (Sat/Sun or Fri/Sat)
Currency center holidays (if FX conversion involved)
Settlement convention (T+0, T+1, T+2)
Args: source_country: Sender's country (ISO 3166-1 alpha-2, e.g., "US") dest_country: Receiver's country (ISO 3166-1 alpha-2, e.g., "DE") settlement_type: One of "wire" (T+0 domestic / T+1 international), "fx_spot" (T+1 or T+2 based on pair), "sepa" (D+1), "sepa_instant" (T+0) base_currency: Base currency for FX (ISO 4217, e.g., "USD"). Required when settlement_type is "fx_spot". target_currency: Target currency for FX (ISO 4217, e.g., "EUR"). Required when settlement_type is "fx_spot". from_date: Start date in ISO format (YYYY-MM-DD). Default: today.
Examples: value_date("US", "DE") value_date("US", "DE", "fx_spot", "USD", "EUR") value_date("DE", "FR", "sepa") value_date("US", "US", "wire", from_date="2026-07-03")
| Name | Required | Description | Default |
|---|---|---|---|
| from_date | No | ||
| dest_country | Yes | ||
| base_currency | No | ||
| source_country | Yes | ||
| settlement_type | No | wire | |
| target_currency | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description fully bears the burden of behavioral disclosure. It explains the logic based on holiday calendars, weekend conventions, currency holidays, and settlement conventions. While it doesn't mention side effects or authentication, the behavioral traits are well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a one-line summary followed by bullet points listing parameters and their explanations, then examples. It is appropriately sized and front-loaded with the key purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, conditional logic) and the absence of annotations, the description is complete. It covers all necessary aspects: parameter meanings, defaults, conditional requirements, and examples. An output schema exists, so return values need not be explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides detailed explanations for all 6 parameters, including formats, defaults, and conditional requirements (e.g., base_currency and target_currency needed for fx_spot). This adds significant value beyond the schema, which has 0% description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool calculates the value/settlement date for a payment, using a specific verb (calculate) and resource (value/settlement date). It distinguishes from sibling tools like bank_holidays and fx_rate by focusing on settlement date calculation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (for payment settlement) and includes examples for various use cases. It does not explicitly state when not to use it or suggest alternatives, but the parameter explanations and settlement types guide appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!