OFAC Sanctions Intelligence MCP
Pricing
$3.00 / 1,000 result item returneds
OFAC Sanctions Intelligence MCP
Real-time OFAC SDN sanctions screening for AI assistants, compliance workflows, and KYC pipelines.
Pricing
$3.00 / 1,000 result item returneds
Rating
0.0
(0)
Developer
Andrew Avina
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
ofac-sanctions-mcp
Real-time OFAC SDN sanctions screening for AI assistants, compliance workflows, and KYC pipelines.
What Is This?
The US Treasury Office of Foreign Assets Control (OFAC) maintains the Specially Designated Nationals (SDN) list — a roster of individuals, companies, vessels, and aircraft that US persons and businesses are legally prohibited from transacting with. The list currently contains over 13,000 designated entries across dozens of sanctions programs: IRAN, RUSSIA, CUBA, DPRK, SDGT (global terrorism), UKRAINE-EO13661, VENEZUELA, SYRIA, BELARUS, and many more.
Every financial institution, fintech company, law firm, e-commerce platform, and business that touches US dollars must screen counterparties against the SDN list before transacting. Failure to comply carries civil penalties of up to $1 million per violation and potential criminal liability. Most companies either pay $10,000–$50,000/year for enterprise sanctions screening platforms or manually query the OFAC website — which provides no API and no programmatic access.
This actor downloads the official OFAC SDN list XML at startup, parses all 13,000+ entries into structured records with names, aliases, programs, addresses, and ID numbers, and exposes three MCP tools for real-time search and fuzzy-match screening. In MCP server mode, an AI assistant like Claude can screen any entity in milliseconds without leaving the conversation. In batch mode, push results to a dataset for pipeline integration.
No API key required. The OFAC SDN list is a public US government publication.
Who Uses This
Fintech Compliance Teams
You're building a KYC onboarding flow and need to screen every new user against the SDN list before account approval. This actor's screen_entity tool returns fuzzy match scores so you can build risk-tiered review queues — exact matches get auto-rejected, partial matches go to manual review, clean results get auto-approved. Integrate via MCP into your AI-assisted compliance workflow.
AML/BSA Officers at Banks and Credit Unions
You're reviewing a wire transfer to an entity with an ambiguous name. You need to know if "Mahan Air Cargo LLC" appears on the SDN list under any program, with any alias variation. The screen_entity tool runs a similarity search across all 13,000 entries and returns scored matches in under a second — faster than logging into the OFAC website.
Legal Due Diligence Teams at Law Firms You're advising on an M&A transaction and need to screen the target company's principals, board members, and major shareholders against OFAC. This actor processes a batch of names in sequence and returns structured results you can attach to your due diligence memo. Integrate into a Claude workflow for automated first-pass screening.
Venture Capital and Private Equity Firms
Before wiring a capital call or closing an investment, screen the LP list and investment target executives against OFAC. A sanctioned LP or founder creates instant regulatory exposure. One call to screen_entity per name, results logged to your dataset, review flags surfaced to your compliance officer.
E-Commerce and Marketplace Platforms
You need to screen sellers, buyers, and payment recipients before processing transactions. The search_sanctions tool can check a company name or vessel name against the full SDN list in real time, returning matches with their programs, aliases, and listed addresses for manual review.
Investigative Journalists and Policy Researchers
You're tracking which Russian oligarchs are on the OFAC list and what assets they have designated. Filter by program RUSSIA to get all designated Russian entities. Filter by type vessel to see all sanctioned ships. Filter by type aircraft to see all blocked planes.
Key Features
| Feature | Detail |
|---|---|
| Data source | Official OFAC SDN list XML — US Treasury (public domain) |
| Dataset size | 13,000+ SDN entries across all programs |
| Coverage | Individuals, entities, vessels, aircraft |
| Programs | IRAN, RUSSIA, CUBA, DPRK, SDGT, UKRAINE, VENEZUELA, SYRIA, BELARUS, and 40+ more |
| Search | Substring keyword search across names, aliases, remarks, title |
| Fuzzy screening | SequenceMatcher similarity scoring (0.0–1.0) across all names and aliases |
| Filters | Entity type, sanction program, keyword |
| Screening results | POSSIBLE_MATCH (≥85% similarity), PARTIAL_MATCH (≥75%) |
| MCP server mode | Live tool-use in Claude Desktop, Claude Code, any MCP client |
| Batch mode | One-shot runs with dataset output |
| No API key | OFAC data is public — no registration or credentials required |
| XML parsing | Built-in Python xml.etree.ElementTree — no external XML dependencies |
Quick Start
Batch Mode — Screen a Single Name
Input:
{"screenName": "Vladimir Putin","limit": 20}
Output:
[{"uid": "6315","name": "PUTIN, Vladimir Vladimirovich","type": "individual","programs": ["UKRAINE-EO13661", "RUSSIA-EO14024"],"aliases": ["ПУТИН, Владимир Владимирович"],"addresses": ["Moscow, Russia"],"similarity_score": 0.891,"is_match": true,"screening_result": "POSSIBLE_MATCH","source": "ofac_sdn_list"}]
Batch Mode — Search by Program
Input:
{"program": "IRAN","entityType": "entity","limit": 25}
Output:
[{"uid": "4151","name": "BANK MELLI IRAN","type": "entity","programs": ["IRAN", "IFSR"],"aliases": ["MELLI BANK", "NATIONAL BANK OF IRAN"],"addresses": ["Tehran, Iran", "Dubai, United Arab Emirates"],"uid": "4151","source": "ofac_sdn_list"},...]
MCP Server Mode
Claude Desktop (claude_desktop_config.json):
{"mcpServers": {"ofac-sanctions": {"command": "npx","args": ["apify-actor-mcp","--actor-id", "your-username/ofac-sanctions-mcp","--token", "apify_api_YOURTOKEN"]}}}
Then ask Claude: "Screen 'Mahan Air' against the OFAC SDN list and tell me what programs it's designated under."
MCP Tools Exposed
search_sanctions
Search the OFAC SDN list by name/keyword, entity type, or sanction program. Returns matching entries with full metadata.
Arguments:
| Field | Type | Required | Description |
|---|---|---|---|
query | string | No | Name or keyword to search across names, aliases, remarks |
entity_type | string | No | Filter: individual, entity, vessel, aircraft |
program | string | No | Filter by program: IRAN, RUSSIA, CUBA, DPRK, etc. |
limit | integer | No | Max results (default 20, max 200) |
Example call:
{"name": "search_sanctions","arguments": {"query": "Hezbollah","entity_type": "entity","limit": 10}}
get_sanction_programs
List all active OFAC sanction programs with entity counts. No arguments required.
Example response:
[{"program": "SDGT", "entity_count": 1847},{"program": "IRAN", "entity_count": 1203},{"program": "RUSSIA", "entity_count": 987},{"program": "DPRK", "entity_count": 412},{"program": "CUBA", "entity_count": 389},{"program": "UKRAINE-EO13661", "entity_count": 267},...]
screen_entity
Fuzzy-match a name against the entire SDN list using string similarity. Returns scored matches with screening result classification.
Arguments:
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Full name of person or entity to screen |
threshold | number | No | Minimum similarity score 0.0–1.0 (default 0.75) |
Screening results:
POSSIBLE_MATCH— similarity ≥ 0.85 (high confidence, requires immediate review)PARTIAL_MATCH— similarity 0.75–0.84 (moderate confidence, flag for review)- No result — similarity < threshold (clean)
Example call:
{"name": "screen_entity","arguments": {"name": "Bank Melli Iran","threshold": 0.80}}
Input Schema
| Field | Type | Default | Description |
|---|---|---|---|
query | string | "" | Keyword search across names, aliases, remarks |
entityType | string | "" | Filter: individual, entity, vessel, aircraft |
program | string | "" | Sanction program filter (IRAN, RUSSIA, CUBA, etc.) |
screenName | string | "" | Run fuzzy screening for this name (takes priority over query) |
limit | integer | 50 | Max results in batch mode (max 500) |
serveMcp | boolean | false | Start MCP server instead of batch run |
Use Case Recipes
Recipe 1: Automated KYC Name Screening Pipeline
Screen a list of new user names from your onboarding queue:
Step 1 — Run batch actor with screenName set to each user's full name.
Step 2 — Check screening_result field: POSSIBLE_MATCH → auto-reject, PARTIAL_MATCH → queue for manual review, null → auto-approve.
Step 3 — Log results to your compliance audit trail.
Input:
{"screenName": "Ali Hassan Al-Moayad","limit": 20}
Recipe 2: Russia Sanctions Intelligence Brief
Get a full list of designated Russian entities for executive briefing:
{"program": "RUSSIA","entityType": "entity","limit": 500}
Combine with UKRAINE-EO13661, UKRAINE-EO13685, and RUSSIA-EO14024 program filters to capture all Russia-related designations.
Recipe 3: Vessel Sanctions Check for Shipping
Before accepting a cargo booking, screen the vessel name:
{"screenName": "EVER GIVEN","entityType": "vessel"}
Returns any vessel by that name (or similar) on the SDN list with IMO numbers, flag state, and programs.
Recipe 4: Counterparty Due Diligence for M&A
Screen all named executives in a target company's SEC filing:
{"query": "Kim Jong","entityType": "individual","limit": 50}
Run once per principal. Use threshold: 0.85 in screen_entity for conservative screening.
Recipe 5: Global Terrorism (SDGT) Research
Get all entities designated under the Specially Designated Global Terrorist program:
{"program": "SDGT","limit": 500}
Connecting to Claude Desktop / Claude Code
macOS Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{"mcpServers": {"ofac-sanctions": {"command": "npx","args": ["apify-actor-mcp","--actor-id", "your-username/ofac-sanctions-mcp","--token", "apify_api_YOURTOKEN"],"env": {}}}}
Windows Claude Desktop (%APPDATA%\Claude\claude_desktop_config.json):
Same JSON as above.
Claude Code (project .claude/settings.json):
{"mcpServers": {"ofac-sanctions": {"command": "npx","args": ["apify-actor-mcp", "--actor-id", "your-username/ofac-sanctions-mcp", "--token", "apify_api_YOURTOKEN"]}}}
Cursor / Windsurf / any MCP client:
Point at the running actor's URL: http://<run-url>:4321
GET /mcp/tools— list available toolsPOST /mcp/call— invoke a tool with{"name": "...", "arguments": {...}}
Data Source and Legal Notes
- Source: US Treasury Office of Foreign Assets Control (OFAC) —
https://www.treasury.gov/ofac/ - File: SDN List XML (
sdn.xml) — downloaded fresh at each actor startup - Update frequency: OFAC publishes SDN list updates irregularly — sometimes multiple times per day during active designation periods. This actor fetches the list fresh on each run, so batch runs reflect the current list.
- Legal disclaimer: This actor provides informational access to public OFAC data. It is not a substitute for a certified compliance screening system. Organizations with regulatory sanctions screening obligations should consult qualified legal counsel and use certified screening solutions for their primary compliance programs. Results from this actor should be used as supplemental intelligence only.
- Public domain: The OFAC SDN list is a US government publication in the public domain — no license or attribution required.
Technical Architecture
The actor operates in two modes controlled by the serveMcp input flag:
Batch mode (default):
- Download SDN XML from
https://www.treasury.gov/ofac/downloads/sdn.xml(~5MB) - Parse all
<sdnEntry>elements using Python's built-inxml.etree.ElementTree - Build in-memory list of 13,000+ structured dicts
- Apply filters (query / type / program) or run fuzzy screen
- Push results to Apify default dataset
- Store program summary in key-value store
MCP server mode:
- Same download and parse as batch
- Start async HTTP server on port 4321
- Expose
/mcp/tools(GET) and/mcp/call(POST) - Push first 100 entries to dataset for inspection
- Run until actor is stopped (max 24h)
Fuzzy matching algorithm:
Uses Python's difflib.SequenceMatcher for O(n) similarity scoring across all 13,000 entries and their aliases. For a single name screen, this completes in under 200ms in-memory. No external fuzzy-match libraries required.
XML namespace handling: OFAC SDN XML may include a namespace URI. The parser auto-detects the namespace from the root tag and applies it consistently to all child element queries — no hardcoded namespace strings that would break on format changes.
Pricing
| Volume | Price |
|---|---|
| First 1,000 results | $0.25 |
| 1,001 – 50,000 results | $0.20/1k |
| MCP server (per session-hour) | Metered by result count |
ROI context: Enterprise sanctions screening platforms (Dow Jones, Refinitiv World-Check, LexisNexis) cost $20,000–$100,000/year. A single compliance analyst spending 30 minutes per counterparty on manual OFAC checks costs $75/hr × 0.5hr = $37.50 per check. This actor returns the same information in under 2 seconds.
Support
- Issues: File a GitHub issue on the actor repository
- Apify Community: community.apify.com
- OFAC official source: treasury.gov/ofac
- OFAC SDN Search (manual): sanctionssearch.ofac.treas.gov
- Enterprise compliance: Contact via Apify actor page