Onyx AML

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

Should I use this

Quality & Safety

A
Description quality
96%
Schema completeness
80%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'onyx_balance' description lacks action verbin onyx_balance

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,001Tokens (tool definitions)
~690 BTypical response size
Moderate attention impact (0.78% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "onyx-aml": {
      "url": "https://onyxprotocol.trade/mcp"
    }
  }
}

Remote endpoints

https://onyxprotocol.trade/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
⚪onyx_decide(address, amount_usd, policy)

Return allow / review / deny for a counterparty address against your own risk policy, with the reasons named. Use this before every outbound transfer. Checks issuer blacklists (USDT, USDC), sanctions across six EVM chains plus the OFAC list, open scam databases, community reports and behavioural patterns. Costs credit.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "Blockchain address (TRON, Ethereum or other EVM, Solana)"
    },
    "amount_usd": {
      "type": "number",
      "description": "Amount you intend to send, in USD. Used only if your policy caps amounts."
    },
    "policy": {
      "type": "object",
      "description": "Optional. Omit for a conservative default that returns review for anything unknown.",
      "properties": {
        "deny_zones": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "review_zones": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "min_age_days": {
          "type": "integer"
        },
        "max_amount_usd": {
          "type": "number"
        }
      }
    }
  },
  "required": [
    "address"
  ]
}
⚪onyx_screen(address)

Return the raw risk markers for one address: risk zone, issuer blacklists, sanctions coverage, scam databases, community reports, address age, balance and exchange attribution where known. Use this when you want the facts rather than a decision. Costs credit.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "Blockchain address (TRON, Ethereum or other EVM, Solana)"
    }
  },
  "required": [
    "address"
  ]
}
⚪onyx_screen_batch(addresses)

Screen up to 50 addresses in a single call, for example before a mass payout. Priced per address, and only addresses actually screened are charged. Each result carries facts_complete so you can tell whether the behavioural facts finished loading.

Input Schema

{
  "type": "object",
  "properties": {
    "addresses": {
      "type": "array",
      "items": {
        "type": "string",
        "description": "Blockchain address (TRON, Ethereum or other EVM, Solana)"
      },
      "maxItems": 50
    }
  },
  "required": [
    "addresses"
  ]
}
🟢onyx_preflight(address, known_addresses)

Operational safety check for a payment, separate from risk screening. Detects address poisoning (a lookalike planted in your history so it gets copied instead of the real address), contract recipients that would swallow the tokens, and addresses that behave differently on different chains. Pass known_addresses (the counterparties you already use) to enable poisoning detection. In our live-traffic sample this class of loss came up far more often than sanctioned counterparties. Dedicated transaction-security services cover part of it; no AML screening does. Run this together with onyx_decide before every payment.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "Blockchain address (TRON, Ethereum or other EVM, Solana)"
    },
    "known_addresses": {
      "type": "array",
      "items": {
        "type": "string",
        "description": "Blockchain address (TRON, Ethereum or other EVM, Solana)"
      },
      "maxItems": 200,
      "description": "Addresses you have used before, so a lookalike can be spotted. Strongly recommended."
    }
  },
  "required": [
    "address"
  ]
}
⚪onyx_trace(address)

Multi-hop trace of outgoing flows from an address, with attribution where a node is known (exchange labels, deposit addresses). Use it to establish provenance after receiving funds. Costs more than a screening call.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "Blockchain address (TRON, Ethereum or other EVM, Solana)"
    }
  },
  "required": [
    "address"
  ]
}
🟡onyx_watch(address, callback_url)

Subscribe to an address. When it enters an issuer blacklist, a sanctions list or a scam database, we POST a signed event to your callback URL. A one-off check cannot warn you about a freeze that has not happened yet. Billed per address per day. The callback must be public https.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "Blockchain address (TRON, Ethereum or other EVM, Solana)"
    },
    "callback_url": {
      "type": "string",
      "description": "Public https URL to receive events"
    }
  },
  "required": [
    "address",
    "callback_url"
  ]
}
⚪onyx_balance

How much credit your API key has left, and the current prices. Free.

Input Schema

{
  "type": "object",
  "properties": {}
}
⚪onyx_payment_info

Machine-readable payment terms: which asset and network to send, the address, prices per operation, and how to claim an API key from the address you paid from. No account or signup is involved. Free, and works without a key.

Input Schema

{
  "type": "object",
  "properties": {}
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools