Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

com.oceanalt/aml

NPM · OCEANALT-AML-MCP · 2 COMPONENTS

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

0 this week 77 Trust /100

Last scanned (6 hours ago)

Scores higher than 55% of npm servers

Category Finance and Payments

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security81
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: a known high-severity CVE affects zod 3.25.76, a direct dependency. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • 30 of 111 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability65
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3734 tokens (~233/item across 16 items; 16 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage99
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 96% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 16 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 17 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 29 Oct 26 0
    • Stability: 0.97 → pass security
  • 28 Oct 26 0
    • Stability: pass → 0.97 functional
  • 24 Oct 26 −5
    • CVE-2023-54404 affects this package: high ▼ security
    • Known CVEs: pass → fail ▼ security
  • 22 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
    • Stability: 0.97 → pass security
  • 21 Oct 26 0
    • Stability: pass → 0.97 functional
    • Package version: 0.7.5 → 0.7.6 functional
  • 20 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
    • Package version: 0.7.4 → 0.7.5 functional
  • 19 Oct 26 −1
    • Stability: pass → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Schema quality: 209 → 230 ▼ functional
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • First check of Schema quality: unverified functional
    • Package version: 0.7.3 → 0.7.4 functional
  • 16 Oct 26 0
    • Tool safety: pass → unverified ▼ security
    • Stability: pass → unverified ▼ security
    • Tool coverage: 100 → unverified ▼ functional
    • Capabilities: pass → unverified ▼ functional
    • First check of Schema quality: unverified functional
    • Stability: pass → 0.80 functional
    • Package version: 0.7.2 → 0.7.3 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed npm/oceanalt-aml-mcp@0.7.6

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Vulnerabilities 1 finding
ID CVE Severity Vector Fix available
GHSA-mrhx-c7xc-m3w5 CVE-2023-54404 high CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H yes

Background: What a vulnerability scan can and cannot prove →

Dependencies 111 packages
Packages resolved 111
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 16 exposed · ~3,575 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
attest_control_baseline ~246

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.

NameTypeReqDescription
agentIdstring–If this party already has an agent registered with OceanAlt, link the attestation to it.
answersobjectyesMap of control id to boolean, e.g. {"ACB-1.1": true, "ACB-2.1": false}. Ids come from baseline_controls.
contactstring–Contact for follow-up. Not published.
entitystringyesThe accountable party's legal or commonly-used name. This is who the attestation is about, not your agent's name.
gapPlanstring–For controls answered false: how and when you plan to close them.

No output schema declared.

No examples provided.

baseline_controls ~65

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.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

batch_screen ~182

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.

NameTypeReqDescription
addressesarrayyesAddresses to screen (max 25), each 0x… (EVM) or T… (Tron). Duplicates and blank entries are ignored.

No output schema declared.

No examples provided.

check_calldata_intent ~276

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.

NameTypeReqDescription
contractstring–EVM only: the transaction's `to` (token contract, or the recipient for native transfers).
datastring–EVM only: 0x-prefixed hex calldata.
intentobject––
networkstring–'solana' to decode a Solana transaction; EVM chain name or CAIP-2 id otherwise.
transactionstring–Solana only: base64-serialized transaction or message.
valuestring–EVM only: native value in wei.

No output schema declared.

No examples provided.

check_payment_request ~348

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 spoofed (SPF/DKIM/DMARC, a display name naming another domain, Reply-To sent elsewhere), whether the sender domain or links imitate a brand or are known phishing hosts, whether the payee 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. The text is processed in memory and not stored. Free, no API key.

NameTypeReqDescription
bodystring–Plain-text body, invoice text or chat message
body_htmlstring–HTML body, if available
expected_sender_domainstring–The domain this requester normally sends from
fromstring–The From line, e.g. "Acme Billing" <billing@acme.com>
headersstring–Raw email headers, if available (needed for SPF/DKIM/DMARC)
networkstring–Network of pay_to, e.g. base, ethereum, tron, solana
pay_tostring–The payee address the message asks you to pay
previous_pay_tostring–The address you paid this requester last time
reply_tostring–The Reply-To line, if any
subjectstring––

No output schema declared.

No examples provided.

compliance_decision ~397

Paid version of payment_decision. Start with the free payment_decision tool; switch to this one when you need the full evidence detail and a settled per-call receipt (x402), for example in an audited payment flow. 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.

NameTypeReqDescription
amountUsdcnumber–Payment amount in USDC. Optional; used only for record / mandate-limit checks, not required to get a decision.
networkstring–EVM chain for the payee (same set as screen_address). Optional; ignored for Tron.
purposestring–Short free-text note on what the payment is for. Optional (max ~120 chars).
tostringyesPayee address the agent intends to pay: EVM (0x + 40 hex), Tron (T…), Solana (base58), Bitcoin (bc1… / 1… / 3…) or XRP Ledger (r…).

No output schema declared.

No examples provided.

counterparty_control_baseline ~217

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.

NameTypeReqDescription
agentIdstring–Their agent id, if you have it instead of an entity name.
entitystring–The counterparty's entity name, e.g. "Acme Robotics Ltd".

No output schema declared.

No examples provided.

deep_trace ~180

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.

NameTypeReqDescription
addressstringyesTron address to trace (T + 33 base58). USDT on TRON.

No output schema declared.

No examples provided.

evidence_bundle ~152

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.

NameTypeReqDescription
addressstringyesEVM (0x…), Solana / Tron (base58) or Bitcoin address.
networkstring–Chain, e.g. ethereum, base, solana (optional).

No output schema declared.

No examples provided.

payee_decide ~255

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.

NameTypeReqDescription
amountUsdcnumber–Amount in USDC
payeestringyesPayee sid from the OceanAlt registry, e.g. oceanalt-200lab-premium
payerAddressstring–The paying wallet address (screened in reverse)
payerAgentIdstring–The paying agent's KYA id, if the payee requires KYA
purposestring–Purpose of the payment, e.g. api-call

No output schema declared.

No examples provided.

payment_decision ~282

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

NameTypeReqDescription
amountUsdcnumber–Amount in USDC (optional; recorded/echoed, not required for the decision).
langstring–Language for human-readable fields (signals, note, advice). Defaults to English.
networkstring–EVM chain for the payee (same set as screen_address). Optional; ignored for Tron.
purposestring–Short purpose/memo for the payment (optional).
tostringyesPayee address the agent is about to pay: EVM (0x + 40 hex), Tron (T…), Solana (base58), Bitcoin (bc1… / 1… / 3…) or XRP Ledger (r…).

No output schema declared.

No examples provided.

recent_flagged ~86

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.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

resolve_agent_identity ~139

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.

NameTypeReqDescription
agentIdstringyesThe agent id to resolve.

No output schema declared.

No examples provided.

screen_address ~373

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.

NameTypeReqDescription
addressstringyesAddress to screen. EVM: 0x + 40 hex (e.g. 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045). Tron: T + 33 base58 (e.g. TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t). Solana: base58 public key.
langstring–Language for human-readable fields (signals, note). Defaults to English.
networkstring–EVM chain to screen on. Omit to auto-default to ethereum; ignored for Tron/Solana (auto-detected). One of: ethereum, base, bsc, polygon, arbitrum, optimism, avalanche.

No output schema declared.

No examples provided.

screen_endpoint ~165

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.

NameTypeReqDescription
urlstringyesFull URL or bare domain of the payment endpoint, e.g. https://pay.example.com/x402 or pay.example.com

No output schema declared.

No examples provided.

verify_payment_requirements ~212

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.

NameTypeReqDescription
expectobject–What you expect to pay; mismatches are reported.
keys_urlstring–Where the seller publishes its keys (defaults to the keys_url inside the signature).
payment_required––The decoded PAYMENT-REQUIRED JSON, or the raw base64 header value.

No output schema declared.

No examples provided.

Install

How do I install the com.oceanalt/aml MCP server?

com.oceanalt/aml runs locally as an npm package, launched with npx -y oceanalt-aml-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · oceanalt-aml-mcp

# add to Claude Code
claude mcp add com-oceanalt-aml -- npx -y oceanalt-aml-mcp
Common questions

What is the com.oceanalt/aml MCP server?

com.oceanalt/aml is an MCP server listed in the public MCP registry as com.oceanalt/aml. Pre-payment checks for AI agents: sanctions and AML screening of payees, payment pages and requests. This page covers its npm package (oceanalt-aml-mcp).

Is the com.oceanalt/aml MCP server safe to use?

com.oceanalt/aml scores 77 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the com.oceanalt/aml MCP server expose?

com.oceanalt/aml exposes 16 tools: screen_address, payee_decide, counterparty_control_baseline, resolve_agent_identity, recent_flagged, and 11 more. Their descriptions and schemas cost roughly 3,575 tokens of context every time the server is loaded.

Is the com.oceanalt/aml MCP server still maintained?

com.oceanalt/aml is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the com.oceanalt/aml MCP server under?

com.oceanalt/aml declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.