fairquery-sanctions-screener
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| APIFY_TOKEN | No | Optional Apify API token. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| screen_namesA | WHAT: Fuzzy-match people or organisation names against the OFAC SDN, OFAC Consolidated (non-SDN), EU, UK and UN sanctions lists, from the official sources (cached in your Apify account for at most 6 h, otherwise re-downloaded; each row reports list publication dates). Order-, case- and diacritics-insensitive; optional country and date-of-birth filters per name. WHEN TO USE: KYC/KYB onboarding, vendor or counterparty checks, bulk re-screening of customer lists. Put all names into one call (lists are downloaded once per run). WHEN NOT TO USE: to see which lists/authorities are covered or to cite sources, call list_sources (free); to see how fresh the cached lists are, list_cache_status (free). Not a PEP or adverse-media check (see LIMITS). COST: paid. Runs Apify Actor fairquery/sanctions-watchlist-screener with your APIFY_TOKEN; pay-per-event "name-screened": $0.003 per name that gets a screening row, match or no match, plus a $0.007 start fee per call (one run); nothing is charged per name if no list could be loaded, and error rows are free. 200 names in one call ~ $0.61. Lists load in ~2-5 s from a cache in your Apify account (at most 6 h old) or ~10-40 s when re-downloaded, then hundreds of names/s. RETURNS: one type="screening" row per name (status potential_match | no_match; matches[] best first, each with list, entry id, score, country_match and dob_match) or free type="error" rows (code, message). EXAMPLE: {"queries":[{"name":"Banco Nacional de Cuba","entityType":"entity"}],"minScore":90} -> one screening row, status potential_match with OFAC_SDN matches. PARAMETERS: names and/or queries: at least one is required although the schema marks both optional (neither -> a free INPUT_EMPTY error row); both may be combined and every entry is billed once, so send all names in ONE call (one start fee and one list load per run). Use names for bare strings and queries when you have per-name country / dateOfBirth / entityType or want your own id echoed. Per query, dateOfBirth drops listed individuals whose recorded birth year differs by more than 1 year (entries without a DOB are kept); country only sets country_match (true/false/null) unless excludeNonMatchingCountry=true, which then drops matches whose listed countries exclude it (entries without country data are kept). entityType: a query's own value wins over the top-level one; "entity" means anything that is not an individual (organisations, vessels, aircraft), and list entries of unknown type always pass. lists: omit for all five; a list whose download fails is reported in lists_unavailable rather than failing the run. minScore: a candidate is returned only if its 0-100 name similarity is >= minScore; it does not change the price - 85 default, 90-95 for large batches with fewer false positives, 75-80 for transliterated names. maxMatchesPerName trims matches[] (best first) but match_count still counts all. LIMITS: Not a certified screening service. Automated fuzzy matching against public lists downloaded at run time; results can contain false positives and miss matches. Review every potential match manually and consult official sources and legal counsel before acting. |
| list_sourcesA | WHAT: Static list of the official sanctions lists screen_names checks (id, name, issuing authority, download URL), the 0-100 score scale and the legal disclaimer. WHEN TO USE: to choose the lists parameter for screen_names, cite sources in a report, or explain coverage. WHEN NOT TO USE: to screen a name - use screen_names. For how fresh the cached lists are, list_cache_status (free). Does not download lists. COST: free; local, no network, no APIFY_TOKEN. (screen_names is paid per name.) RETURNS: sources[].id is the value for screen_names lists; score_scale explains minScore. PARAMETERS: None; the result is static and cannot be filtered. EXAMPLE: call with {}, then pass the ids you need to screen_names, e.g. {"names":["Acme Trading LLC"],"lists":["OFAC_SDN","UN"]} to screen only the US SDN and UN lists. |
| list_cache_statusA | WHAT: Show, per list (OFAC_SDN, OFAC_CONS, EU, UK, UN), whether a parsed copy is cached in your Apify account, when it was downloaded from the official source, the source publication date, entry count, and whether the next screen_names run will reuse it or re-download it. WHEN TO USE: before a large or time-critical screen_names batch (to know whether lists load in ~2-5 s or 10-40 s), or to state in a report how current the screened lists were. WHEN NOT TO USE: to screen names (screen_names, paid) or to list covered sources and their URLs (list_sources, free, no token). Does not refresh the cache; the next screen_names run does that. BEHAVIOR: GET requests to the Apify API only (your user, the key-value store "fairquery-sanctions-list-cache", one small record per list); never writes. Typically <1 s; up to ~3 s when the Actor has not yet written per-list meta records and the cached lists themselves (~1.6 MB gzip in total) are read instead. COST: free; needs your APIFY_TOKEN (the cache lives in your account) but starts no Actor run and charges no event. RETURNS: one status object; lists[] in the order above plus fresh / stale / missing summaries and a next_run sentence; Errors: APIFY_TOKEN_MISSING, APIFY_TOKEN_INVALID, APIFY_API_FAILED (retryable). PARAMETERS: maxAgeHours sets the freshness window used for fresh (default 6, the window screen_names runs use; the Actor never accepts more than 12). A list is fresh only if it was downloaded at most maxAgeHours ago and is non-empty; stale lists are never used for screening, they are re-downloaded. store_found=false means no screen_names run has cached anything in this account yet, so all five lists are missing. read_from says whether a small meta record or the cached list itself was read. EXAMPLE: {} -> {"store_found":true,"lists":[{"list":"OFAC_SDN","cached":true,"fresh":false,"fetched_at":"2026-10-17T19:15:36Z","age_hours":21.27,"published_at":"2026-10-15T16:34:34Z","entries":19457,...},...],"stale":["OFAC_SDN","OFAC_CONS","EU","UK","UN"],"next_run":"OFAC_SDN, ... would be re-downloaded ..."} |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 3 tools
Each tool has a single distinct purpose: screen_names performs paid screening, list_sources returns static source metadata, list_cache_status reports cache freshness. The descriptions even cross-reference each other with explicit 'WHEN NOT TO USE' pointers, eliminating misselection.
All three names follow a consistent snake_case verb_noun pattern (screen_names, list_sources, list_cache_status). The shared 'list_*' prefix for the two informational tools and 'screen_*' for the action makes the grouping immediately legible.
Three tools is slim, but the domain is a single screening operation plus two genuinely useful free helpers (source coverage, cache freshness). Each earns its place with no filler, though the surface is minimal for a paid service.
The core screening lifecycle is covered: run the screen, discover supported lists and their IDs, and check cache freshness before batch runs. Minor gaps remain (no way to force-refresh the cache, no async job/status retrieval for very large batches, no PEP/adverse-media coverage), but these are disclosed and workaroundable.