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: hive-mcp-agent-kyc

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
entityYesThe accountable party's legal or commonly-used name. This is who the attestation is about, not your agent's name.
agentIdNoIf this party already has an agent registered with OceanAlt, link the attestation to it.
answersYesMap of control id to boolean, e.g. {"ACB-1.1": true, "ACB-2.1": false}. Ids come from baseline_controls.
contactNoContact for follow-up. Not published.
gapPlanNoFor controls answered false: how and when you plan to close them.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=true) by disclosing the consequence of the write: the attestation is published so payers can see it before settling, no account or key is required, and false answers are tolerated rather than rejected. The authorisation warning and publication audience are exactly the behavioural context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action, then the sibling contrast, then the operational facts (free, prerequisite, gap handling, authorisation). Every sentence carries distinct information; the terse 'No account, no key, one call.' is efficient signalling rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter, nested-object mutation with no output schema, it covers prerequisites, authorisation, publish consequences, and gap semantics. It stops short of saying whether re-filing replaces a prior attestation or how a filed attestation can be corrected, though idempotentHint gestures at repeat-call behaviour.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds workflow meaning the schema lacks: control ids must come from baseline_controls, gaps are answered false, and gapPlan is the companion field for those falses. It does not clarify the entity-vs-agentId relationship beyond what the schema says, keeping it short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('File your operator's control-baseline attestation') and immediately distinguishes it from the named sibling counterparty_control_baseline by direction of disclosure ('that tool asks what controls the OTHER side runs; this one publishes what YOUR side runs'). An agent can select correctly without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: get control ids from baseline_controls first, use counterparty_control_baseline when you want the other side's controls, and only file for a party you are authorised to speak for. It also pre-empts the 'what if a control isn't in place' case (answer false, explain in gapPlan), so no major decision is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only and idempotent behavior, so the bar is lower. The description adds real context beyond them: the controls are pre-money-movement gates, each is yes/no answerable, and each discloses its enforcing layer, which tells the agent what the payload contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the resource definition followed by the call-ordering instruction. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description compensates by explaining the return payload (yes/no controls with enforcing layers). For a zero-param read tool with annotations, this is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline is 4. The description correctly adds nothing about inputs and instead describes what the output conveys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (Fetch) plus a named resource (OceanAlt Agent Control Baseline) described as controls an agent operator runs before money movement, each answerable yes/no. That concrete framing distinguishes it from siblings like attest_control_baseline and counterparty_control_baseline.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to call it: before attest_control_baseline, so the agent files against real control ids. This is a genuine ordering dependency that routes the agent correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressesYesAddresses to screen (max 25), each 0x… (EVM) or T… (Tron). Duplicates and blank entries are ignored.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false and openWorldHint=true; the description carries the critical extras — it moves REAL money, needs OCEANALT_PAYER_KEY, costs $0.01 USDC on Base mainnet (eip155:8453), the price/network should be confirmed at a live URL, and a dedicated low-balance wallet is advised. This is exactly the beyond-annotation disclosure that matters for an irreversible paid call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded: purpose first, then return shape, then cost rationale, then the payment mechanics. The $0.01 figure appears in both the title and body, and the payment block is dense, but nearly every clause earns its place given the money-at-risk.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description fully specifies the return contract (verdict enum, risk score, blocked flag, top signal, summary counts, risky-first ordering) and adds the irreversible-cost context an agent needs before calling. Nothing material is missing for a one-parameter paid batch tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema description coverage is 100%, so the schema already documents the 25-item cap, address formats, and duplicate/blank handling. The description's mention of the 25 limit and address formats is a restatement rather than added meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (screen), resource (blockchain addresses), and scope (up to 25 in a single call), then enumerates the exact return fields. The 'up to 25' batch framing implicitly separates it from the single-address sibling, so an agent can place it without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Cheaper per address than screening one at a time' gives a clear cost-based reason to prefer this tool over the one-at-a-time alternative, and the supported address formats (EVM 0x…, Tron T…) frame applicability. It never names the alternative tool explicitly nor states when NOT to batch, so it falls short of the 5 bar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoEVM only: 0x-prefixed hex calldata.
valueNoEVM only: native value in wei.
intentNo
networkNo'solana' to decode a Solana transaction; EVM chain name or CAIP-2 id otherwise.
contractNoEVM only: the transaction's `to` (token contract, or the recipient for native transfers).
transactionNoSolana only: base64-serialized transaction or message.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover readOnly/idempotent/openWorld; the description adds substantial context beyond them: that it is free with no API key, what it decodes per chain, the meaning of each decision outcome, and a genuine caveat that address-lookup-table accounts yield 'unknown' rather than a safe verdict. With no output schema, this return-value disclosure is exactly what the description should carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the anti-blind-signing purpose, then structured by chain with parenthetical enumerations. It is dense but nearly every clause carries information a caller needs; the decoded-operation lists are the only slightly padded part.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the heavy lifting on return semantics and unknown-handling, and it labels chain-specific parameters. It stops short of stating which parameter combinations are required (0 are marked required) or what happens on undecodable/malformed input beyond the lookup-table case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 83%, so the schema already documents parallel EVM-only vs Solana-only fields, the base-units convention for amount, and network semantics. The description echoes the chain split ('EVM: ...', 'Solana: ...') but adds no format or validation detail beyond what the schema provides. Baseline 3 for high coverage is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a precise framing ('Anti blind-signing') then states the exact verb and resource: decode calldata / a base64 Solana transaction and compare against declared intent. It enumerates the specific decoded operations (ERC-20 transfer/approve/permit, setApprovalForAll, SPL TransferChecked, SetAuthority, etc.), which clearly separates it from siblings like verify_payment_requirements or payment_decision.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear decision rule tied to the tool's use: match = proceed, mismatch = 'do not sign', unknown = not the same as safe. This tells an agent how to act on the result. It does not, however, explicitly contrast when to reach for this versus siblings such as verify_payment_requirements or payment_decision.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesPayee address the agent intends to pay. EVM (0x + 40 hex) or Tron (T + 33 base58).
networkNoEVM chain for the payee (same set as screen_address). Optional; ignored for Tron.
purposeNoShort free-text note on what the payment is for. Optional (max ~120 chars).
amountUsdcNoPayment amount in USDC. Optional; used only for record / mandate-limit checks, not required to get a decision.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only flag readOnlyHint=false and openWorldHint=true; the description goes far beyond them, disclosing the HTTP 402 handshake, that real USDC on Base mainnet moves, the required OCEANALT_PAYER_KEY, the $0.002 cost, and the alternative OCEANALT_CREDIT_TOKEN path with its credit-pack economics. It even advises confirming live price/network and using a low-balance wallet.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and usage are front-loaded in the first two sentences, followed by the payment mechanics. It is long, but the length is justified by the real-money payment flow; a couple of clauses about credits and network confirmation could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return contract and does sketch it ('DECISION — allow | review | decline — plus advice and verifiable evidence'). Payment/auth prerequisites are fully covered; the shape of the advice/evidence payload and failure modes remain unstated, which is the only material gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents to, network, purpose, and amountUsdc, including address formats, enum chains, and the 'optional, ignored for Tron' note. The description adds no parameter-level detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Run OceanAlt's full compliance gateway on a proposed payment') and names the concrete outcome ('allow | review | decline plus advice and verifiable evidence'). The 'not just raw data' framing plus the mention of combining AML screening with RAP gate checks separates it from raw-screening siblings like screen_address.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this when an agent needs a go/no-go call before releasing funds' gives a clear triggering condition. It implies the raw-data alternative exists but does not explicitly name which sibling to use when a decision is not needed, nor does it state exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
entityNoThe counterparty's entity name, e.g. "Acme Robotics Ltd".
agentIdNoTheir agent id, if you have it instead of an entity name.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover readOnly/idempotent/openWorld; the description goes well beyond by disclosing the free/no-API-key terms, the critical found:false semantics ('no information, not a bad signal'), and that results split into verified_by_oceanalt versus self_claimed with the latter unverified. These are exactly the behavioral traits an agent needs to interpret the result correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but every sentence carries load: positioning, control enumeration, verified vs. self-claimed split, and the found:false caveat. The opening 'Answers a different question from address screening' front-loads the differentiator, though the paragraph is long enough that the found:false warning arrives late.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must explain return values, and it does: verified_by_oceanalt, self_claimed, and a found flag with interpreted meaning. For a read-only lookup with no required parameters, nothing an agent needs to call and correctly interpret it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (entity, agentId) are documented in the schema itself. The description adds no lookup syntax, precedence, or fallback guidance beyond what the schema provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise resource and the exact question it answers: a counterparty's self-attestation against the OceanAlt Agent Control Baseline, including what controls are checked (spending ceiling, payee restriction, credential revocation). It explicitly distinguishes itself from the sibling screen_address by framing screening vs. control-baseline as different questions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage context (checking controllable damage exposure before paying) and an explicit when-not rule: a found:false result is not a bad signal and must not be the sole basis for declining a payment. It does not name the write-side sibling attest_control_baseline or clarify entity vs. agentId lookup preference, so it stops short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesTron address to trace (T + 33 base58). USDT on TRON.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only carry readOnlyHint=false and openWorldHint=true; the description adds substantial behavioral context beyond them: PAID via x402, moves REAL money, requires OCEANALT_PAYER_KEY, costs $0.01 USDC settled on Base mainnet, recommends a dedicated low-balance wallet, and states the analysis limits (main path only, depth ≤3, no hit does not prove cleanliness). This is far richer than the annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose, then payment mechanics, then limitations, with no filler sentences. It is dense and slightly long, mixing four concerns (scope, payment, cost, caveats) into one paragraph, but every clause carries operational weight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the operation, payment model, network, cost, key requirement, and limitations thoroughly — the critical facts for safe invocation. With no output schema, it does not describe the return structure (hop details, hit categories), which is the one remaining gap for a paid tracing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single required parameter with 100% schema description coverage, so the schema already documents the address format. The description confirms the Tron-only constraint and reaffirms 'USDT' semantics, adding marginal value over the schema but nothing on syntax. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Trace a Tron (TRON) USDT address up to 3 hops back along its largest incoming transfers') and precisely what it checks for (Tether-frozen, sanctioned, mixer, scam upstream). It explicitly distinguishes itself from a single-address screen ('deeper than a single-address screen'), routing the agent away from the sibling screen_address.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for when this is the right call versus a shallow screen ('deeper than a single-address screen') and scopes applicability ('Tron only (T…)'). It stops short of an explicit when-not or directly naming screen_address as the lighter alternative, but the comparative framing is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesEVM (0x…), Solana / Tron (base58) or Bitcoin address.
networkNoChain, e.g. ethereum, base, solana (optional).

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/openWorld/idempotent annotations: discloses that output is Ed25519-signed and offline-verifiable, that OceanAlt assumes a witness posture with no person attribution, that all data is already public with no privileged channel, and gives an explicit rate limit. This is exactly the extra context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the deliverable and its contents, then layers in the epistemic stance and rate limit. Slightly long, and the 'witness, not a plaintiff' framing is more positioning than operational detail, but nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates what the bundle contains, so an agent knows the shape of the response. Missing only guidance on error cases (unresolvable address, unknown network) and size/pagination expectations for a large bundle.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both address formats and the optional network field are already documented in the schema. The description adds no format syntax, defaults, or semantics beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Everything OceanAlt can say about an address, in one Ed25519-signed bundle') and enumerates the payload contents (verdict, profile signals, one-hop relations, receipt stats). This cleanly distinguishes it from siblings like screen_address (single verdict) and deep_trace (graph traversal).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides useful operational context — free, 10 per minute, anyone may request — but never states when to prefer this bundle over screen_address, deep_trace, or batch_screen. Usage is implied by the payload description rather than stated as a selection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
payeeYesPayee sid from the OceanAlt registry, e.g. oceanalt-200lab-premium
purposeNoPurpose of the payment, e.g. api-call
amountUsdcNoAmount in USDC
payerAddressNoThe paying wallet address (screened in reverse)
payerAgentIdNoThe paying agent's KYA id, if the payee requires KYA

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the annotations: it is rule-based (not model judgement), readiness derives from the public registry enforcement ladder, the payer address is screened in reverse, and details the response shape (statuses, reason codes, requested_fields only on hold, evidence, signature). It does not explain the non-read-only/non-idempotent side effects implied by readOnlyHint=false and idempotentHint=false, which is the remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and the settle-time trigger, then progressively adds statuses, behavior, and cost. It is dense with parenthetical URLs and multi-clause sentences, but essentially every sentence carries information, so little is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly enumerates the return values and their conditional fields, and states the cost/auth posture (free, no API key). The only omission is the reason behind the non-read-only annotation, but for a query-style decision tool this leaves nothing an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, but the description adds meaning: payee is a registry sid (with a reference), payerAddress is reverse-screened, and amount/purpose/KYA requirements are driven by the payee's own policy rather than fixed rules. This contextualizes the parameters beyond their schema prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: asking the registered payee (by registry sid) whether it accepts an incoming payment, and explicitly frames itself as 'the other half of a safe agent payment,' distinguishing it from the payer-side siblings. An agent knows exactly what this does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear trigger ('before settling, ask the registered payee') and a strong retry exclusion ('decline is final — re-paying does not change it'). It stops short of naming a specific alternative tool (e.g. payment_decision) for the complementary side, so the when-vs-what routing is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesPayee address the agent is about to pay. EVM: 0x + 40 hex. Tron: T + 33 base58.
langNoLanguage for human-readable fields (signals, note, advice). Defaults to English.
networkNoEVM chain for the payee (same set as screen_address). Optional; ignored for Tron.
purposeNoShort purpose/memo for the payment (optional).
amountUsdcNoAmount in USDC (optional; recorded/echoed, not required for the decision).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the bar is lower, yet the description adds real context: free, no API key, no signup, machine-executable decision values, verifiable evidence, retry semantics, and the attachable compliance attestation. It stops short of describing latency, coverage limits, or what evidence fields look like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core instruction ('Before your agent pays, call OceanAlt once') and ordered by decision-critical information before the free/pricing aside. Slightly dense, but nearly every clause (decision values, attestation, sibling pointer) earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the return-value burden and does so — it names the three decision outcomes, verifiable evidence, retry semantics and the attestation. Combined with the annotations, an agent has everything needed to call and interpret this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents address formats, the network enum, lang, purpose and amountUsdc. The description only reiterates that the payee address is the input, adding no format or constraint detail beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — decide whether to pay a given address before an agent pays — and enumerates the exact output values (allow | review | decline). It also names the sibling it is not (compliance_decision), so an agent can distinguish it without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames usage as a gate in an autonomous payment flow, gives the deciding condition ('if the decision is not "allow", do not pay'), and routes to compliance_decision when settlement on x402 rails is also needed. When-to-use and when-to-use-something-else are both covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is partly covered. The description adds important behavior beyond that: the returned set is a 'representative sample' rather than an exhaustive list, includes source category and reason per address, takes no arguments, and is free with no API key. It does not mention rate limits or response size limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three tight sentences with no filler. It front-loads the core purpose, then use cases, then the no-argument/free constraint, so an agent can parse the key facts immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-argument list tool with no output schema, the description is complete enough: it names the resource, the categories, the per-address return fields (source category and reason), and the sample/no-argument/free constraints. Pagination details are not relevant because it returns a representative sample rather than a paginated full list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters and 100% schema description coverage, the baseline is 4. The description confirms 'Takes no arguments', which is consistent with the empty schema but adds no parameter-level meaning beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Return a representative sample of addresses on OceanAlt's reviewed risk list', and breaks the list into concrete categories (OFAC-sanctioned, mixers, scam/phishing). This is clearly a read/list tool rather than a screening tool, but it never names a sibling like screen_address or batch_screen to make the distinction explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage contexts — grounding, showing what gets blocked and why, and a quick read on the threat surface — which tells an agent when this tool is a good fit. It does not, however, state when NOT to use it or name the screening alternatives for checking a specific address.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesThe agent id to resolve.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, idempotent, openWorld), it discloses rich behavioral semantics: completeness is a factual count not a score, a broken link marks where accountability stops, publication is opt-in with only posture exposed (ceiling existence, never its value), and found:false means absence of information rather than a negative signal. This is exactly the extra context annotations can't convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is on the longer side but front-loads the purpose before moving into behavioral nuance, and each sentence (completeness semantics, opt-in publication, found:false meaning, free/no-key) carries distinct information. Minor redundancy with the title's 'free' claim keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must explain return values, and it does: the per-link hold status, the completeness count, and the meaning of found:false. For a single-parameter resolution tool this is complete enough to call and interpret correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single parameter and 100% schema description coverage, the schema already defines agentId fully. The description explains what the resolved subject is but adds no syntax, format, or constraint detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (resolves) and resource (the chain of accountability behind a paying agent), enumerating the chain links agent → principal → mandate → credential → wallet. This is more specific than a bare restatement, but it does not distinguish itself from siblings such as deep_trace or payee_decide, so no routing help is offered.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear use context — gathering what you need before accepting a payment from an autonomous agent — which implies the trigger condition. However, it names no explicit alternative tool or when-not-to-use case, so an agent must still infer when another sibling is a better fit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage for human-readable fields (signals, note). Defaults to English.
addressYesAddress to screen. EVM: 0x + 40 hex (e.g. 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045). Tron: T + 33 base58 (e.g. TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t). Solana: base58 public key.
networkNoEVM 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.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover safety (readOnly, idempotent, openWorld), yet the description adds substantial context beyond them: what data sources are checked (OFAC, mixers, scam lists, issuer freezes, on-chain heuristics), the three verdict values, a 0-100 score and blocked flag, the important caveat that 'clear' is not a safety guarantee, and chain-dependent screening depth. It also discloses no auth or cost barrier.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a dense block rather than short sentences, but it is front-loaded with the action and trigger, and nearly every clause carries distinct information. The trailing 'Free, no API key, no signup' slightly duplicates the title and cost framing already stated, a minor redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must describe the return payload, and it does precisely: verdict enum, 0-100 risk score, blocked flag, and clickable evidence. It also flags the critical interpretive limit of a clear verdict and points to an external coverage document for chain depth.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents address formats, lang, and the network enum (including auto-detection behavior). The description restates the supported address families (EVM, Tron, Solana) but adds no new format or syntax detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Run an AML compliance screen on a single blockchain address' — and the word 'single' implicitly separates it from the sibling batch_screen. An agent knows exactly what this tool does and at what granularity without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear trigger condition ('BEFORE paying or receiving from it') that tells the agent when in the workflow to call it. It does not explicitly name batch_screen as the alternative for multiple addresses, but the 'single address' scoping makes the division of labor inferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull URL or bare domain of the payment endpoint, e.g. https://pay.example.com/x402 or pay.example.com

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly, idempotent, open-world), and the description adds substantive behavior beyond them: what is actually checked (hostname and parent domains vs. public phishing lists plus shape signals), the four-value return vocabulary with language-independent signal_keys, and the crucial caveat that 'clear' means no match was found, not that the endpoint is safe. It also discloses cost and no API key requirement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and the sibling distinction, and each sentence carries information — the x402 flow sentence justifies why endpoint-level screening is needed. It is somewhat dense and the threat narrative could be tightened, but nothing is pure filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description takes on the burden of explaining the return values, and it does so precisely: the four-level verdict, the meaning of signal_keys, and the critical semantics of 'clear'. Combined with the flow context and cost disclosure, an agent has everything needed to call and interpret this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'url' parameter is fully documented in the schema (full URL or bare domain, with examples). The description's 'URL or domain' phrasing merely restates the schema, adding no format, normalization, or edge-case guidance beyond it, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (screen) and resource (payment ENDPOINT: URL or domain) and explicitly positions itself against the sibling screen_address — 'the half that address screening cannot answer.' An agent can route between the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear timing ('before calling it') and the x402 discovery context in which the URL arrives, plus an explicit pairing instruction ('Use together with screen_address'). It stops short of stating when this tool should NOT be used or what to do with a 'caution' result, so it is clear context rather than full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
expectNoWhat you expect to pay; mismatches are reported.
keys_urlNoWhere the seller publishes its keys (defaults to the keys_url inside the signature).
payment_requiredNoThe decoded PAYMENT-REQUIRED JSON, or the raw base64 header value.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/openWorld, and the description adds genuinely new behavioral detail: the full reason-code enumeration (ok | no_signature | digest_mismatch | signature_invalid | key_unavailable | payto_mismatch | amount_mismatch), the guarantee boundary, and 'Free, no API key'. Strong added context beyond structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the threat model, then the mechanism, then the input contract and outcome vocabulary, closing with cost and limitations. Every sentence carries selection-relevant information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still specifies the return shape ('verified true/false with a reason code') and the enumerated codes, plus auth (no API key) and the limits of the guarantee. Nothing an agent needs to call or interpret it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds marginal value by tying the optional expect.payTo/expect.amount inputs to specific outcome codes (payto_mismatch, amount_mismatch) and clarifying that keys_url falls back to the value inside the signature. It reinforces rather than replaces the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (verify) and resource (signed x402 402 payment requirements) and explains the concrete attack it guards against (transit tampering of payTo). It is clearly distinguishable from sibling screening/tracing/decision tools, which do not touch x402 signing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for use ('Sellers who sign their payment requirements with OceanAlt...') and an explicit scope boundary: it defends against in-transit tampering, not a compromised seller origin. It stops short of naming an alternative sibling when the seller does not sign, but the when-to-use condition is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 15 tool updatesv0.1.1
    • First observedattest_control_baseline
    • First observedbaseline_controls
    • First observedbatch_screen
    • First observedcheck_calldata_intent
    • First observedcompliance_decision
    • First observedcounterparty_control_baseline
    • First observeddeep_trace
    • First observedevidence_bundle
    • First observedpayee_decide
    • First observedpayment_decision
    • First observedrecent_flagged
    • First observedresolve_agent_identity
    • First observedscreen_address
    • First observedscreen_endpoint
    • First observedverify_payment_requirements

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 issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    MCP server for wallet auth: read wallet state on-chain, evaluate against conditions, return an ECDSA-signed boolean with a post-quantum companion signature. Condition-based access across 37 chains (EVM, Solana, XRPL, Bitcoin, Tron, Stellar, Sui). No balances, no identity, no shared secrets; verifiable offline via JWKS. 27 tools: wallet attestation, trust profiles, payment verification.
    27
    136 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    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
    D
    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).
    314 npm
    MIT