Skip to main content
Glama

sanctions_screen

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 300+ sanctions, designation and watchlists worldwide, including US OFAC (SDN and non-SDN), EU, UK OFSI, Canada, Switzerland, Australia, New Zealand, Japan, Israel and national lists. Returns matching entities with similarity scores. The response says how many lists were actually searched (lists_searched); report THAT, and do not present a fixed per-jurisdiction table of "clear" rows, which asserts a per-list result the screen does not return and understates the coverage.

For a company or an individual the screen covers every list, including adverse media, PEP and debarment registers. For a BANK or other financial institution it returns sanctions DESIGNATIONS only: a warning-list entry naming a bank is usually a clone-firm alert about fraudsters impersonating it, and the feed carries nothing that tells the two apart.

When the name resolves in our bank directory, each designation is also cross-referenced against that institution's record (country, entity type, and the name or ALIAS that earned the fuzzy score) and contradicted rows are removed. ALWAYS read the verification block, which is on every response: applied: false means nothing was cross-referenced and the rows are raw feed output — either the name is not in our bank directory, or the subject is a company or individual, which has no directory record to check against. Never report an applied: false result as verified, and never report an empty one as verified-clear. Screening a bank by BIC, or calling swift_lookup, gets a verified answer.

On an unverified response every row also carries query_match, listing which of the screened words appear in that row's own name or aliases and which do not. Nothing is removed on account of it. Weigh it against the score: a row sharing one word out of four with the query is usually a different entity, and its action is that entity's action, not a verdict on the party screened. Absence is not proof — non-Latin aliases contribute no words, and a transliterated designation of the right party can show words missing — but where every query word is present, take the row at face value.

On a COMPANY or INDIVIDUAL screen the response also carries coverage_gate. It is the same question asked once for the whole payload: how much of the name you screened actually appears on the rows that are blocking. When applied is true the payload-level recommended_action has been lowered from BLOCK to REVIEW, because no blocking row carries more than half of the distinctive words you screened — report a possible match that needs identity confirmation, NOT a designation, and do not reinstate BLOCK from the row-level action fields. Nothing was removed: every row the feed returned is still in matches, with its own score and action intact. When applied is false the verdict is exactly what the feed set.

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("John Smith", threshold=90) sanctions_screen("First Abu Dhabi Bank", subject_type="bank") sanctions_screen("Acme Trading Ltd", api_key="prod-abc123...")

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYes
api_keyNo
thresholdNo
subject_typeNoauto

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

TDQS

A4.9/5.0
Behavior5/5

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, and it delivers extensively: free-tier limits, special bank handling, the verification block semantics, the coverage_gate mechanism, query_match meaning and limits, and precise instructions on what not to report. It also discloses that nothing is removed from matches when coverage_gate lowers the action.

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

Conciseness4/5

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

The description is long, but the tool is genuinely complex with multiple caveats (bank vs company behavior, verification, coverage_gate, query_match). It is clearly structured with paragraphs, Args, and examples. A few sentences are somewhat redundant or could be tightened, but overall each section earns its place for such a nuanced tool.

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

Completeness5/5

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

The description is exceptionally complete given the tool's complexity: it covers API key behavior, thresholds, subject types, response fields, verification semantics, reporting guidelines, and edge cases. Even though an output schema is present, the description adds crucial context about how to interpret fields (lists_searched, verification, coverage_gate, query_match) that a schema alone could not convey.

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

Parameters5/5

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

Despite 0% schema description coverage, the description fully documents each parameter in the Args section: name, api_key (with alternative header passing and optionality), threshold (with default), and subject_type (with allowed values and 'auto' behavior). It even adds real-world semantics like 'a name the bank directory resolves is treated as a bank whatever you pass.' This goes far beyond the bare schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Screen a name against global sanctions and watchlists.' It immediately distinguishes the tool's scope (300+ lists worldwide, bank-specific behavior) from sibling tools like export_controls_screen. The resource and action are unambiguous.

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

Usage Guidelines5/5

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

The description explicitly states when to use the tool and when not to: it names swift_lookup as the alternative for verified bank answers, explains that banking BIC screening gets a verified result, and warns against reporting unverified results as verified. It also gives clear behavioral context about free tier vs paid usage.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.3/5.0
Disambiguation4/5

Most tools have distinct purposes, but some overlapping areas (goods_classify vs hs_code_lookup vs eccn_lookup; fx_rate vs fx_rate_history vs fx_volatility) require close reading of descriptions to select correctly. The detailed descriptions help, but the shear number of lookup tools creates mild ambiguity.

Naming Consistency3/5

Names mix verb-first (track_payment, mcp_verify) and noun-first patterns (iban_validate, fx_rate, ssi_lookup), with some phrase-like names (banks_using_correspondent, is_business_day_check). While readable, there is no single consistent convention.

Tool Count3/5

33 tools is heavy, but the server's broad scope (payments, FX, sanctions, export controls, company registries, SWIFT) justifies most of them. A few marginal tools (mcp_register, mcp_verify, company_search_result) add bulk without core value.

Completeness5/5

The tool set covers the payment lifecycle end-to-end: tracking, settlement, FX, compliance, sanctions, and company due diligence. There are no obvious dead ends; the tools chain together via next_steps and search_id flows.

Resources