mcpbeat Sign in

Aml MCP Server

answering

Aml is answering right now. Last checked 14 min ago. 181 installs a week from npm. It exposes 13 tools. Last commit 21 Oct 2026.

Pre-payment checks for AI agents: sanctions and AML screening of payees, payment pages and requests.

Installs per day peak 314 · avg 34 · +231% w/w
a month agotoday
Uptime history 49 days of history · worst day 97%
49 days agonow
100.0%
Uptime 24h
91 of 91 checks
13
Tools
read from the server
1183 ms
Response time
average over 24h
181
Installs / week
npm and PyPI

What changed 30

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 16 September 2026. No other catalogue keeps this.

2 Nov a tool description was rewritten payment_decision
25 Oct 2 tools changed the parameters they ask for payment_decision, screen_address
25 Oct a tool description was rewritten screen_address
21 Oct a tool changed version
20 Oct a tool changed version
19 Oct 2 tools changed the parameters they ask for3 times that day payment_decision, screen_address
19 Oct a tool changed version
18 Oct a tool appeared check_payment_request
14 Oct 2 tools changed the parameters they ask for3 times that day payment_decision, screen_address
14 Oct a tool description was rewritten payment_decision
and 17 more, back to 16 September 2026

Nothing serious here today

Today is the operative word: we check Aml every 15 minutes and re-read its code on every release. Watch it and you find out the day that stops being true.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 14 min ago.

run in your terminal
claude mcp add aml --transport http https://oceanalt.com/api/mcp
Settings → Connectors → Add custom connector, then paste this address
https://oceanalt.com/api/mcp
~/.codex/config.toml
[mcp_servers.aml]
url = "https://oceanalt.com/api/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "aml": {
      "url": "https://oceanalt.com/api/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "aml": {
      "type": "http",
      "url": "https://oceanalt.com/api/mcp"
    }
  }
}

Available tools 13

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

payment
check_payment_request
Call this before paying because an email, invoice or chat message asked you to. Pass what you received: raw headers if you have them, the From line, subject and body (or body_html), and the payee address if you already extracted one. OceanAlt checks whether the sender is who it claims to be (SPF/DKIM/DMARC results, a display name that names another domain, Reply-To sent elsewhere), whether the sender domain or any link imitates a brand or is a known phishing host, whether the payee address is listed or differs from previous_pay_to, and whether the text pressures the reader, announces changed payment details, or carries instructions aimed at an AI. Returns allow | review | decline with findings. On decline, do not pay from this message; confirm through a channel you already trust. The text is processed in memory and not stored. Free, no API key.
payment_decision
Call before sending funds, buying a service, settling an invoice or answering an x402 payment quote. Pass the payee address (to) and network to get allow | review | decline, evidence and retry semantics. Only an explicit allow passes this risk check; review, decline, missing or unknown decisions and errors are not permission to pay. This tool does not transfer funds or grant payment authorization. A signed receipt or attestation records the decision, including review; a valid signature does not turn review into approval or prove settlement. If a receipt is returned, its Ed25519 signature can be verified with the public key at https://oceanalt.com/.well-known/oceanalt-keys.json. Pass resource_url to check the origin's payment quote against the payee; a different payee or an unavailable check raises the decision to review. A match is not an endorsement of the seller. Free within the monthly allowance; no signup or key is required to start. Anonymous allowance exhaustion is an error, not a risk decision.
screen
screen_address
Run an AML compliance screen on a single blockchain address BEFORE paying or receiving from it — the pre-payment check on a counterparty. Checks OFAC sanctions, known mixers, scam and phishing lists, stablecoin issuer freezes, and on-chain heuristics. Returns a verdict (clear | caution | risky), a 0–100 risk score, a blocked flag, and the matching signals — 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. Depth varies by chain (see coverage.chains at /.well-known/agent-capabilities). Supports EVM (0x…), Tron (T…), Solana, Bitcoin and XRP Ledger (r…); Monero, Bitcoin Cash, Litecoin (ltc1) and BNB Beacon (bnb1) by list matching only. Free, no API key.
screen_endpoint
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 phishing-domain intelligence plus hostname shape signals (bare IP, punycode homograph, deep subdomain nesting, free hosting). Returns clear | caution | risky | unknown with language-independent signal_keys. A clear verdict means no match was found, NOT that the endpoint is safe — freshly registered phishing hosts always precede any list. Use together with screen_address. Free, no API key.
attest
attest_control_baseline
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 and expected: answer false where a control is not in place and describe how you plan to close it in gapPlan. A filing with declared gaps is worth far more than no filing — it lets a payer decide against a known shape instead of a blank. Get the control ids from the baseline list first. Only file for a party you are actually authorised to speak for.
baseline
baseline_controls
Fetch the OceanAlt Agent Control Baseline: the list of 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 carries which gate enforces it and why it exists.
calldata
check_calldata_intent
Anti blind-signing. EVM: decodes what a transaction's 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 what you believe you are doing. EVM: pass intent:{action:'pay', to, amount} plus contract (the transaction's to) and data (hex calldata). Solana: pass network:'solana' and transaction (base64) instead of data. 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.
counterparty
counterparty_control_baseline
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. Returns that party's self-attestation against the OceanAlt Agent Control Baseline, split into two sets that must NOT be conflated: verified_by_oceanalt (enforced by the gateway on every payment — provable) and self_claimed (what they state about their own side — NOT verified by OceanAlt). Most parties have not attested: found:false means no information, not a bad signal.
evidence
evidence_bundle
Everything OceanAlt holds about an address as public facts, in one Ed25519-signed bundle you can verify offline: screening verdict with evidence and freshness, profile signals, one-hop relations to listed addresses, fulfillment receipt stats and coverage. A witness, not a prosecutor: no conclusions about people. Same as GET https://oceanalt.com/api/evidence/bundle.
payee
payee_decide
The receiving side's check before settlement. Given the payee's registry id (sid) and, optionally, the payer, amount and purpose, returns accept / decline / hold_request_info / not_ready with reason codes, the fields to request, evidence and a signature. Rule-based, not a model's opinion. Same logic as POST https://oceanalt.com/api/payee/decide.
recent
recent_flagged
Return a representative sample of addresses on OceanAlt's reviewed risk list — OFAC-sanctioned, known mixers, and scam/phishing — each with its source category and reason. Takes no arguments. Free, no API key.
resolve
resolve_agent_identity
Resolves who stands behind a paying agent: agent -> principal -> mandate -> credential -> wallet. Each link reports whether it holds; completeness counts how many do (a factual count, not a score). Wherever the chain breaks is where accountability stops. 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.
verify
verify_payment_requirements
Before paying an x402 402 response, check that its payment requirements (payTo, amount, asset, network, resource) were signed by the seller and not altered in transit by a proxy, CDN, SDK or another tool. x402 v2 carries the requirements in the PAYMENT-REQUIRED response header (base64 JSON): pass either the decoded JSON or the raw base64 value as body. Optionally pass expect:{payTo, amount} — the address and amount you are about to pay — and the tool also checks they match what was signed. verified:false with reason_code no_signature means the seller does not sign (unprotected, not necessarily malicious); digest_mismatch or signature_invalid means the response was tampered with — do not pay.

