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.
Available components
Last scanned (6 hours ago)
Scores higher than 55% of npm servers
Category Finance and Payments
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
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 15 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
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
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
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 →
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 →
attest_control_baseline File your own control-baseline attestation (free) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | – | If this party already has an agent registered with OceanAlt, link the attestation to it. |
| answers | object | yes | Map of control id to boolean, e.g. {"ACB-1.1": true, "ACB-2.1": false}. Ids come from baseline_controls. |
| contact | string | – | Contact for follow-up. Not published. |
| entity | string | yes | The accountable party's legal or commonly-used name. This is who the attestation is about, not your agent's name. |
| gapPlan | string | – | For controls answered false: how and when you plan to close them. |
No output schema declared.
No examples provided.
baseline_controls List the control-baseline questions (free) ~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 Batch-screen up to 25 addresses (paid, x402 $0.01) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| addresses | array | yes | Addresses 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 Decode a transaction and compare with declared intent (free) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| contract | string | – | EVM only: the transaction's `to` (token contract, or the recipient for native transfers). |
| data | string | – | EVM only: 0x-prefixed hex calldata. |
| intent | object | – | – |
| network | string | – | 'solana' to decode a Solana transaction; EVM chain name or CAIP-2 id otherwise. |
| transaction | string | – | Solana only: base64-serialized transaction or message. |
| value | string | – | EVM only: native value in wei. |
No output schema declared.
No examples provided.
check_payment_request Check an email, invoice or message that asks you to pay (free) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | Plain-text body, invoice text or chat message |
| body_html | string | – | HTML body, if available |
| expected_sender_domain | string | – | The domain this requester normally sends from |
| from | string | – | The From line, e.g. "Acme Billing" <billing@acme.com> |
| headers | string | – | Raw email headers, if available (needed for SPF/DKIM/DMARC) |
| network | string | – | Network of pay_to, e.g. base, ethereum, tron, solana |
| pay_to | string | – | The payee address the message asks you to pay |
| previous_pay_to | string | – | The address you paid this requester last time |
| reply_to | string | – | The Reply-To line, if any |
| subject | string | – | – |
No output schema declared.
No examples provided.
compliance_decision Payment decision with full detail (paid, x402 $0.002 or 1 credit) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| amountUsdc | number | – | Payment amount in USDC. Optional; used only for record / mandate-limit checks, not required to get a decision. |
| network | string | – | EVM chain for the payee (same set as screen_address). Optional; ignored for Tron. |
| purpose | string | – | Short free-text note on what the payment is for. Optional (max ~120 chars). |
| to | string | yes | Payee 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 Check a counterparty's control baseline before paying (free) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | – | Their agent id, if you have it instead of an entity name. |
| entity | string | – | The counterparty's entity name, e.g. "Acme Robotics Ltd". |
No output schema declared.
No examples provided.
deep_trace Deep taint trace of a Tron address (paid, x402 $0.01) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Tron address to trace (T + 33 base58). USDT on TRON. |
No output schema declared.
No examples provided.
evidence_bundle Signed evidence bundle for an address (free) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | EVM (0x…), Solana / Tron (base58) or Bitcoin address. |
| network | string | – | Chain, e.g. ethereum, base, solana (optional). |
No output schema declared.
No examples provided.
payee_decide Ask the payee whether it accepts this payment (free) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| amountUsdc | number | – | Amount in USDC |
| payee | string | yes | Payee sid from the OceanAlt registry, e.g. oceanalt-200lab-premium |
| payerAddress | string | – | The paying wallet address (screened in reverse) |
| payerAgentId | string | – | The paying agent's KYA id, if the payee requires KYA |
| purpose | string | – | Purpose of the payment, e.g. api-call |
No output schema declared.
No examples provided.
payment_decision Payment decision: should the agent pay this payee? (free, summary detail) ~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.)
| Name | Type | Req | Description |
|---|---|---|---|
| amountUsdc | number | – | Amount in USDC (optional; recorded/echoed, not required for the decision). |
| lang | string | – | Language for human-readable fields (signals, note, advice). Defaults to English. |
| network | string | – | EVM chain for the payee (same set as screen_address). Optional; ignored for Tron. |
| purpose | string | – | Short purpose/memo for the payment (optional). |
| to | string | yes | Payee 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 List recently flagged high-risk addresses (free) ~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 Resolve an agent's chain of accountability (free) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | yes | The agent id to resolve. |
No output schema declared.
No examples provided.
screen_address Screen a blockchain address for AML risk (free) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Address to screen. EVM: 0x + 40 hex (e.g. 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045). Tron: T + 33 base58 (e.g. TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t). Solana: base58 public key. |
| lang | string | – | Language for human-readable fields (signals, note). Defaults to English. |
| network | string | – | 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 Screen a payment endpoint for phishing (free) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | Full 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 Verify a signed x402 402 response was not tampered with (free) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| expect | object | – | What you expect to pay; mismatches are reported. |
| keys_url | string | – | 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.
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
claude mcp add com-oceanalt-aml -- npx -y oceanalt-aml-mcp
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.