The 4-Gate Agent Payment Protocol™
Four gates stand between your agent and a $377,700 fine.
Your agent runs all four in under 100 ms, or it runs none of them.
This is the whole method, given away. No signup, no email, no video. If you implement it yourself against your own data, that is a win for the same reason we ship under an MIT licence — an agent economy where nobody screens is worse for us than one where everybody does.
The one thing. If your agent can move money, the only question that matters is whether it screened the counterparty before the transfer was signed. Not whether you meant to. Not whether your rail is reputable. Not whether a human would have caught it. OFAC liability is strict: intent is irrelevant, and there is no automation exemption. Everything else on this page is a consequence of that one sentence.
Why four gates and not one check
A single sanctions lookup answers one question: is this counterparty on the list right now? That is necessary and it is not sufficient. Three things go wrong around it, and each one has cost somebody a penalty:
- The screen ran, said
false, and the agent paid anyway — because the check was advisory rather than blocking, or because the call errored and the code failed open. - The counterparty was not listed, but the payment was obviously anomalous — a wallet created yesterday receiving forty times the agent's usual amount — and nothing was watching for that.
- Everything worked, and eighteen months later nobody could prove it. A compliance program you cannot evidence is, to a regulator, the same as no compliance program.
SCREEN answers the first question. SCORE catches what the list cannot know. STOP makes the answer binding. STAMP makes it provable. They run in that order for a reason: scoring a payment you have not screened tells you nothing, and stopping is worthless if nothing recorded why. Drop any one gate and the other three stop being worth much.
Three things that have to be true first
1. Your payment rail is never going to do this for you
The story. Test #47 of an agent built to pay invoices sent USDC to a wallet its author did not recognise. Screened after the fact against the SDN list, it was there. The agent had done nothing wrong by its own logic — it saw pay invoice #4021 and paid it, and it would have done that at 3 AM, repeatedly, until somebody noticed.
The strategy. x402, AP2, ACP and Coinbase AgentKit are settlement layers. They move value between addresses and they are good at it. Screening a recipient against a government list is a different job with a different data dependency and a different liability owner — you. No rail has announced plans to take it on, and the incentives do not point that way: a rail that screens inherits the liability for screening wrong.
The proof. Read their docs. None of them mention OFAC, SDN or sanctions in the payment path. Then read /health, which tells you exactly which lists we hold, how many entries are in each, and when they were last fetched.
2. You do not need a compliance team to do this
The story. The instinct after finding a sanctioned counterparty is to go and hire the problem away — a consultant, a policy document, a quarterly review. All of which is real compliance work, and none of which runs at 3 AM inside a loop that is signing transfers.
The strategy. The minimum viable compliance program for an autonomous payment agent is four HTTP calls and a log file. Screen the recipient. Refuse on a match. Score the anomalies. Keep the receipt. The playbook writes all four out as runnable patterns, including the one everybody gets wrong — what your code does when the screening call itself fails.
The proof. One line, no key, no signup:
curl "https://sanctionsai.dev/sanctions?wallet=0x098B716B8Aaf21512996dC57EB0615e2383E2f96"That address is on the real OFAC SDN list. You will get "clean": false back in under 100 ms. That is the entire integration, and you just did it.
3. You do not need procurement, a contract, or a budget
The story. The established vendors were the obvious first stop. The SDK wanted a key. The key wanted a sales call. The call wanted a procurement cycle, and the cycle wanted a budget that did not exist for an agent still on test #47. Every one of those steps is reasonable for a bank buying an investigations platform. None of them is survivable for a developer shipping this month.
The strategy. Compliance that speaks the agent's own protocol, pays its own way per call, and costs less than the transaction fee. Free tier with no key at all. $0.05 a check over x402 if your agent would rather pay than sign up. MIT licence if you would rather run it yourself and never talk to us again.
The proof. You have already run a production screen against the live SDN list without creating an account. Nothing about that flow has a sales call in it.
The four gates
Each gate below states what it does, what failing it looks like in production, and the exact call. No gate is optional; a payment that skips one has not passed the protocol.
Every counterparty is checked against 947 OFAC-listed crypto addresses, 19,218 SDN names and 16 comprehensively sanctioned jurisdictions before the transfer is signed. Wallet matches are exact. Name matches carry a confidence score so you can set your own review threshold.
Failing it looks like: The screen runs after the payment, as part of a nightly reconciliation job. It tells you accurately, the following morning, that you have committed a violation.
curl "https://sanctionsai.dev/sanctions?wallet=$ADDR"The SDN list cannot tell you that an agent which has moved $40 all month is suddenly sending $9,000 to an address created yesterday. risk_score weighs amount anomalies, rail risk and category exposure and returns allow, review or decline.
Failing it looks like: A newly created address, never listed and never will be, drains the agent's float in a single transfer. Nothing was on any list, so nothing fired.
curl -X POST "https://sanctionsai.dev/risk" -d '{"amount":9000,"rail":"x402"}'This is the gate people skip, and it is the one that matters. A screening result that the payment path can proceed past is telemetry, not a control. On a match, the transfer is never signed — no override, no confirmation dialog, no retry loop that eventually succeeds.
Failing it looks like: The check is wired as a warning log. It fired correctly on the night it mattered and the payment went out anyway, because nothing was listening.
if not r["clean"]: raise HaltPayment(r["matches"])Every screen returns a timestamped, exportable compliance receipt: what was checked, against which list version, at what moment, with what result. Under OFAC's Enforcement Guidelines a documented compliance program is an explicit mitigating factor, and a qualifying voluntary self-disclosure can roughly halve the base penalty. Both require records.
Failing it looks like: Everything worked and none of it was kept. You are asked what you screened on 14 March and the honest answer is that you believe you screened it.
store(response) # the full JSON body, including its timestampSCREEN → SCORE → STOP → STAMP. Four gates, well under a tenth of a second of agent time, zero exceptions. Implement it against our API, against a competitor, or against your own copy of the SDN list — but implement it.
Audit your agent
Four questions. Answer them about the code that is in production right now, not the code you intend to write.
Nothing here is submitted or stored — it runs entirely in your browser.
What it costs to close all four gates
Our own published prices, so you can check the arithmetic:
$500 is not an invented anchor — it is what 10,000 checks cost at the per-call price this site charges today, on the pricing page. The free tier is 5 screens a day with no key and no expiry, and it closes gate one for a great many agents.
The first agent-driven OFAC enforcement has not happened yet
When it does, this stops being a design choice. Every serious agent framework will ship a screening step, the way every HTTP client eventually shipped TLS verification, and the people who were already doing it will not have to explain anything to anybody.
Until then it is one HTTP call that you have, at this point, already made.
Cancel anytime · $10,000 screening guarantee · MIT licensed, so you can leave and keep running it.