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.

A row surviving that cross-reference is NOT the same as a row the cross-reference supported. Each verified row carries adjudication: corroborated means the check backed it and it is a designation against this institution; not_corroborated means it survived the false-positive floor but nothing tied it to this institution — typically country_conflict: true, the designated entity being domiciled elsewhere. is_false_positive: false is only that floor test and is never a finding; read adjudication instead. When NOTHING is corroborated the response carries verification_gate.applied: true and recommended_action has been lowered from BLOCK to REVIEW: report a possible match needing identity confirmation, do not reinstate BLOCK from the row-level action fields, and do not report the institution as clear either — every row is still in matches and the open question is which legal entity the counterparty is.

verification_gate is on every bank response whose verdict asserts a finding (BLOCK, REVIEW, MONITOR or INFORM), and it asks one question: does that verdict survive the evidence this payload actually publishes. A REVIEW, MONITOR or INFORM over an EMPTY matches list is not a weaker BLOCK. This screen publishes designations only for a financial institution, so the rows that carried such a verdict are the non-designation ones (warning lists, adverse media, PEP, debarment) it withholds — counted in non_designation_rows_withheld and never listed. Those responses come back recommended_action: CLEAR with verification_gate.applied: true, meaning no DESIGNATION matched. Say exactly that, and keep the scope with it: it is never a clean bill across every list. The gate stands down, and the verdict stays, when our own verification removed a designation as a false positive (designations_filtered_as_false_positives), when the directory record is not clean, or when the row that set the verdict was off-page.

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.

The response also carries coverage_gate, set by the screening engine: how much of the name you screened actually appears on the rows that are blocking. When applied is true the payload-level recommended_action was 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 stands and reason says why. A reason of identifier_query means the name screened was a registration or tax number that matched a designation's own identifier: that is a match on identity, not on 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("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

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / subject_type
      Added value: +{
      +  "default": "auto",
      +  "type": "string"
      +}
  2. First observed

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, and it is exceptionally thorough. It discloses bank-specific behavior (designations only), the verification cross-reference logic, the verification_gate and coverage_gate semantics, how to interpret adjudication fields, and common pitfalls (e.g., not to report fixed per-jurisdiction tables, not to treat CLEAR as a clean bill). It also explains free-tier limitations. Every behavioral nuance is explicitly documented.

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 (several paragraphs) but well-structured with sections for purpose, behavior, args, and examples. It front-loads the core purpose and then layers detail. While not concise, every paragraph adds essential value given the tool's complexity, and there is no redundancy or fluff. A slight trim could be made, but the structure is logical and aids navigation.

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 exhaustive for a tool of this complexity. It covers all aspects an agent needs: free tier, coverage, subject types, verification logic, gates, reporting instructions, and examples. It references the output schema fields (lists_searched, verification, adjudication, coverage_gate) without needing to explain return format in detail since an output schema exists. Nothing essential is missing.

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?

Schema description coverage is 0%, so the description must explain all parameters. It does so in the Args section, detailing each of the four parameters (name, api_key, threshold, subject_type) with defaults, options, and edge cases (e.g., api_key can be passed via header). Examples demonstrate usage for each parameter combination. This fully compensates for the empty schema descriptions.

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

Purpose5/5

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

The description opens with a clear, specific statement of purpose: 'Screen a name against global sanctions and watchlists.' It goes on to specify the coverage (300+ lists, including OFAC, EU, UK, etc.) and distinguishes itself from sibling tools like swift_lookup by explaining when each is appropriate. The verb+resource+scope is 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 provides explicit usage guidance: when to use for banks vs. companies/individuals, when to use the free tier vs. paid, and how to report results correctly. It explicitly recommends calling swift_lookup for verified bank screening by BIC, naming the alternative tool. This leaves no ambiguity about when to invoke this tool versus others.

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.

Resources