oceanalt-aml-mcp
Native AML compliance for AI agents: screen addresses, endpoints, and transactions before money moves, plus paid gateway decisions over x402.
Before paying:
payment_decision(allow/review/decline + attestation),payee_decide(accept/decline/hold_request_info),compliance_decision(paid, full gateway verdict).Screen a target:
screen_address(verdict + 0–100 score + clickable evidence),screen_endpoint(phishing check on payment URL/domain),batch_screen(paid, up to 25 at once),recent_flagged(sample of known high-risk addresses).Anti-fraud checks:
check_calldata_intent(anti blind-signing — decodes EVM calldata / Solana tx vs. declared intent),verify_payment_requirements(Ed25519 check that an x402 402 response wasn't tampered with).Counterparty posture:
counterparty_control_baseline(their enforced vs. self-claimed controls),resolve_agent_identity(agent → principal → mandate → credential → wallet chain).Your own compliance:
baseline_controls(list control questions),attest_control_baseline(publish your side's answers + gap plan).Evidence:
evidence_bundle(one offline-verifiable signed bundle: screening, profile signals, one-hop relations, receipts).Deep tracing:
deep_trace(paid, Tron USDT multi-hop taint, depth ≤3).
Coverage: 8 EVM chains (ethereum, base, bsc, polygon, arbitrum, optimism, avalanche, arc) auto-detected for Tron/Solana; free tools need no key, paid tools need OCEANALT_PAYER_KEY or OCEANALT_CREDIT_TOKEN and settle real USDC on Base mainnet.
Enables AML address screening and risk assessment for Ethereum (0x...) addresses, including payment decisions, evidence bundles, and compliance verdicts via the OceanAlt API.
Supports AML address screening and risk assessment for Optimism (0x...) addresses, including payment decisions, evidence bundles, and compliance verdicts via the OceanAlt API.
Supports AML address screening and risk assessment for Polygon (0x...) addresses, including payment decisions, evidence bundles, and compliance verdicts via the OceanAlt API.
Provides Solana address screening, AML risk assessment, and anti blind-signing checks for Solana transactions, including decoding SPL Approve, SetAuthority, and CloseAccount instructions.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@oceanalt-aml-mcp before I pay 250 USDC to 0x9f2c...b41e, is it safe?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
oceanalt-aml-mcp
Native AML compliance for AI agents. An MCP server that lets Claude / Cursor / any MCP client call OceanAlt's on-chain address screening and compliance gateway. Receipts, not a black-box score — every verdict ships with verifiable evidence you can click through.
Built for agentic payments: ask "should this payment proceed?" before money moves, across 8 EVM chains + Tron + Solana.
For AI agents: call
screen_addressbefore any transfer — it returns aclear/caution/riskyverdict plus a 0–100 risk score and clickable evidence, so you can enforce a payment mandate with a receipt instead of a guess. Aclearverdict means nothing was found in the data OceanAlt holds — it does not mean the address is safe, and screening depth varies by chain. Free, no key.
Tools
Tool | Input | What it does | Price |
|
| Before your agent pays, call once → allow / review / decline + evidence + retry + a verifiable settlement attestation | Free |
|
| AML verdict + risk score + verifiable evidence | Free |
|
| The other question: not "is this address risky" but "how much damage could the agent on the other side do if it were talked into something". Returns their control-baseline attestation, splitting what OceanAlt enforces from what they merely claim | Free |
|
| Chain of accountability: agent → principal → mandate → credential → wallet. Wherever it breaks is where accountability stops | Free |
| — | Recently flagged high-risk addresses | Free |
|
| Anti blind-signing: decode what the transaction really does (ERC-20 approve dressed as a payment; SPL Approve / SetAuthority / CloseAccount) and compare with the declared payment → match / mismatch / unknown (unknown ≠ safe) | Free |
|
| Was this x402 402 response tampered with in transit? Ed25519 check of the seller's signed requirements → ok / digest_mismatch / … | Free |
|
| One signed bundle of everything public OceanAlt can say about an address (screening + evidence + freshness, profile signals, one-hop relations, receipt stats); witness, not plaintiff | Free |
|
| Is this payment URL or domain on a phishing list, or shaped like one? The half address screening cannot answer | Free |
|
| An email, invoice or message asks you to pay: is the sender spoofed, are the links phishing, is the payee listed or changed, is there pressure or an instruction aimed at an AI? | Free |
| — | The Agent Control Baseline: controls an operator should run before its agent moves money | Free |
|
| File your own side's control-baseline attestation so payers can look it up | Free |
|
| The receiving side's check before settlement: accept / decline / hold_request_info / not_ready, with reason codes, the fields to request, evidence and a signature | Free |
|
| Full gateway verdict (allow / review / decline) + evidence | $0.002, or 1 credit |
|
| Tron multi-hop USDT taint trace (depth ≤3) | $0.01 |
|
| Batch screening (up to 25 addresses) | $0.01 |
network (for 0x addresses): ethereum · base · bsc · polygon · arbitrum · optimism · avalanche (auto-detected if omitted). Tron & Solana are auto-detected.
Output language
Human-readable fields (signals, note, advice) come back in English by default;
pass lang: "zh" for Chinese. Every response also carries signal_keys — language-independent
keys such as list.mixer or taint.onehop. Branch on those, not on the prose: wording
changes, keys do not.
Two of these tools answer "found: false" a lot
counterparty_control_baseline and resolve_agent_identity return found: false for most
parties, because publishing is voluntary. That means no information — it is not a negative
signal, and an agent should never decline a payment on that basis alone. Fall back to
payment_decision.
Related MCP server: address-intel-api
Quick start (free tools)
Add to your MCP client config (Claude Desktop, Claude Code, Cursor, …):
{
"mcpServers": {
"oceanalt-aml": { "command": "npx", "args": ["-y", "oceanalt-aml-mcp"] }
}
}The free tools need no API key and no signup.
Enabling the paid (x402) tools
The paid tools pay per call over x402 — HTTP 402 → sign one USDC authorization → 200. Add a payer wallet key to env and install the x402 peer deps:
{
"mcpServers": {
"oceanalt-aml": {
"command": "npx", "args": ["-y", "oceanalt-aml-mcp"],
"env": { "OCEANALT_PAYER_KEY": "0x<your payer wallet private key>" }
}
}
}npm i @x402/core @x402/evm viem # in the MCP's environment⚠️ Real money — Base mainnet. The paid endpoints settle real USDC on Base mainnet (
eip155:8453); the$prices above are charged in real USDC. Always confirm the live network/pricing manifest at https://oceanalt.com/api/x402 before paying, and use a dedicated low-balance payer wallet.🔐 Wallet safety.
OCEANALT_PAYER_KEYis used only in your local process to sign one EIP-3009 authorization. It is never bundled in this package, never uploaded, never logged. The facilitator pays gas and never custodies your funds. Use a dedicated low-balance payer wallet, not your main funds.
Environment variables
Var | Purpose | Default |
| Backend base URL |
|
| Payer wallet key — enables the paid tools | unset (free tools only) |
| Credit pack token from | unset |
What it is (and isn't)
This package is a thin (~9KB) client that calls OceanAlt's public API. It contains no proprietary logic and no data — the AML engine, scoring, and address-intelligence all run server-side at oceanalt.com. Every query still enriches OceanAlt's own address-intelligence DB (it grows with use).
Programmatic SDK (same capabilities, for Node / browser / Deno / Bun):
oceanalt-amlAPI docs & examples: https://oceanalt.com/en/api-docs
RAP — the compliance standard behind the verdicts: https://oceanalt.com/en/rap
MIT © OceanAlt
中文
让 Claude / Cursor / 任意 MCP 客户端原生调用 OceanAlt 的链上地址合规筛查 + 合规网关。给收据,不给黑箱分:每条判决都带可点开核验的证据。覆盖 8 条 EVM 链 + 波场 TRON + Solana,付款前先问一句「这个收款方安不安全」。
免费工具:
payment_decision(付款前调一次 → allow/review/decline + 证据 + 可核验结算凭证)、screen_address(单查 + 证据)、payee_decide(收款方三态决策)、counterparty_control_baseline/resolve_agent_identity(对方的控制基线与责任链)、recent_flagged(近期被标记)、check_calldata_intent(盲签检查,EVM calldata 或整笔 Solana 交易)、screen_endpoint(付款网址是否钓鱼)、check_payment_request(收到让你付钱的邮件、发票或消息时,查发件人真假、钓鱼链接、收款地址、催付话术和写给 AI 的指令)、baseline_controls/attest_control_baseline(控制基线清单与自证)、verify_payment_requirements(402 应答验签)、evidence_bundle(签名证据包)。无需 key、无需注册。付费三工具(x402):
compliance_decision(网关判决)、deep_trace(波场深度追踪)、batch_screen(批量)。按需加载@x402+viem,设置OCEANALT_PAYER_KEY才启用。价格:判决 $0.002、追踪 $0.01、批量 $0.01。也可以设置OCEANALT_CREDIT_TOKEN(充值包 $0.10 = 100 次判决,在POST https://oceanalt.com/api/x402/credits购买),compliance_decision每次扣 1 次,不再逐笔签名。⚠️ 真钱:付费端点当前在 Base 主网结算,USDC 为真实资金(
eip155:8453),上表$价按真实 USDC 收取。付款前务必以实时清单 https://oceanalt.com/api/x402 为准,并使用小额专用付款钱包。🔐 钱包安全:
OCEANALT_PAYER_KEY只在本地签一次 EIP-3009 授权,绝不随包发布/上传/打日志;facilitator 代付 gas、不托管资金。建议用小额专用钱包,别用主资金钱包私钥。编程 SDK:
oceanalt-aml;在线文档:https://oceanalt.com/en/api-docs;合规标准:https://oceanalt.com/en/rap。
Available Tools
15 toolsattest_control_baselineFile your own control-baseline attestation (free)AIdempotentInspect
File your operator's control-baseline attestation — the counterpart to counterparty_control_baseline. That tool asks what controls the OTHER side runs; this one publishes what YOUR side runs, so payers can see it before settling with you. No account, no key, one call. Gaps are allowed: answer false where a control is not in place and describe the plan in gapPlan. Get the control ids from baseline_controls first. Only file for a party you are actually authorised to speak for.
Inputs: entity (required), answers (required), agentId, contact, +1 more.
baseline_controlsList the control-baseline questions (free)ARead-onlyIdempotentInspect
Fetch the OceanAlt Agent Control Baseline: the controls an agent operator is expected to run before it is allowed to move money, each answerable yes or no. Call this before attest_control_baseline so you file against real control ids. Each control says which layer enforces it.
Inputs: no named parameters.
batch_screenBatch-screen up to 25 addresses (paid, x402 $0.01)AInspect
Screen up to 25 blockchain addresses in a single call. Returns a per-address verdict (clear | caution | risky | invalid), risk score, blocked flag, and top signal, plus a summary count, sorted risky-first. Cheaper per address than screening one at a time. EVM (0x…) and Tron (T…). PAID via x402: moves REAL money and requires OCEANALT_PAYER_KEY. Costs $0.01 in real USDC settled on Base mainnet (eip155:8453) — confirm the live network/price at https://oceanalt.com/api/x402 and use a dedicated low-balance payer wallet.
Inputs: addresses (required).
check_calldata_intentDecode a transaction and compare with declared intent (free)ARead-onlyIdempotentInspect
Anti blind-signing. EVM: decodes what calldata will actually do (ERC-20 transfer/approve/permit, setApprovalForAll, ownership transfer, native transfer). Solana: decodes a whole base64 transaction (SPL Token / Token-2022 Transfer, TransferChecked, Approve, SetAuthority, CloseAccount, Burn; System Transfer / Assign; ATA creation). Compares it with the payment the agent believes it is making. decision match = does what you declared; mismatch = different recipient/amount/asset, or an approval / authority change instead of a payment — do not sign; unknown = could not decode (including address-lookup-table accounts), which is NOT the same as safe. Free, no API key.
Inputs: data, value, intent, network, +2 more.
compliance_decisionGateway compliance decision for a payment (paid, x402 $0.002 or 1 credit)AInspect
Run OceanAlt's full compliance gateway on a proposed payment and get a DECISION — allow | review | decline — plus advice and verifiable evidence, not just raw data. Combines AML screening of the payee with RAP (Responsible Agentic Payments) gate checks. Use this when an agent needs a go/no-go call before releasing funds. PAID via x402: the first request returns HTTP 402, this server automatically signs one USDC authorization and retries — this moves REAL money and requires OCEANALT_PAYER_KEY. Costs $0.002 in real USDC settled on Base mainnet (eip155:8453). Alternatively set OCEANALT_CREDIT_TOKEN (a credit pack bought at POST https://oceanalt.com/api/x402/credits: $0.10 for 100 decisions); each call then uses one credit and no payment is signed. Always confirm the live network/price at https://oceanalt.com/api/x402 and use a dedicated low-balance payer wallet.
Inputs: to (required), network, purpose, amountUsdc.
counterparty_control_baselineCheck a counterparty's control baseline before paying (free)ARead-onlyIdempotentInspect
Answers a different question from address screening. Screening asks whether an address is risky; this asks how much damage the agent on the other side could do if it were talked into something — whether a spending ceiling exists, whether payees are restricted, whether its credential can be revoked. It returns that party's self-attestation against the OceanAlt Agent Control Baseline, split into two sets that must NOT be conflated: verified_by_oceanalt (controls the gateway enforces on every payment — provable) and self_claimed (what the party states about its own side — NOT verified by OceanAlt). IMPORTANT: most parties have not attested. A result of found:false means no information, not a bad signal — never decline a payment on that basis alone. Free, no API key.
Inputs: entity, agentId.
deep_traceDeep taint trace of a Tron address (paid, x402 $0.01)AInspect
Trace a Tron (TRON) USDT address up to 3 hops back along its largest incoming transfers to see whether its funds touch a Tether-frozen, sanctioned, mixer, or scam address upstream — deeper than a single-address screen. Tron only (T…). PAID via x402: moves REAL money and requires OCEANALT_PAYER_KEY. Costs $0.01 in real USDC settled on Base mainnet (eip155:8453) — confirm the live network/price at https://oceanalt.com/api/x402 and use a dedicated low-balance payer wallet. Note: follows only the main funds path, depth ≤3, not exhaustive — no hit does not prove the address is clean.
Inputs: address (required).
evidence_bundleSigned evidence bundle for an address (free)ARead-onlyIdempotentInspect
Everything OceanAlt can say about an address, in one Ed25519-signed bundle you can verify offline: screening verdict + evidence + freshness, self-built profile signals, one-hop relations to listed addresses, fulfillment receipt stats. OceanAlt is a witness, not a plaintiff: no conclusions, no attribution of persons, every item carries its source and coverage date. Everything inside is already public; there is no user data and no privileged channel — anyone may request one. Free, 10 per minute.
Inputs: address (required), network.
payee_decideAsk the payee whether it accepts this payment (free)AInspect
The other half of a safe agent payment. Before settling, ask the registered payee (by its OceanAlt registry sid — see https://oceanalt.com/registry.json) whether it accepts this incoming payment. Returns status accept | decline | hold_request_info | not_ready, machine-readable reason codes, requested_fields (only on hold), verifiable evidence and a signature. Rule-based, not model judgement: payee readiness comes from the public registry enforcement ladder (https://oceanalt.com/en/registry/rules), the payer address is screened in reverse, and amount / purpose / KYA requirements come from the payee's own policy. decline is final — re-paying does not change it. Free, no API key.
Inputs: payee (required), purpose, amountUsdc, payerAddress, +1 more.
payment_decisionDecide whether to pay an address before an agent pays (free)ARead-onlyIdempotentInspect
"Before your agent pays, call OceanAlt once." Pass the payee address the agent is about to pay; get a machine-executable decision: allow | review | decline, plus verifiable evidence and retry semantics. Use this as a gate in an autonomous payment flow — if the decision is not "allow", do not pay. On allow/review it also returns a verifiable compliance attestation you can attach to the settlement so the payment carries proof it passed OceanAlt's decision. Free, no API key, no signup. (For the paid variant that also settles the payment on x402 rails, use compliance_decision.)
Inputs: to (required), lang, network, purpose, +1 more.
recent_flaggedList recently flagged high-risk addresses (free)ARead-onlyInspect
Return a representative sample of addresses on OceanAlt's reviewed risk list — OFAC-sanctioned, known mixers, and community-reported scam/phishing — each with its source category and the reason it was flagged. Useful for grounding, showing an agent/user what gets blocked and why, or a quick read on the current threat surface. Takes no arguments. Free, no API key.
Inputs: no named parameters.
resolve_agent_identityResolve an agent's chain of accountability (free)ARead-onlyIdempotentInspect
Resolves who stands behind a paying agent: agent → principal → mandate → credential → wallet. Each link reports whether it holds, and completeness counts how many do — it is a factual count, not a score. Wherever the chain breaks is where accountability stops, which is what you actually need to know before accepting a payment from an autonomous agent. Publication is opt-in and only posture is exposed (that a ceiling exists, never its value), so found:false means the agent has not published — absence of information, not a bad signal. Free, no API key.
Inputs: agentId (required).
screen_addressScreen a blockchain address for AML risk (free)ARead-onlyIdempotentInspect
Run an AML compliance screen on a single blockchain address BEFORE paying or receiving from it. Checks OFAC sanctions, known mixers, community scam/phishing lists, stablecoin issuer freezes (USDT on Tron, USDC on EVM chains), and on-chain heuristics (address age, activity, one-hop taint from flagged addresses) where the chain supports them. Returns a verdict (clear | caution | risky), a 0–100 risk score, a blocked flag, and clickable verifiable evidence showing which list/label/on-chain path matched — receipts, not a black-box score. A clear verdict means nothing was found in the data OceanAlt holds; it is not a statement that the address is safe. Screening depth varies by chain (see coverage.chains at https://oceanalt.com/.well-known/agent-capabilities). Supports EVM (0x…), Tron (T…), and Solana (base58). Free, no API key, no signup.
Inputs: address (required), lang, network.
screen_endpointScreen a payment endpoint for phishing (free)ARead-onlyIdempotentInspect
Screen a payment ENDPOINT (URL or domain) before calling it — the half that address screening cannot answer. In x402 the agent discovers a URL first, receives a 402, and only then learns where to pay: if that endpoint is spoofed, the payee address it hands back is freshly generated and appears on no sanctions list. Checks the hostname and its parent domains against public phishing-domain lists plus hostname shape signals. Returns clear | caution | risky | unknown with language-independent signal_keys. clear means no match was found, NOT that the endpoint is safe. Use together with screen_address. Free, no API key.
Inputs: url (required).
verify_payment_requirementsVerify a signed x402 402 response was not tampered with (free)ARead-onlyIdempotentInspect
A 402 response is plaintext: any hop between seller and agent (proxy, CDN, a compromised SDK, a malicious tool) can swap the payTo address. Sellers who sign their payment requirements with OceanAlt put extensions.signedRequirements (Ed25519) inside the PAYMENT-REQUIRED header payload. Pass the decoded header JSON (or its raw base64) and, optionally, the payTo / amount you expect; get verified true/false with a reason code: ok | no_signature | digest_mismatch | signature_invalid | key_unavailable | payto_mismatch | amount_mismatch. Defends against tampering in transit, not against a compromised seller origin. Free, no API key.
Inputs: expect, keys_url, payment_required.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 15 tools
Descriptions work hard to separate tools (e.g. 'Answers a different question from address screening'), but real overlaps remain: payment_decision and compliance_decision both return allow|review|decline and differ mainly by paid/free settlement, while screen_address, batch_screen, deep_trace, evidence_bundle and compliance_decision all touch AML screening of addresses. The three control-baseline tools (baseline_controls, counterparty_control_baseline, attest_control_baseline) are also easy to confuse at a glance.
All names use snake_case, which is good, but the grammatical pattern is mixed: verb_noun tools (screen_address, verify_payment_requirements, attest_control_baseline, resolve_agent_identity) sit alongside noun-phrase tools (baseline_controls, payment_decision, compliance_decision, evidence_bundle, recent_flagged) and an awkward noun_verb (payee_decide). Readable in practice but not a predictable single convention.
15 tools is at the upper edge of the comfortable range but is justified by the genuinely broad domain: address/endpoint/batch screening, tracing, decisioning, agent identity, control attestation, calldata decoding, and requirement verification. Each tool maps to a distinct operational step rather than padding.
The surface covers the full payment-safety lifecycle: pre-payment screening, endpoint screening, tracing, decisioning, identity resolution, control baselines (read/file/counterparty), calldata intent, signed-requirement verification, and signed evidence. Minor gaps exist (e.g. no explicit tool for retrieving a named agent's full published mandate or a general list-pagination beyond recent_flagged), but agents can work around them.
Maintenance
Related MCP Connectors
Counterparty due-diligence infrastructure: OFAC screening, on-chain risk, signed verdicts.
Blockchain address risk scoring, AML reports, sanctions screening and counterparty exposure.
Crypto transaction firewall and risk tools for MCP agents.
Pre-transaction risk screening for Ethereum addresses: signed score, sanctions, audit trail.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceRoutes blockchain address screening to third-party KYC/AML providers and checks public sanctions lists, serving as a clean-money gate primitive for MCP-compatible agents.MIT
- FlicenseNot gradedqualityFmaintenanceProvides counterparty risk checks for any EVM address, returning malicious-history flags, tiered risk scoring, and plain-language summaries via x402 payment.-
- AlicenseNot gradedqualityFmaintenanceArchived and no longer maintained. Tools and prices shown here are out of date. Use the maintained server: glama.ai/mcp/servers/OceanAlt666/oceanalt-aml-mcp (GitHub: OceanAlt666/oceanalt-aml-mcp).115 npmMIT

PublicAML MCP Serverofficial
AlicenseAqualityBmaintenanceEnables blockchain AML screening of addresses in plain language inside any MCP client, covering sanctions and freeze checks, risk scoring, fund tracing, and counterparty classification across bitcoin, ethereum, bsc, and tron. Works without an account, with an optional API key that lifts rate limits and unlocks outgoing tracing.354 npmMIT