DEV Community

Cover image for The morning an AI agent caught a sanctioned counterparty before the wire went out
Michael
Michael

Posted on • Originally published at scrapers.lat

The morning an AI agent caught a sanctioned counterparty before the wire went out

This is a story about a boring compliance task that went right, because someone spent twenty minutes wiring two Apify Actors into Claude the week before. No mocked screens, no toy data. Every registry record and sanctions hit below is a real lookup against a live source, captured from an actual chat.

The setup

Maya runs vendor onboarding at a mid-size U.S. importer. Every new supplier and trading counterparty has to clear two checks before finance is allowed to send a cent:

  1. Is the legal entity real and currently active? A name on an invoice is not proof of anything. Companies dissolve, get wound up, or never existed under the name on the paperwork.
  2. Is the party on a sanctions list? Wiring money to an entity on the U.S. Treasury's OFAC list is a federal offense with strict-liability penalties. "We didn't know" is not a defense.

For years this meant Maya kept two browser tabs open. One on the Florida Division of Corporations site (Sunbiz), one on the OFAC search page. For every counterparty she typed the name, read the record, and copied fields into an onboarding ticket. Ten vendors was an afternoon. The check was reliable only as long as she was not rushed, and onboarding is always rushed.

So the week before this story, she did something different. She wired the two data sources directly into Claude as tools, using the official Apify MCP server, and let the model do the fetching. Setting it up took one config file and a restart. (If you want the step-by-step for a single Actor, we wrote that up separately: give Claude a KYB tool with the Apify MCP server.)

The two tools she connected:

The OFAC Sanctions List Screening Scraper on the Apify Store

Both exposed to Claude through one MCP endpoint. Nothing else changed about how she works: she still opens a chat and types in plain English.

The batch

Monday morning, three new Florida vendors landed in the onboarding queue. Instead of opening tabs, Maya pasted the names into Claude and asked it to verify each one.

Claude checking three vendors against the Florida registry and flagging a dissolved shell

Two seconds of tool calls, and the picture was clear. Publix Super Markets Charities came back ACTIVE with a clean document number and named officers. Fine. But the second name, "Tesla Company LLC," came back INACTIVE. The registry showed a voluntary dissolution filed in 2005. The name matched an entity, but that entity had been wound up for two decades. It was a dead shell, not the operating supplier the paperwork implied. The third name had no exact active match at all, so Claude flagged it and asked for the exact registered legal name before going further.

This is the part that matters: a name match is not a company. The manual process caught this too, on a good day, if you read carefully. The agent caught it every time, and said why. It cited the dissolution event and the document number, so the flag was auditable, not just a gut call.

The catch

Later the same morning, a separate deal: a trading counterparty Maya hadn't dealt with before, with a deposit about to go out. Before finance released it, she asked Claude to screen the name against OFAC.

Claude screening a counterparty against OFAC and returning an SDN sanctions match

The answer stopped the wire.

The name matched ROSOBORONEKSPORT OAO, an entity on OFAC's SDN list under three sanctions programs (UKRAINE-EO13662, RUSSIA-EO14024, IRAN-CON-ARMS-EO), linked to a Russian state corporation. Claude returned the aliases, the Moscow address, the registration ID, and the specific programs, everything a compliance officer needs to escalate the match to legal with evidence attached, not just a red flag.

Nobody on the team had to remember to run this check as a separate ritual. It was one sentence in the same conversation, backed by the live Treasury list rather than anyone's memory of who is and isn't sanctioned this month.

The memo

The last step is the one that used to eat the most time: writing it all up. Maya asked Claude to consolidate the morning's screening into a single go/no-go table she could paste straight into the tickets.

Claude producing a consolidated go/no-go table with the evidence for each decision

Four counterparties, four decisions, each with the document number or the OFAC run ID it was based on. Two cleared, one on hold pending a name confirmation, one blocked. The whole thing was traceable back to an official source. An auditor reading the ticket six months later can follow every decision to its evidence.

What actually changed

Nothing about Maya's judgment moved to the machine. She still decides who to onboard and when to escalate. What moved was the mechanical part: the tab-switching, the copy-paste, the risk of skipping a check under time pressure. That is exactly the right division of labor:

  • The fetch is automated. Claude pulls the live registry record and the sanctions result on its own, the moment the conversation needs them.
  • The evidence is preserved. Every answer cites a document number or a run ID, so the output is audit-ready by default.
  • The check is consistent. The agent runs the same screening every time, whether it's vendor one or vendor fifty, at 9am or 6pm.

The dissolved shell and the sanctioned entity were both caught before any money moved. On a busy morning, with the old two-tab process, one of them might not have been.

Build the same agent

Everything in this story is reproducible today with a free Apify account and any MCP-capable client (Claude Desktop, Cursor, or your own agent):

  1. Get your Apify API token from the Apify Console under Settings → Integrations.
  2. Add the official Apify MCP server to your client and list the two Actors in the tools parameter:
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=scrapers_lat/sunbiz-florida-scraper,scrapers_lat/ofac-sanctions-scraper",
      "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode
  1. Restart the client and ask it, in plain English, to verify and screen a counterparty. It will pick the right tool for each step.

📌 Note: each tool call is a real Actor run billed to your Apify account (both are pay-per-result, a fraction of a cent per lookup). For continuous screening of thousands of parties, run the Actors on a schedule through the Apify API instead of one call per chat.

🏹 Extend it: the same pattern scales to any jurisdiction or check. Add UK Companies House, the EU Consolidated Sanctions List, or SEC EDGAR filings to the tools list, and your compliance agent covers more ground without a single line of new code.

The Actors used in this story: Sunbiz Florida Business Registry & Officers Scraper and OFAC Sanctions List Screening Scraper.

Top comments (0)