A pre-payment risk check for your agent or system
The same address-risk logic we use ourselves, as a free API: no signup, CORS-enabled, returns verifiable evidence. Drop it into your system or an AI agent's pre-settlement flow — ask 'is this counterparty safe?' before paying.
No signup · free
CORS enabled
Evidence, not just a score
/api/riskSingle address
Screen one payee before paying: sanctions / mixer / our risk list, or high-risk on-chain signals? Returns a verdict plus verifiable evidence.
curl "https://oceanalt.com/api/risk?addr=0x8589427373D6D84E98730D7795D8f6f8731FDA16&network=ethereum"{
"address": "0x8589...FDA16",
"verdict": "risky", // risky | caution | clear
"risk": 100, // 0-100
"blocked": true, // 网关是否会拦下 / gateway blocks?
"signals": ["混币器合约"],
"evidence": [ // 可点开核验的证据 / verifiable
{ "label": "命中 mixer 名单", "detail": "Tornado Cash",
"url": "https://etherscan.io/address/0x8589..." }
],
"advice": "Decline. ...",
"standard": "https://oceanalt.com/en/rap"
}/api/risk/batchBatch screening
Screen many addresses at once (deduped, up to 25). For OTC desks / batch jobs. Sorted risky → caution → clear.
curl -X POST "https://oceanalt.com/api/risk/batch" \
-H "content-type: application/json" \
-d '{"addresses":["0x8589...","TWd4...","T..."]}'{
"summary": { "total": 3, "risky": 1, "caution": 0, "invalid": 1 },
"results": [
{ "address": "0x8589...", "verdict": "risky", "risk": 100,
"blocked": true, "top": "混币器合约" },
{ "address": "TWd4...", "verdict": "clear", "risk": 3,
"blocked": false, "top": "有历史活动" }
]
}/api/risk/flowFund-flow (Tron + EVM)
For a Tron USDT address: top-8 counterparties by amount, first USDT inflow, Tether-frozen counterparties, and bridge detection. EVM (ethereum/base/polygon/arbitrum/optimism, pass network) returns USDT/USDC counterparties + bridge detection.
curl "https://oceanalt.com/api/risk/flow?addr=TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb"{
"chain": "tron",
"total": 10000,
"inbound": [ { "address": "T...", "tag": "Binance-Hot",
"count": 17, "usdt": 2890000, "risky": false } ],
"outbound": [ { "address": "T...", "tag": "OKX Hot",
"count": 25, "usdt": 3370000, "risky": false } ],
"firstInflow": { "from": "T...", "usdt": 500, "date": "2024-06-01" },
"riskyParties": 0
}What the verdict means
- risky — Sanctions / mixer / our risk list, or high-risk on-chain → decline.
- caution — Risk signals present → proceed only within your mandate.
- clear — No risk signal. Note: absence of evidence ≠ proof of safety.
Supported networks
7 EVM chains + Tron + Solana. Sanctions / mixer / scam checks are chain-agnostic; on-chain signals and issuer (USDT/USDC) freeze are queried live per chain, each verifiable.
ethereum·base·bsc·polygon·arbitrum·optimism·avalanchetron(USDT-TRC20 freeze / deep trace / fund-flow) ·solana(sanctions list)
x402 paid tier (pay-per-call · no signup, no key)
Heavier analysis via x402: HTTP 402 → sign one USDC authorization → 200. The facilitator verifies, pays gas, and never custodies your funds. One line with the oceanalt-aml SDK, or any x402 client.
-
/api/x402/decision— full gateway verdict (allow/review/decline) + evidence · $0.30 -
/api/x402/trace?addr=T…— Tron multi-hop taint trace (≤3 hops) · $0.20 -
/api/x402/batch— batch screening (≤25) · $0.10
SDK & MCP (wire it into your agent)
npm i oceanalt-aml
import { OceanAltAML } from "oceanalt-aml";
const aml = new OceanAltAML();
const r = await aml.screen("0x…", { network: "optimism" }); // free
const d = await aml.decision({ to: "0x…", amountUsdc: 25 }, // paid (x402)
{ privateKey: process.env.PAYER_KEY });{
"mcpServers": {
"oceanalt-aml": {
"command": "npx", "args": ["-y", "oceanalt-aml-mcp"],
"env": { "OCEANALT_PAYER_KEY": "0x…" }
}
}
}
