SanctionScreen
by sanctionsscreen.io · remote · no sign-in to list tools · v1.0.0 · published by io.sanctionsscreen
Screen counterparties and enrich companies for AI agents — sanctions checks, cited sources.
2 tools: 1 change things and 1 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things1Claude Code: ask: see these tools
- Only reads1Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http sanctionscreen https://api.sanctionsscreen.io/mcp --header 'Authorization: <your-authorization>'Findings
Matches of fixed checks, with the text they matched.
The description is 3,311 characters long, over the 2,000 this check looks for.
What this check looks forMatched text
description ends: "...disposition": "clear", "matches": [], "disclaimer": "...", "generated_at": "..."}"
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
2 tools
Changes things 1Claude Code: ask
screen_counterpartyScreen a counterparty name against the indexed sanctions lists (OFAC SDN, UK FCDO consolidated).1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The description is 3,311 characters long, over the 2,000 this check looks for.
What this check looks forMatched text
description ends: "...disposition": "clear", "matches": [], "disclaimer": "...", "generated_at": "..."}"
Description, as the server wrote it Screen a counterparty name against the indexed sanctions lists (OFAC SDN, UK FCDO consolidated). What it does: normalizes the query (Unicode NFKD fold, punctuation strip, lowercase, Cyrillic/Greek transliteration; tolerant to token order e.g. "Putin Vladimir" vs "Vladimir Putin"), looks it up in the sanctions index, and returns EVERY match at low confidence or above with a per-match citation. Low-confidence matches are never hidden. Inputs: - name (required, string): full name of the person or entity. - country (optional, ISO-3166 alpha-2, e.g. "RU"): corroborates nationality/citizenship identifiers. - dob (optional, "YYYY-MM-DD"): a dob match adds +15 to the score — the strongest corroborator. - identifiers (optional, [{type, value}]): extra identifiers to check against the record, e.g. [{"type":"passport","value":"719023441"}]. - request_id (optional, string): idempotency key; safe to retry. - include_low_confidence (optional, boolean, default true): fuzzy matches (Jaro-Winkler >= 0.92) land in the low tier. Keep true — hiding low matches is a compliance liability. Output: {screening_id, disposition, matches[], disclaimer, generated_at}. - disposition: "clear" (no matches) | "potential_match" (any medium/low match) | "review_advised" (any high-confidence match — human review required before any adverse action). - Each match: {list, list_date, record_uid, matched_name, name_kind (primary|alias_strong|alias_weak), confidence (high|medium|low), confidence_score (0-100), matched_fields, citation {source, url, accessed_at}}. - Confidence math: exact primary 80 / alias_strong 70 / alias_weak 55; dob match +15. Tiers: high >= 85, medium >= 60, low >= 30. Fuzzy (JW >= 0.92) -> low tier, score 30-55. - LANGUAGE RULE: report "potential match", never "sanctioned". Screening is informational only — not a legal verdict. Every response carries the fixed disclaimer. EXAMPLE 1 — listed individual with corroborating dob: Input: {"name": "Vladimir Putin", "dob": "1952-10-07", "request_id": "demo-001"} Output: {"screening_id": "cs_scr_...", "disposition": "review_advised", "matches": [{"list": "OFAC_SDN", "list_date": "2026-09-23", "record_uid": "35096", "matched_name": "putin vladimir", "name_kind": "alias_strong", "confidence": "high", "confidence_score": 85, "matched_fields": ["name", "dob"], "citation": {"source": "U.S. Treasury OFAC SDN List", "url": "https://sanctionssearch.ofac.treas.gov/", "accessed_at": "2026-09-26T...Z"}}], "disclaimer": "Informational only — not a legal verdict. Not a substitute for due diligence. Human review required before any adverse action.", "generated_at": "2026-09-26T...Z"} EXAMPLE 2 — same person, no dob (exact alias match, medium): Input: {"name": "Vladimir Putin"} Output: {"screening_id": "cs_scr_...", "disposition": "potential_match", "matches": [{"list": "OFAC_SDN", "list_date": "2026-09-23", "record_uid": "35096", "matched_name": "putin vladimir", "name_kind": "alias_strong", "confidence": "medium", "confidence_score": 70, "matched_fields": ["name"], "citation": {...}}], "disclaimer": "...", "generated_at": "..."} EXAMPLE 3 — clear name: Input: {"name": "John Smith"} Output: {"screening_id": "cs_scr_...", "disposition": "clear", "matches": [], "disclaimer": "...", "generated_at": "..."}
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 1Claude Code: allow
enrich_companyResolve a company domain or legal name to structured company facts via the free public GLEIF LEI registry.No findings
Why it is in this group
- The description's first verb is "resolve": a word for reading.
Description, as the server wrote it Resolve a company domain or legal name to structured company facts via the free public GLEIF LEI registry. Inputs: {domain? e.g. "apple.com", name? e.g. "Apple Inc.", request_id? (idempotency)}. At least one of domain/name is required. v1 boundaries (returned honestly, never invented): - GLEIF has no domain index: domain-only lookups are best-effort (registrable-name candidates are tried). Provide the legal company name for reliable resolution. - GLEIF does not publish industry, industry_code, size_band, or employee_range: those come back null, each with a sources[] entry documenting the gap. - founded is the legal-entity creation date (GLEIF publishes no true founding date). - Unresolvable input -> tool error with code UNRESOLVABLE. Output: {company_id, legal_name, domain, industry, industry_code, size_band, employee_range, hq: {country, city}, founded, sources: [{field, source, url}], confidence, generated_at}. EXAMPLE 1: Input: {"domain": "apple.com", "request_id": "demo-e1"} Output: {"company_id": "cs_co_...", "legal_name": "Apple Inc.", "domain": "apple.com", "industry": null, "industry_code": null, "size_band": null, "employee_range": null, "hq": {"country": "US", "city": "Cupertino"}, "founded": "1980-12-12", "sources": [{"field": "legal_name", "source": "GLEIF LEI (api.gleif.org)", "url": "https://api.gleif.org/api/v1/lei-records/..."}, {"field": "industry", "source": "GLEIF LEI — field not published by GLEIF (null by design in v1)", "url": "https://api.gleif.org/api/v1/lei-records/..."}], "confidence": "high", "generated_at": "2026-09-26T...Z"} EXAMPLE 2 — unresolvable: Input: {"name": "Nonexistent Widgets Pty Ltd ZZ"} Tool error: {"code": "UNRESOLVABLE", "message": "No GLEIF LEI record matched ..."}
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http sanctionscreen https://api.sanctionsscreen.io/mcp --header 'Authorization: <your-authorization>'Run in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__sanctionscreen__enrich_company"
],
"ask": [
"mcp__sanctionscreen__screen_counterparty"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as sanctionscreen. Review it before you use it.