Skip to main content
Glama

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_address before any transfer — it returns a clear / caution / risky verdict plus a 0–100 risk score and clickable evidence, so you can enforce a payment mandate with a receipt instead of a guess. A clear verdict 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

payment_decision

to, amountUsdc?, purpose?, network?

Before your agent pays, call once → allow / review / decline + evidence + retry + a verifiable settlement attestation

Free

screen_address

address (0x… / T… / Solana), network?

AML verdict + risk score + verifiable evidence

Free

counterparty_control_baseline

entity? / agentId?

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

resolve_agent_identity

agentId

Chain of accountability: agent → principal → mandate → credential → wallet. Wherever it breaks is where accountability stops

Free

recent_flagged

—

Recently flagged high-risk addresses

Free

check_calldata_intent

intent, EVM: contract, data · Solana: network:"solana", transaction (base64)

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

verify_payment_requirements

payment_required (decoded 402 JSON or raw base64), expect?

Was this x402 402 response tampered with in transit? Ed25519 check of the seller's signed requirements → ok / digest_mismatch / …

Free

evidence_bundle

address, network?

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

screen_endpoint

url

Is this payment URL or domain on a phishing list, or shaped like one? The half address screening cannot answer

Free

check_payment_request

from, headers, body, pay_to …

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

baseline_controls

—

The Agent Control Baseline: controls an operator should run before its agent moves money

Free

attest_control_baseline

entity, answers, gapPlan?

File your own side's control-baseline attestation so payers can look it up

Free

payee_decide

payee (registry id), payer?, amountUsdc?, purpose?

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

compliance_decision

to, amountUsdc?, purpose?, network?

Full gateway verdict (allow / review / decline) + evidence

$0.002, or 1 credit

deep_trace

address (T…)

Tron multi-hop USDT taint trace (depth ≤3)

$0.01

batch_screen

addresses[] (≤25)

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_KEY is 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

OCEANALT_BASE

Backend base URL

https://oceanalt.com (production)

OCEANALT_PAYER_KEY

Payer wallet key — enables the paid tools

unset (free tools only)

OCEANALT_CREDIT_TOKEN

Credit pack token from POST https://oceanalt.com/api/x402/credits ($0.10 = 100 decisions, valid 365 days). compliance_decision then uses one credit per call and signs nothing

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).

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 tools
attest_control_baselineFile your own control-baseline attestation (free)A
Idempotent
Inspect

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)A
Read-onlyIdempotent
Inspect

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)A
Read-onlyIdempotent
Inspect

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)A
Read-onlyIdempotent
Inspect

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)A
Read-onlyIdempotent
Inspect

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)A
Read-onlyIdempotent
Inspect

"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)A
Read-only
Inspect

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)A
Read-onlyIdempotent
Inspect

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)A
Read-onlyIdempotent
Inspect

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)A
Read-onlyIdempotent
Inspect

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)A
Read-onlyIdempotent
Inspect

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

    A4.1/5.0

    Scored across 15 tools

    Disambiguation3/5

    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.

    Naming Consistency3/5

    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.

    Tool Count4/5

    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.

    Completeness4/5

    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

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Routes 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
    • F
      license
      Not graded
      quality
      F
      maintenance
      Provides counterparty risk checks for any EVM address, returning malicious-history flags, tiered risk scoring, and plain-language summaries via x402 payment.
      -
    • A
      license
      Not graded
      quality
      F
      maintenance
      Archived 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 npm
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables 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.
      3
      54 npm
      MIT