Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "country_banking_rules"
⟨159 unchanged words⟩ e.g., missing purpose codes, regulatory fields).If`payment_code_requirement.required`aiscountrywhatrequiresourspecialdata holds on country-specific purpose / payment codes,: true (a requirement is on file; payment_requirements lists theresponsecodeincludestables when we hold them), false (our profile states that noneaispayment_requirementsimposed),block"conditional",withorfield"unknown"descriptions(notandcovered:categories.an absence of data, never a finding that no code is required). Use country_payment_codes to lookup specific code values. Examples: country_banking_rules("DE" ⟨15 unchanged words⟩
Changed the definition of "sanctions_screen"
⟨816 unchanged words⟩ , so report the BLOCK as it stands. Rows on Sanctions-Ownership-Derived-Block, Sanctions-Ownership-Derived and Sanctions-Ownership-Derived-Former are companies, or their owners, that a company register links to a listed party that owns, controls or directs them: their `action` already includes the 50% rule, `ownership_reason` gives the reason in one sentence, and `derivation` keeps the register facts behind it. Examples: sanctions_screen("Acme Trading Ltd") sanctions_screen( ⟨16 unchanged words⟩
Changed the definition of "settlement_eta"
⟨235 unchanged words⟩ a rough range, never a promise. - basis.level says whose payments basis.n counts: `corridor` this bank pair, `sender_ccy` / `receiver_ccy` this sending / receiving bank in this currency, `currency` every bank in this currency, `global` every tracked payment in every currency. basis.currency is the PAYMENT's currency, not the pool's: a global answer is never "<currency> payments". basis.pool says it in words where it matters. - basis.refined_by names a thin cohort blended into that pool; basis.n is the pool's size, not its. The return rate can be that cohort's own (non_arrival.based_on): never attach basis.n to it. - route.confirmed=false means the route is INFERRED from settlement ⟨107 unchanged words⟩ payments that were returned or rejected rather thandelivered.delivered; read non_arrival.based_on when it is there. - "Delivered" (ACCC) means delivered to ⟨25 unchanged words⟩
Changed the definition of "gpi_status_codes"
⟨239 unchanged words⟩ ACSP with more detail (e.g. G001 =coverpassedpaymentonsentto a bank that is not a gpi member, G002 =forwardedtocreditnextpending,agentmay not be same day). Examples: gpi_status_codes("ACSP") # stuck-payment ⟨16 unchanged words⟩
Changed the definition of "tracking_history"
⟨109 unchanged words⟩ differs. - You need to reconcile an amountdiscrepancy. Correspondentorbanksdatesuchdiscrepancy.asJP Morganreturn theirreturns itsconfirmationlineONLYonly when thetrackedentered date and amountexactlyare close to its own
Changed the definition of "bank_holidays", "banks_using_correspondent", "company_registries" and 31 more
before
—after
Bank Holidays⟨228 unchanged words⟩ 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", ⟨4 unchanged words⟩
{"additionalProperties":false,"properties":{"country_code":{"description":"ISO 3166-1 alpha-2 country code, e.g. \"US\", \"DE\", \"GB\".","Changed the definition of "sanctions_screen"
⟨646 unchanged words⟩ is present, take the row at face value. Present words a row holds only inside a web address, e-mail address, @handle or labelled channel are named again in `query_words_only_in_contact_details`: they name an address or channel of the listed party, not the listed party, so that row is not taken at face value on their account. The response also carries `coverage_gate`, set by ⟨235 unchanged words⟩
Changed the definition of "track_payment"
⟨658 unchanged words⟩ status — one of: "success" —paymentdelivered to the beneficiary when the gpi code ACCC backs it; otherwise one bank reported its own leg completed (finalstatus_explanation says which) "in progress" — payment is being ⟨216 unchanged words⟩
Changed the definition of "tracking_history"
⟨195 unchanged words⟩ still here, under a different entered amount. Each bank entry's `source` names the tracking SOURCE that reported it (e.g. "Standard Chartered"), not the bank at a step of the payment; track_payment names the same data by the bank at each step, so the two names differ. Only results for the current user (plus system ⟨46 unchanged words⟩
Changed the definition of "track_payment"
⟨721 unchanged words⟩ or null status_reason: ISO 20022 reason codeifatavailablePAYMENT level, or null. null is common and does NOT mean no reason code was reported — most feeds report the qualifier per bank instead, see below. reason_codes_reported_by_banks: Present whenever any bank line reports a "STATUS/REASON" qualifier (ACSP/G003, RJCT/MS03). Each entry is decoded to its name and meaning. This is what answers "is anything pending / held / rejected / flagged on my payment", not status_reason. lastupdate: Date of last status change (YYYY-MM-DD ⟨88 unchanged words⟩
Changed the definition of "iban_validate"
⟨121 unchanged words⟩ infer, and it is invisible without this call. Everywhere else the bank identifier is a NATIONAL bank/sort code (the German BLZ, Italian ABI, French code banque): `bank_identifier.code` is those characters, `is_bic_prefix` is false, and no institution is named — quote the code when telling the user what to check, never a bank name derived from it. A FAILURE IS NOT ALWAYS A CHECKSUM FAILURE. An IBAN of the right length whose characters break the country's mask (a letter where the country requires a digit — O for 0, I for 1) is refused BEFORE mod-97 runs, with `format_violations` naming the position. Report the position and the character; do not tell the user the check digits are wrong. `valid: true` means the check digits are ⟨95 unchanged words⟩
Certificate recorded, valid to 2026-12-07
Authorization not required
First tool surface recorded: 34 tools (server version 3.1.0)
Showing the latest 14 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
before
—after
{"openWorldHint":true,"readOnlyHint":true}before
—after
Banks Using a Correspondent⟨100 unchanged words⟩ 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", ⟨7 unchanged words⟩
⟨7 unchanged words⟩ {"type":"null"}],"default":null,"description":"Your Ohmyfin API key (prod-...). Optional here: it can be sent instead as a KEY header or an Authorization: Bearer header. What the tool requires of the key is in its description."},"correspondent_swift":{"description":"BIC of the correspondent bank, 8 or 11 characters (e.g. \"IRVTUS3N\").","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 country code of the client banks (e.g. \"AE\").","type":"string"},"currency":{"description":"ISO 4217 currency code (e.g. \"USD\").","type":"string"},"name_prefix":{"anyOf" ⟨2 unchanged words⟩ {"type":"null"}],"default":null,"description":"Optional prefix on the client bank's name (e.g. \"AL\")."},"page":{"default":1,"description":"Result page, 1-4 (default 1). Any other value is refused.","type":"integer"}},"required":[ ⟨5 unchanged words⟩
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
Available Company Registries (Experimental)before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
Company Registry Search: Company (Experimental)⟨201 unchanged words⟩ the response before you report an empty result.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"] ⟨7 unchanged words⟩
⟨7 unchanged words⟩ {"type":"null"}],"default":null,"description":"Your Ohmyfin API key (prod-...). Optional here: it can be sent instead as a KEY header or an Authorization: Bearer header. What the tool requires of the key is in its description."},"include_officers":{"default":true,"description":"Include directors and officers (default true).","type":"boolean"},"include_only_active":{"default":false,"description":"Return active companies only (default false).","type":"boolean"},"include_sanctions_check":{"default":true,"description":"Screen every company and person found against sanctions lists (default true).","type":"boolean"},"include_shareholders":{"default":true,"description":"Include PSC / beneficial owners (default true).","type":"boolean"},"jurisdictions":{"description":"Registry codes to search, at least one (e.g. [\"UK\"]). \"ALL\" is not supported. The UK registry is \"UK\", not \"GB\"; \"XX\" is GLEIF LEI (global). company_registries() returns the live list.","items":{"type":"string"},"type":"array"},"name":{"description":"Company name to search for.","type":"string"}},"required":[" ⟨4 unchanged words⟩
before
—after
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false}before
—after
Company Registry Search: Person (Experimental)⟨158 unchanged words⟩ you report an empty result to the user.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 ⟨6 unchanged words⟩
⟨7 unchanged words⟩ {"type":"null"}],"default":null,"description":"Your Ohmyfin API key (prod-...). Optional here: it can be sent instead as a KEY header or an Authorization: Bearer header. What the tool requires of the key is in its description."},"include_inactive_roles":{"default":true,"description":"Include resigned and ceased roles (default true).","type":"boolean"},"include_sanctions_check":{"default":true,"description":"Screen every person and company found against sanctions lists (default true).","type":"boolean"},"jurisdictions":{"description":"Registry codes to search, at least one (e.g. [\"UK\", \"NO\"]). \"ALL\" is not supported. The UK registry is \"UK\", not \"GB\"; \"XX\" is GLEIF LEI (global). company_registries() returns the live list.","items":{"type":"string"},"type":"array"},"name":{"description":"Person name to search for.","type":"string"}},"required":[" ⟨4 unchanged words⟩
before
—after
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false}before
—after
Company Search Result (Experimental)⟨22 unchanged words⟩ 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")
⟨7 unchanged words⟩ {"type":"null"}],"default":null,"description":"Your Ohmyfin API key (prod-...). Optional here: it can be sent instead as a KEY header or an Authorization: Bearer header. What the tool requires of the key is in its description."},"search_id":{"description":"The search_id returned by a previous company_search_person or company_search_company call.","type":"string"}},"required":[" ⟨3 unchanged words⟩
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
Country Banking Rules⟨184 unchanged words⟩ 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") ⟨13 unchanged words⟩
{"additionalProperties":false,"properties":{"country_code":{"description":"ISO 3166-1 alpha-2 country code, e.g. \"DE\", \"US\", \"KZ\".","type":"string"}},"required":["country_code ⟨2 unchanged words⟩
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
Country Export-Control Restrictions⟨114 unchanged words⟩ 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 — ⟨34 unchanged words⟩
{"additionalProperties":false,"properties":{"country_code":{"description":"ISO 3166-1 alpha-2 country code, e.g. \"RU\", \"CN\", \"DE\".","type":"string"},"jurisdiction":{"default":"","description":"Optional filter by jurisdiction, e.g. \"US\", \"EU\". Omit it for every jurisdiction.","type":"string"}},"required": ⟨3 unchanged words⟩
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
Country Payment Codes⟨27 unchanged words⟩ 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", " ⟨17 unchanged words⟩
{"additionalProperties":false,"properties":{"code_type":{"description":"Which code table to search, as named in country_banking_rules payment_requirements.required_fields[].code_type (e.g. \"knp\", \"purpose_code\"). Case-insensitive.","type":"string"},"country_code":{"description":"ISO 3166-1 alpha-2 country code, e.g. \"KZ\", \"AE\".","type":"string"},"search":{"anyOf" ⟨2 unchanged words⟩ {"type":"null"}],"default":null,"description":"Optional keyword filter (e.g. \"transport\", \"trade\", \"insurance\"). Omit it to list every code in the table, which is a large response."}},"required":["country_code","code_type"] ⟨2 unchanged words⟩
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
ECCN Lookup⟨44 unchanged words⟩ 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 ⟨13 unchanged words⟩
{"additionalProperties":false,"properties":{"eccn":{"description":"Export Control Classification Number, e.g. \"5A001\", \"3A001\", \"1C351\". Case-insensitive.","type":"string"}},"required":["eccn ⟨2 unchanged words⟩
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
Export-Control Goods Screening⟨204 unchanged words⟩ by that doubt, so report them normally.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 ⟨48 unchanged words⟩
{"additionalProperties":false,"properties":{"destination_country":{"description":"Destination country, ISO 3166-1 alpha-2 country code (e.g. \"RU\", \"CN\").","type":"string"},"eccn":{"default":"","description":"Export Control Classification Number, e.g. \"3A001\". Give at least one of eccn, hs_code, goods_description.","type":"string"},"goods_description":{"default":"","description":"Free-text goods description, English or Russian. A fallback for when no eccn or hs_code is known; see the description.","type":"string"},"hs_code":{"default":"","description":"Harmonized System code, 4-8 digits (e.g. \"854231\"). Give at least one of eccn, hs_code, goods_description.","type":"string"},"jurisdiction":{"default":"US","description":"\"US\" (default), \"EU\", \"UK\", \"JP\", \"ITAR\", or \"ALL\".","type":"string"}},"required": ⟨3 unchanged words⟩
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
Federal Register Export and Sanctions Changes⟨19 unchanged words⟩ 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, ⟨24 unchanged words⟩
⟨3 unchanged words⟩ ":{"agency":{"default":"","description":"Optional: \"BIS\" (Bureau of Industry and Security) or \"OFAC\" (Office of Foreign Assets Control). Omit it for both.","type":"string"},"category":{"default":"","description":"Optional: \"entity_list\", \"rule_change\", \"country_policy\" or \"sanctions\". Omit it for every category.","type":"string"},"days":{"default":30,"description":"Days to look back, 1-365 (default 30). A value outside the range is refused.","type":"integer"},"limit":{"default":50,"description":"Maximum number of changes to return (default 50).","type":"integer"},"severity":{"default":"","description":"Optional: \"critical\", \"high\", \"medium\" or \"low\". Omit it for every level.","type":"string"}},"type":"object"}
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
FX Reference Rate⟨200 unchanged words⟩ 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 ⟨5 unchanged words⟩
{"additionalProperties":false,"properties":{"base":{"description":"Base currency, ISO 4217 (e.g. \"USD\"). The rate is quoted as units of target per 1 base.","type":"string"},"target":{"description":"Target currency, ISO 4217 (e.g. \"VND\").","type":"string"}},"required":[" ⟨4 unchanged words⟩
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
FX Rate History⟨264 unchanged words⟩ 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: Lookback window in days (1-365, default 90). A ceiling on the window, not a guarantee of the number of points returned.Examples: fx_rate_history("EUR", "USD", 30 ⟨4 unchanged words⟩
{"additionalProperties":false,"properties":{"base":{"description":"Base currency, ISO 4217 (e.g. \"EUR\"). Rates are quoted as units of target per 1 base.","type":"string"},"days":{"default":90,"description":"Lookback window in calendar days, 1-365 (default 90). Values outside the range are clamped. A ceiling on the window, not a promise of that many data points.","type":"integer"},"target":{"description":"Target currency, ISO 4217 (e.g. \"USD\").","type":"string"}},"required":[" ⟨4 unchanged words⟩
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
FX Market Session Timing⟨183 unchanged words⟩ 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") ⟨8 unchanged words⟩
⟨7 unchanged words⟩ {"type":"null"}],"default":null,"description":"Optional ISO 4217 code (e.g. \"EUR\", \"JPY\"). Omit it to get every session and overlap."}},"type":"object"}
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
FX Volatility and Exposure Band⟨348 unchanged words⟩ " hedging cost. Never state a forward rate.Args: base: Base currency (ISO 4217, e.g., "EUR") target: Target currency (ISO 4217, e.g., "TRY") horizon_days: Optional. Calendar days from today to the end of the exposure (1-1825). Omit for spot/settlement risk only.Examples: fx_volatility("EUR", "USD") fx_volatility ⟨21 unchanged words⟩
{"additionalProperties":false,"properties":{"base":{"description":"Base currency, ISO 4217 (e.g. \"EUR\").","type":"string"},"horizon_days":{"anyOf" ⟨2 unchanged words⟩ {"type":"null"}],"default":null,"description":"Optional. Calendar days from today to the end of the exposure, 1-1825. A value outside that range returns an error instead of a band. Omit it for spot / settlement risk only."},"target":{"description":"Target currency, ISO 4217 (e.g. \"TRY\").","type":"string"}},"required":[" ⟨4 unchanged words⟩
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
Goods Classification⟨141 unchanged words⟩ HS code or ECCN on their shipping documentation.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") # → ⟨33 unchanged words⟩
{"additionalProperties":false,"properties":{"description":{"description":"Goods description, at least 2 characters (e.g. \"uranium centrifuge\", \"центрифуга для урана\").","type":"string"},"hs_code":{"default":"","description":"Optional known HS code (4 or 6 digits) for a direct lookup.","type":"string"},"language":{"default":"","description":"Optional hint: \"en\" or \"ru\" (auto-detected if omitted).","type":"string"}},"required": ⟨3 unchanged words⟩
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
Payment Status Codes and Stuck-Payment Playbooks⟨7 unchanged words⟩ {"type":"null"}],"default":null,"description":"Optional ISO 20022 status code (ACSP, ACCC, PDNG, RJCT, RTRN, BLCK) or reason code (e.g. G001), case-insensitive. A status code returns its investigation playbook. Omit it to list every code."}},"type":"object"}
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
HS Code Lookup⟨95 unchanged words⟩ 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 → ⟨30 unchanged words⟩
{"additionalProperties":false,"properties":{"hs_code":{"description":"HS code, 4-6 digits (e.g. \"854231\", \"8411\"). Dots and spaces are fine.","type":"string"},"jurisdiction":{"default":"","description":"Optional filter: \"US\", \"EU\", \"UK\" or \"JP\".","type":"string"}},"required": ⟨3 unchanged words⟩
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
IBAN Validation{"additionalProperties":false,"properties":{"iban":{"description":"The IBAN to check, e.g. \"DE89370400440532013000\". Spaces and hyphens are ignored and letters are upper-cased.","type":"string"}},"required":["iban ⟨2 unchanged words⟩
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
Business Day Check⟨95 unchanged words⟩ a Sunday, 2026-08-20 is a Thursday).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 ⟨5 unchanged words⟩
{"additionalProperties":false,"properties":{"check_date":{"description":"The date to check, YYYY-MM-DD (ISO 8601).","type":"string"},"country_code":{"description":"ISO 3166-1 alpha-2 country code, e.g. \"US\", \"DE\".","type":"string"}},"required":[" ⟨4 unchanged words⟩
before
—after
{"openWorldHint":true,"readOnlyHint":true}before
—after
Register for an API Key⟨69 unchanged words⟩ 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)
{"additionalProperties":false,"properties":{"accept_terms":{"description":"Must be true. Confirms acceptance of the Ohmyfin Terms & Conditions at https://ohmyfin.ai/terms.","type":"boolean"},"email":{"description":"Your email address. The verification code is sent to it.","type":"string"},"organization_name":{"description":"Your company or project name.","type":"string"}},"required":[" ⟨5 unchanged words⟩
before
—after
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false}before
—after
Verify Email and Activate API Key⟨32 unchanged words⟩ 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")
{"additionalProperties":false,"properties":{"code":{"description":"The 6-digit verification code from that email.","type":"string"},"email":{"description":"The email address you registered with.","type":"string"}},"required":[" ⟨4 unchanged words⟩
before
—after
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false}before
—after
Clearing System Cutoff Times⟨142 unchanged words⟩ 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 ⟨4 unchanged words⟩
⟨7 unchanged words⟩ {"type":"null"}],"default":null,"description":"Optional ISO 4217 code to filter by (e.g. \"USD\", \"EUR\")."},"system":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional clearing system code or name, e.g. \"T2\", \"FEDWIRE\", \"CHAPS\". Case-insensitive; \"TARGET2\" resolves to T2, its name since March 2023. Omit it to list every system or to filter by currency."}},"type":"object"}
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
Payment Method Comparison⟨54 unchanged words⟩ 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") # ⟨35 unchanged words⟩
{"additionalProperties":false,"properties":{"dest_country":{"description":"Receiving country, ISO 3166-1 alpha-2 country code (e.g. \"GB\", \"TR\").","type":"string"},"source_country":{"description":"Sending country, ISO 3166-1 alpha-2 country code (e.g. \"DE\", \"US\").","type":"string"}},"required":[" ⟨4 unchanged words⟩
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
Sanctions and Watchlist ScreeningScreen 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 300+ sanctions, designation and ⟨799 unchanged words⟩ wording, so report the BLOCK as it stands.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). subject_type: What is being screened: "bank" for a financial institution, "party" for a company or individual, or "auto" (default). A name the bank directory resolves is treated as a financial institution whatever you pass here.Examples: sanctions_screen("Acme Trading Ltd") sanctions_screen ⟨16 unchanged words⟩
⟨7 unchanged words⟩ {"type":"null"}],"default":null,"description":"Your Ohmyfin API key (prod-...). Optional here: it can be sent instead as a KEY header or an Authorization: Bearer header. What the tool requires of the key is in its description."},"name":{"description":"The person or entity name to screen.","type":"string"},"subject_type":{"default":"auto","description":"What is being screened: \"bank\" for a financial institution, \"party\" for a company or individual, or \"auto\" (default). A name the bank directory resolves is treated as a financial institution whatever you pass here.","type":"string"},"threshold":{"default":85,"description":"Minimum match score, 0-100 (default 85). Values above 95 are treated as 95.","type":"integer"}},"required":[ ⟨3 unchanged words⟩
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
Payment Arrival Estimate (Beta)⟨389 unchanged words⟩ surface to any caller with an active subscription.The estimate itself costs no credits (tracking a payment does cost credits; never describe tracking as free). Args: uetr: UETR of a tracked payment (preferred for mid-flight questions) currency: 3-letter currency (pre-trade path; ignored when uetr resolves) sender_bic: Sender bank BIC or name (pre-trade path) receiver_bic: Receiver bank BIC or name (pre-trade path) intermediary_bic: Known intermediary BIC (optional) current_status: GPI status like ACSP (pre-trade/no-uetr path only) elapsed_business_days: Business days already in flight (pre-trade path only) amount: Payment amount (improves delay-risk assessment). A plain number is fine — 50000 and "50,000.00" are both accepted. sender_country: ISO2 country of the sender bank (optional) receiver_country: ISO2 country of the receiver bank (optional) arrive_by_date: YYYY-MM-DD — switches to reverse send-by mode. You do not know today's date; a deadline stated as "the 20th" or "by month-end" must be resolved against the `today` block returned by bank_holidays / value_date / is_business_day_check, not against your own sense of the current date. A date in the past is rejected. api_key: Optional API key (internal calls ride the MCP secret)
⟨9 unchanged words⟩ {"type":"null"}],"default":null,"description":"Payment amount; it improves the delay-risk assessment. A plain number is fine: 50000 and \"50,000.00\" are both accepted."},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Your Ohmyfin API key (prod-...). Optional here: it can be sent instead as a KEY header or an Authorization: Bearer header. What the tool requires of the key is in its description."},"arrive_by_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"YYYY-MM-DD; switches to reverse send-by mode. You do not know today's date: a deadline stated as \"the 20th\" or \"by month-end\" must be resolved against the `today` block returned by bank_holidays / value_date / is_business_day_check, not against your own sense of the current date. A date in the past is rejected."},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"3-letter ISO 4217 currency, for the pre-trade path. Ignored when the uetr resolves."},"current_status":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Status code such as ACSP, for the path without a uetr only."},"elapsed_business_days":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Business days already in flight, for the path without a uetr only."},"intermediary_bic":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional BIC of a known intermediary bank."},"receiver_bic":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Receiving bank's BIC (8 or 11 characters) or bank name, for the pre-trade path."},"receiver_country":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional ISO 3166-1 alpha-2 country code of the receiving bank."},"sender_bic":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Sending bank's BIC (8 or 11 characters) or bank name, for the pre-trade path."},"sender_country":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional ISO 3166-1 alpha-2 country code of the sending bank."},"uetr":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"UETR of a tracked payment, UUID v4 (e.g. \"eb6305c8-0710-4e41-84ad-f58db3083e82\"). Preferred for a payment already in flight; see INPUT DISCIPLINE in the description."}},"type":"object"}
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
Settlement Instructions (SSI) Lookup⟨648 unchanged words⟩ subscribe to an 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") # ⟨17 unchanged words⟩
⟨7 unchanged words⟩ {"type":"null"}],"default":null,"description":"Your Ohmyfin API key (prod-...). Optional here: it can be sent instead as a KEY header or an Authorization: Bearer header. What the tool requires of the key is in its description."},"currency":{"description":"ISO 4217 currency code (e.g. \"USD\", \"EUR\", \"GBP\").","type":"string"},"swift":{"description":"BIC of the bank, 8 or 11 characters (e.g. \"DEUTDEFF\").","type":"string"}},"required":[" ⟨4 unchanged words⟩
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
Bank and BIC Directory Search⟨180 unchanged words⟩ — never one to recall from training data.The country parameter accepts both 2-letter ISO codes ("ID", "DE") and full English names ("Indonesia", "Germany"). Names are resolved automatically.A BIC IDENTIFIES AN OFFICE, NOT A BRAND ⟨206 unchanged words⟩
⟨7 unchanged words⟩ {"type":"null"}],"default":null,"description":"Optional country filter: an ISO 3166-1 alpha-2 code (\"ID\", \"DE\") or a full English name (\"Indonesia\", \"Germany\"). Names are resolved automatically."},"limit":{"default":20,"description":"Maximum number of banks to return, 1-100 (default 20). Values outside the range are clamped.","type":"integer"},"query":{"description":"Bank name, BIC, or bank name plus city (\"Commerzbank Frankfurt\"). A BIC may be 8 or 11 characters; an 11-character BIC ending in XXX is searched as its 8-character form. The 12-character address in an MT message header (BIC8 + terminal letter + branch) is not a BIC: pass its first 8 characters.","type":"string"}},"required":[" ⟨3 unchanged words⟩
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
Payment Message Reference (MT and ISO 20022)⟨98 unchanged words⟩ 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()
⟨7 unchanged words⟩ {"type":"null"}],"default":null,"description":"Optional message type, e.g. \"MT103\", \"pacs.008\", \"MT940\". Case-insensitive. Omit it to list every type."}},"type":"object"}
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
Track a Cross-Border Payment⟨464 unchanged words⟩ 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: REQUIRED. Transaction amount as sent (e.g. 15000.00). Must match the original payment amount — even small differences may prevent tracking from finding the payment, so ask the user for the exact figure rather than estimating or rounding one. currency: REQUIRED. ISO 4217 code of the currency the payment was SENT in (e.g. "USD", "EUR", "GBP"). Ask if you do not know it; do not assume the sender's or the beneficiary's home currency. date: REQUIRED. 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 ⟨250 unchanged words⟩
{"additionalProperties":false,"properties":{"amount":{"description":"Transaction amount as sent (e.g. 15000.00). Must match the original payment amount: even a small difference may stop tracking from finding the payment, so ask the user for the exact figure rather than estimating or rounding one.","type":"number"},"api_key":{"anyOf" ⟨2 unchanged words⟩ {"type":"null"}],"default":null,"description":"Your Ohmyfin API key (prod-...). Optional here: it can be sent instead as a KEY header or an Authorization: Bearer header. What the tool requires of the key is in its description."},"currency":{"description":"ISO 4217 code of the currency the payment was SENT in (e.g. \"USD\", \"EUR\", \"GBP\"). Ask if you do not know it; do not assume the sender's or the beneficiary's home currency.","type":"string"},"date":{"description":"Transaction date. Preferred format YYYY-MM-DD (ISO 8601); DD.MM.YYYY and DD-MM-YYYY are also accepted, slash-separated dates are not. Must be within the last 90 days.","type":"string"},"reference":{"anyOf" ⟨2 unchanged words⟩ {"type":"null"}],"default":null,"description":"Sender's bank reference number (MT103 field 20 / pacs.008 InstrId). Useful beside the UETR for cross-referencing, but alone it rarely produces results. Required only if uetr is not provided."},"uetr":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"UETR, UUID v4 (e.g. \"eb6305c8-0710-4e41-84ad-f58db3083e82\"). Strongly recommended: tracking without a UETR rarely returns results. It is the Unique End-to-End Transaction Reference every gpi payment carries."}},"required":["amount","currency", ⟨3 unchanged words⟩
before
—after
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false}before
—after
Payment Tracking History⟨266 unchanged words⟩ an API key with an active FI subscription.Args: uetr: UETR (UUID v4) of the payment. Strongly preferred. reference: Sender's reference (MT103 Field 20) — used when no UETR.
⟨7 unchanged words⟩ {"type":"null"}],"default":null,"description":"Your Ohmyfin API key (prod-...). Optional here: it can be sent instead as a KEY header or an Authorization: Bearer header. What the tool requires of the key is in its description."},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Sender's reference (MT103 field 20), used when there is no UETR."},"uetr":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"UETR (UUID v4) of the payment. Strongly preferred."}},"type":"object"}
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
Transfer Fee Estimate (Beta)⟨1260 unchanged words⟩ Available to any caller with an active subscription.The estimate itself costs no credits (tracking a payment does cost credits; never describe tracking as free). Args: bank_swift: Sending bank BIC (8 or 11 chars) amount: Transfer amount currency: 3-letter transfer currency charge_type: SHA (default), OUR or BEN. Ask the user rather than guessing beneficiary_bic: Receiving bank BIC; needed for a total channel: online | branch | mobile_app | any customer_segment: individual | business | financial_institution - the SENDER beneficiary_segment: individual | business | financial_institution - the party being PAID. O
{"additionalProperties":false,"properties":{"amount":{"description":"Transfer amount in `currency`, greater than zero.","type":"number"},"api_key":{"anyOf" ⟨2 unchanged words⟩ {"type":"null"}],"default":null,"description":"Your Ohmyfin API key (prod-...). Optional here: it can be sent instead as a KEY header or an Authorization: Bearer header. What the tool requires of the key is in its description."},"bank_swift":{"description":"Sending bank's BIC, 8 or 11 characters.","type":"string"},"beneficiary_bic":{"anyOf" ⟨2 unchanged words⟩ {"type":"null"}],"default":null,"description":"Receiving bank's BIC (8 or 11 characters); needed for a total."},"beneficiary_segment":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Who is being PAID: individual | business | financial_institution. Omitted, it mirrors customer_segment."},"channel":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Sending channel: online | branch | mobile_app | any."},"charge_type":{"default":"SHA","description":"SHA (default), OUR or BEN. Ask the user rather than guessing.","type":"string"},"currency":{"description":"3-letter ISO 4217 transfer currency.","type":"string"},"customer_segment":{"anyOf" ⟨2 unchanged words⟩ {"type":"null"}],"default":null,"description":"Who is SENDING: individual | business | financial_institution."},"customer_sub_segment":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The sender's tier at their bank: standard | premium | private_banking | vip."}},"required":["bank_swift","amount", ⟨3 unchanged words⟩
before
—after
{"openWorldHint":false,"readOnlyHint":true}before
—after
Value Date Calculator⟨36 unchanged words⟩ - 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. You do not know today's date — omit this argument unless the user named a specific send date. If the user's date is relative ("the 20th", "next Friday", "month-end"), read the `today` block in any response from this tool, bank_holidays or is_business_day_check and resolve against that.Examples: value_date("US", "DE") value_date ⟨15 unchanged words⟩
⟨7 unchanged words⟩ {"type":"null"}],"default":null,"description":"Base currency for FX, ISO 4217 (e.g. \"USD\"). Required when settlement_type is \"fx_spot\"."},"dest_country":{"description":"Receiver's country, ISO 3166-1 alpha-2 country code (e.g. \"DE\").","type":"string"},"from_date":{"anyOf" ⟨2 unchanged words⟩ {"type":"null"}],"default":null,"description":"Start date, YYYY-MM-DD (default: today). You do not know today's date: omit this argument unless the user named a specific send date. If the user's date is relative (\"the 20th\", \"next Friday\", \"month-end\"), read the `today` block in any response from this tool, bank_holidays or is_business_day_check and resolve against that."},"settlement_type":{"default":"wire","description":"One of \"wire\" (T+0 domestic / T+1 international, the default), \"fx_spot\" (T+1 or T+2 depending on the pair), \"sepa\" (D+1), \"sepa_instant\" (T+0).","type":"string"},"source_country":{"description":"Sender's country, ISO 3166-1 alpha-2 country code (e.g. \"US\").","type":"string"},"target_currency":{"anyOf" ⟨2 unchanged words⟩ {"type":"null"}],"default":null,"description":"Target currency for FX, ISO 4217 (e.g. \"EUR\"). Required when settlement_type is \"fx_spot\"."}},"required":["source_country","dest_country"] ⟨2 unchanged words⟩
before
—after
{"openWorldHint":true,"readOnlyHint":true}