# com.oceanalt/aml (npm · oceanalt-aml-mcp)

Screen a payee address before an AI agent pays: sanctions, mixers, scam lists, on-chain risk.

- Trust score: 69/100 (medium)
- Change this week: 0
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- remote · `oceanalt.com`: 67/100, [markdown](https://verifymcp.io/servers/com-oceanalt-aml/api-mcp.md), [page](https://verifymcp.io/servers/com-oceanalt-aml/api-mcp)
- npm · `oceanalt-aml-mcp`: 69/100 (this document), [markdown](https://verifymcp.io/servers/com-oceanalt-aml/oceanalt-aml-mcp.md), [page](https://verifymcp.io/servers/com-oceanalt-aml/oceanalt-aml-mcp)

## Channel facts

- Registry: `npm`
- Package: `oceanalt-aml-mcp`
- Version: `0.6.0`
- Transport: `stdio`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Supply Chain Security**: 99/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 31 of 113 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 19/100
  - Repository check failed: the declared repository URL redirects; it must resolve directly.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 5 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 68/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2565 tokens (~213/item across 12 items; 12 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 37/100
  - Stability observed for 11 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 99/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 97% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 12 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

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

### Claude

```bash
claude mcp add com-oceanalt-aml -- npx -y oceanalt-aml-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "com-oceanalt-aml": {
      "command": "npx",
      "args": [
        "-y",
        "oceanalt-aml-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-oceanalt-aml": {
      "command": "npx",
      "args": [
        "-y",
        "oceanalt-aml-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add com-oceanalt-aml -- npx -y oceanalt-aml-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-oceanalt-aml": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "oceanalt-aml-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-oceanalt-aml --command npx --arg -y --arg oceanalt-aml-mcp
```

### Hermes

```yaml
mcp_servers:
  com-oceanalt-aml:
    command: "npx"
    args: ["-y", "oceanalt-aml-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "com-oceanalt-aml": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "oceanalt-aml-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-oceanalt-aml -t stdio -c npx -a -y oceanalt-aml-mcp
```

### Other

```json
{
  "mcpServers": {
    "com-oceanalt-aml": {
      "command": "npx",
      "args": [
        "-y",
        "oceanalt-aml-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-20 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-18 (score 68, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-16 (score 67, +10)

- [security regression] Source repository: pass → fail
- [security improvement] Malware scan: unverified → pass

### 2026-09-15 (score 57, −12)

- [security regression] Malware scan: pass → unverified
- [functional regression] Schema quality: 1925 → 2565
- [functional improvement] Stability: unverified → 0.20
- [functional] Package version: 0.5.1 → 0.6.0

### 2026-09-10 (score 69, +11)

- [security improvement] Known CVEs: unverified → pass
- [functional improvement] Dependency health: unverified → 0.88

### 2026-09-09 (score 58)

First indexed and scored.

## MCP tools (12)

### `screen_address` (~321 tokens)

Screen a blockchain address for AML risk (free)

Run an AML compliance screen on a single blockchain address BEFORE paying or receiving from it — the answer to "is this counterparty safe?". Checks OFAC sanctions, known mixers, community scam/phishing lists, stablecoin issuer freezes (USDT/USDC), and on-chain heuristics (address age, activity, one-hop taint from flagged addresses). 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. Supports EVM (0x…), Tron (T…), and Solana (base58). Free, no API key, no signup.

Input parameters:

- `address` (string, required): 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.

### `payee_decide` (~255 tokens)

Ask the payee whether it accepts this payment (free)

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.

Input parameters:

- `amountUsdc` (number): Amount in USDC
- `payee` (string, required): 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

### `counterparty_control_baseline` (~217 tokens)

Check a counterparty's control baseline before paying (free)

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.

Input parameters:

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

### `resolve_agent_identity` (~139 tokens)

Resolve an agent's chain of accountability (free)

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.

Input parameters:

- `agentId` (string, required): The agent id to resolve.

### `recent_flagged` (~86 tokens)

List recently flagged high-risk addresses (free)

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.

### `payment_decision` (~262 tokens)

Decide whether to pay an address before an agent pays (free)

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

Input parameters:

- `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, required): Payee address the agent is about to pay. EVM: 0x + 40 hex. Tron: T + 33 base58.

### `check_calldata_intent` (~276 tokens)

Decode a transaction and compare with declared intent (free)

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.

Input parameters:

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

### `verify_payment_requirements` (~212 tokens)

Verify a signed x402 402 response was not tampered with (free)

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.

Input parameters:

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

### `evidence_bundle` (~152 tokens)

Signed evidence bundle for an address (free)

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.

Input parameters:

- `address` (string, required): EVM (0x…), Solana / Tron (base58) or Bitcoin address.
- `network` (string): Chain, e.g. ethereum, base, solana (optional).

### `compliance_decision` (~283 tokens)

Gateway compliance decision for a payment (paid, x402 $0.30)

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.30 in real USDC settled on Base mainnet (eip155:8453). Always confirm the live network/price at https://oceanalt.com/api/x402 and use a dedicated low-balance payer wallet.

Input parameters:

- `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, required): Payee address the agent intends to pay. EVM (0x + 40 hex) or Tron (T + 33 base58).

### `deep_trace` (~180 tokens)

Deep taint trace of a Tron address (paid, x402 $0.20)

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

Input parameters:

- `address` (string, required): Tron address to trace (T + 33 base58). USDT on TRON.

### `batch_screen` (~182 tokens)

Batch-screen up to 25 addresses (paid, x402 $0.10)

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

Input parameters:

- `addresses` (array, required): Addresses to screen (max 25), each 0x… (EVM) or T… (Tron). Duplicates and blank entries are ignored.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/com-oceanalt-aml/oceanalt-aml-mcp#diagnostics

## Score history

- 2026-09-20: 69
- 2026-09-19: 68
- 2026-09-18: 68
- 2026-09-17: 67
- 2026-09-16: 67
- 2026-09-15: 57
- 2026-09-14: 69
- 2026-09-13: 69
- 2026-09-12: 69
- 2026-09-11: 69
- 2026-09-10: 69
- 2026-09-09: 58

## 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. Screen a payee address before an AI agent pays: sanctions, mixers, scam lists, on-chain risk. This page covers its npm package (oceanalt-aml-mcp).

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

com.oceanalt/aml scores 69 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 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 12 tools: screen_address, payee_decide, counterparty_control_baseline, resolve_agent_identity, recent_flagged, and 7 more. Their descriptions and schemas cost roughly 2,565 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 20 September 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.

## Links

- npm package: https://www.npmjs.com/package/oceanalt-aml-mcp
- Socket report: https://socket.dev/npm/package/oceanalt-aml-mcp
- Website: https://oceanalt.com/en/api-docs
- Changelog RSS feed: https://verifymcp.io/servers/com-oceanalt-aml/oceanalt-aml-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-oceanalt-aml/oceanalt-aml-mcp.json
- HTML version of this page: https://verifymcp.io/servers/com-oceanalt-aml/oceanalt-aml-mcp
