AI agents are good at reasoning and terrible at facts. Ask Claude whether "Rosoboronexport" is on the U.S. sanctions list and it will give you a confident answer from its training data that may be months or years stale, or simply wrong. For a payments-compliance or AML team, "probably not sanctioned" is not an answer you can release a wire on. A missed match is a regulatory violation; a false all-clear is a fine.
In this guide we fix that. We connect Claude to the official Apify MCP server, expose a single Actor that screens a name against the U.S. Treasury OFAC sanctions list, and turn "is this party sanctioned?" from a guess into a live lookup against the source of record. By the end you will have a working sanctions-screening tool that Claude, Cursor, or any MCP client can call during a conversation, and you will understand exactly where in the run the tool fires and what it returns.
Everything below is a real setup with real output. No mocked responses.
What is the Apify MCP server?
Model Context Protocol (MCP) is an open standard that lets AI clients call external tools. The Apify MCP server (https://mcp.apify.com) implements that standard on top of the Apify platform, which means every one of the thousands of Actors in the Apify Store becomes a tool an agent can invoke.
Why route an Actor through MCP instead of hard-coding an API call?
- The agent decides when to screen. Claude reads the conversation, notices a counterparty name it must verify, and calls the tool on its own. You do not write glue code for every question.
- Structured input and output. The MCP server hands Claude the Actor's input schema, so the model fills in the parameters correctly, and returns a clean dataset it can reason over.
-
One connection, many tools. The same MCP endpoint exposes
search-actors,fetch-actor-details, andcall-actor, so an agent can discover and run any Actor without new configuration. - No infrastructure. The server is hosted. You add a few lines to a config file and you are done.
The Actor we will use
We will expose the OFAC Sanctions List Screening Scraper (SDN). It screens a name against the U.S. Treasury Office of Foreign Assets Control (OFAC) Specially Designated Nationals (SDN) list and returns the full match record: the sanctioned party's canonical name, whether it is an individual or an entity, the sanctions programs it falls under, all known aliases (AKAs), address, website, registration identifiers, and linkage remarks.
That field set is exactly what an AML, KYC, or payments-screening check needs. The SDN list is the single most consequential U.S. sanctions list: any transaction with a party on it is blocked by law. Screening against it is public, authoritative, and mandatory for regulated institutions.
Step 1: Get your Apify API token
Sign in to the Apify Console, open Settings → Integrations, and copy your personal API token. The MCP server uses it to authenticate and to bill Actor runs to your account.
📌 Note: the token is a secret. Keep it in the client config only, never in a prompt or a committed file.
Step 2: Point Claude Desktop at the Apify MCP server
Open Claude Desktop's config file (Settings → Developer → Edit Config, or ~/Library/Application Support/Claude/claude_desktop_config.json on macOS) and add the Apify server. The tools query parameter is the important part: it tells the server which Actor to expose, so Claude gets one focused tool instead of the entire Store.
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=scrapers_lat/ofac-sanctions-scraper",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}
Cursor uses the same JSON in .cursor/mcp.json. If you prefer to run it locally over stdio instead of the hosted endpoint:
{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/actors-mcp-server", "--tools", "scrapers_lat/ofac-sanctions-scraper"],
"env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
}
}
}
Restart Claude Desktop so it picks up the new server.
Step 3: Confirm the tool is loaded
After the restart, the Actor shows up as a callable tool. If you list the tools the Apify server exposes, you will see the storage helpers plus the Actor itself, named after its Store handle:
get-actor-run, get-dataset-items, get-key-value-store-record,
abort-actor-run, scrapers_lat--ofac-sanctions-scraper
That last entry, scrapers_lat--ofac-sanctions-scraper, is our screening tool. Claude now knows it exists, what it does (from the Actor's README), and what inputs it takes (from the input schema the server passes along).
Step 4: Ask Claude to screen a counterparty
Now the payoff. In a normal chat, ask a question that requires ground truth:
"We are about to release a wire to Rosoboronexport. Screen that name against the OFAC SDN list before we proceed."
Claude recognizes it cannot answer this reliably from memory, selects the OFAC tool, and fills in the input from your question. Under the hood the client sends a tools/call with the Actor's parameters:
{
"name": "scrapers_lat--ofac-sanctions-scraper",
"arguments": {
"searchName": "Rosoboronexport",
"maxRecords": 3
}
}
The Apify MCP server starts the Actor, waits for it to finish, and returns the dataset. Here is the real run metadata it produced:
{
"runId": "KE0q52c9btp3W2tMR",
"actorName": "scrapers_lat/ofac-sanctions-scraper",
"status": "SUCCEEDED",
"matchCount": 1
}
One SDN match, live against the OFAC list.
Step 5: Read the real output
The dataset the tool returns is structured sanctions data. This is an actual record from the run:
{
"name": "ROSOBORONEKSPORT OAO",
"type": "entity",
"list": "SDN",
"programs": ["UKRAINE-EO13662", "RUSSIA-EO14024", "IRAN-CON-ARMS-EO"],
"akas": [
"ROSOBORONEXPORT JSC",
"RUSSIAN DEFENSE EXPORT ROSOBORONEXPORT",
"ROSOBORONEKSPORT OJSC"
],
"address": "27 Stromynka Ul., Moscow, 107076, Russia",
"website": "www.roe.ru",
"registrationId": "1117746521452 (Russia)",
"remarks": "Linked To STATE CORPORATION ROSTEC."
}
Claude reads that and answers in plain language: the party is a positive SDN match. The sanctioned entity is ROSOBORONEKSPORT OAO, an entity (not an individual), listed under three OFAC programs, UKRAINE-EO13662, RUSSIA-EO14024, and IRAN-CON-ARMS-EO. It also trades under the aliases ROSOBORONEXPORT JSC and RUSSIAN DEFENSE EXPORT ROSOBORONEXPORT, it is registered in Russia under ID 1117746521452, and it is linked to STATE CORPORATION ROSTEC. The agent's verdict: do not release the wire. Every one of those facts is traceable to the official OFAC record, not the model's memory, and the agent attaches the programs and evidence to the block.
The counter-example is just as important. Screen an ordinary, clean counterparty name and the same tool returns zero matches, a clear pass. That negative result is not a non-answer; it is the documented evidence a compliance file needs to show the party was screened and cleared on a specific date. An agent that can distinguish "matched, block it" from "screened, no hits, proceed" gives you both halves of the control. The model alone can produce neither with authority.
A real use case: an AML screening agent for payments
Put this in context. An AML or payments-compliance team must screen every new counterparty at onboarding and every payee before a wire is released. The obligation is absolute: if a name matches the SDN list, the payment is blocked and reported. The work is high-volume, repetitive, and unforgiving of a miss.
Without a tool, an analyst opens the OFAC search portal, types each name, reads the results, judges whether a fuzzy alias is the same party, and pastes the outcome into a case file, once per payee, all day. With the tool wired into Claude, the analyst drops the day's payee list into the chat and asks the agent to screen each name. Claude calls the Actor per counterparty, and for every hit it returns the canonical SDN name, the sanctions programs, the aliases, and the registration and linkage evidence, then flags the payment as blocked with that evidence attached. Clean names come back as documented passes. The mechanical lookup disappears; the escalation decision on a borderline match stays with the human.
This is the shape of every good agent tool: it removes the mechanical fetch, not the decision.
Going further: chain a second tool
Sanctions screening rarely stops at one list. U.S. institutions with EU exposure must also screen against the EU Consolidated Sanctions List. The same MCP connection can expose more Actors by extending the tools parameter:
https://mcp.apify.com?tools=scrapers_lat/ofac-sanctions-scraper,scrapers_lat/eu-sanctions-list-scraper
Now the agent can screen a counterparty against the U.S. OFAC SDN list and the EU Consolidated Sanctions List in the same conversation, then combine both results into one screening summary that covers both jurisdictions. Because each Actor is a separate tool, the agent picks the right one for each step, and reports a party that is clean on one list but flagged on the other, on its own.
🏹 Troubleshooting: if the tool does not appear in Claude, the two usual causes are a missing or misspelled Actor handle in the tools parameter (it must be the exact username/actor-name from the Store URL) and a config that was edited while Claude was running. Fix the handle, save, and fully restart the client.
📌 Note: each tool call is a real Actor run billed to your Apify account (this Actor is pay-per-result). For one-off screening the cost is a fraction of a cent; if you need to screen thousands of names on a schedule or rescreen your whole book against list updates, run the Actor directly through the Apify API or a scheduled task instead of one call per chat message.
Wrapping up
You now have an AI agent that can screen any counterparty against the U.S. OFAC SDN list, on demand, mid-conversation, and return the sanctions programs and evidence an AML decision actually needs, plus a documented clean pass when there is no match. The pattern is reusable: pick an Actor that returns authoritative structured data, expose it through the Apify MCP server with the tools parameter, and let the agent decide when to call it.
To take it further:
- Add the EU Consolidated list, UK OFSI, or a company-registry Actor to build a full onboarding-and-screening compliance agent.
- Screen not just the counterparty but its beneficial owners and officers in the same conversation.
- Read the Apify MCP server docs for OAuth setup, resource reads, and the
search-actors/call-actortools that let an agent discover Actors it was not preconfigured with.
The Actor used in this guide: OFAC Sanctions List Screening Scraper (SDN).


Top comments (0)