Endpoints

URLTransportStateLatencyChecked
https://oceanalt.com/api/mcp streamable-http answering 1045 ms 14 min ago

Alternatives to Aml

same job, measured the same way
Presidio Hardened X402 MCP
by presidio-v

Pre-payment safety gate for x402 agents: PII screening, spend policy, replay checks before signing.

158 installs/wk local only
Payment Guard MCP
by mlawsonking

Pre-send risk check for AI agents that move money — screen an address or payment URL before sending.

116 installs/wk local only
PayPerScreen
by tonythetiger22

Sanctions, crypto wallet, email and IP screening for agents. Pay per check in USDC via x402.

554 installs/wk local only
Onyx AML
by onyxprotocol

Crypto address risk checks for agents: USDT/USDC blacklists, sanctions, scam lists, poisoning

8 tools answering
x402 Merchant Check
by gradientdecisions

Pre-payment merchant trust checks for x402 agents on Base and Solana.

1 tools answering
ACN Preflight
by abacore-net

Preflight checks for agent repository contributions, bounty work, and Base payments.

3 tools answering
Factline
by snefhew

Checks before an agent pays: payees, webshops, invoices, payment files, companies, sanctions, PEP.

64 tools answering
PayGuard
by youraitools

OFAC SDN sanctions screen for crypto addresses, for agents that send payments. By Crypto Money Maker

2 tools answering

Aml — questions

Answers built from our own checks of this server.

What can Aml do?
It exposes 13 tools, read directly from the server on our last check. Among them: attest_control_baseline, baseline_controls, check_calldata_intent, check_payment_request, counterparty_control_baseline, evidence_bundle and 7 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
What is Aml mostly used for?
Its tools cluster around payment and screen. That is what this server is built to work with — the grouping comes from the actual tool names, not from a category we assigned.
Is Aml working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 91 checks got a reply (100.0%), average response time 1183 ms. The bar chart above shows every period we have measured.
How do I connect Aml?
Copy the ready config from this page. We generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each in the form that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does Aml need an API key?
No. Aml completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 13 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is Aml?
It answers our handshake in 1183 ms on average, which is faster than 5% of all working MCP servers we measure. That is on the slow side — worth knowing if the tool sits inside an interactive loop. The comparison comes from our own checks across the whole registry, every 15 minutes.
How many people use Aml?
The npm package oceanalt-aml-mcp was installed 181 times in the last week. Week over week that is +231%. We show installs rather than GitHub stars on purpose: a star is a bookmark, an install is someone actually running it.
Is Aml open source?
The code is open source: it is published under the MIT licence, written in JavaScript and 0 stars on GitHub. The licence covers the code in the repository, not the hosted service at oceanalt.com, which runs on its operator's own terms.