MCP server · stdio · npx

Give your agent
a compliance desk.

A Model Context Protocol server that hands your agent two tools — check_address and screen_transaction — so it can screen a wallet or a transfer for sanctions, mixers and stolen funds before it moves money on your behalf, not after. One command to install, no build step, no SDK.

open source · MIT licensed · Node.js 18+

or check it in Telegram — @traqlcheckbot

Networks screened

BitcoinEthereumBNB Smart ChainTRONTON

// add it to Claude Code

claude mcp add traql \
  --env TRAQL_API_KEY=your_key \
  -- npx -y @traql/mcp
# check_address({ chain: "ethereum",
#                 address: "0x8589…fda16" })
RISK 100/100 — CRITICAL
Flags: sanctions, mixer, scam
  +80  sanctions label "Tornado.Cash: Donate"
  +68  mixer label "Tornado.Cash: Donate"
  ... and 19 more

3 free checks on signup · no card · source on GitHub

// install

One command, any client.

Published as @traql/mcp on npm and as io.traql/mcp-server in the official MCP Registry. Every client below runs it the same way — npx -y @traql/mcp over stdio, nothing to build or keep updated yourself.

CLAUDE CODE

One line, from the CLI

Registers the server and its API key in one shot — no config file to hand-edit.

claude mcp add traql \
  --env TRAQL_API_KEY=your_key \
  -- npx -y @traql/mcp

CLAUDE DESKTOP

claude_desktop_config.json

Add a traql entry under mcpServers and restart Claude Desktop.

{
  "mcpServers": {
    "traql": {
      "command": "npx",
      "args": ["-y", "@traql/mcp"],
      "env": { "TRAQL_API_KEY": "your_key" }
    }
  }
}

CURSOR

~/.cursor/mcp.json

Same shape as Claude Desktop's config, in Cursor's own MCP settings file.

{
  "mcpServers": {
    "traql": {
      "command": "npx",
      "args": ["-y", "@traql/mcp"],
      "env": { "TRAQL_API_KEY": "your_key" }
    }
  }
}

VS CODE

.vscode/mcp.json

VS Code uses servers instead of mcpServers, and each entry needs an explicit type.

{
  "servers": {
    "traql": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@traql/mcp"],
      "env": { "TRAQL_API_KEY": "your_key" }
    }
  }
}

// environment variables

// tools

Two tools, one client.

Both tools return the same shape as the REST API: a 0–100 score, a risk band and a list of flags in the text content, plus a machine-readable structuredContent object alongside it — see Output below.

CHECK_ADDRESS

Score a single address

Direct label matches plus one hop of traced counterparty exposure, for a wallet on its own.

SCREEN_TRANSACTION

Score a transaction — before or after it happens

Two modes in one tool. Pass tx_hash and traql fetches an already-broadcast transaction and screens both sides of it — works on Ethereum, BNB Smart Chain, TRON and TON. Pass from and to instead and it screens a transfer before you send it, on any of the five networks, no hash required yet.

// the response

Score, band, flags — and why.

This is a real call, unedited:

ethereum address 0x8589427373d6d84e98730d7795d8f6f8731fda16
RISK 100/100 — CRITICAL
Flags: sanctions, mixer, scam

Signals (21):
  +80  [sanctions/eth_labels] direct.sanctions — sanctions label "Tornado.Cash: Donate"
  +68  [mixer/eth_labels] direct.mixer — mixer label "Tornado.Cash: Donate"
  +10  [mixer] behavior.mixer_contact — direct contact with mixer 0xdd4c…3384
  +9   [sanctions/ofac_sdn] indirect.sanctions — sent to Semenov Roman (18% of USDC volume)
  ... and 17 more

score runs 0–100 and maps to a band: clean 0–9, low 10–39, elevated 40–69, high 70–89, critical 90–100. flags are the risk categories behind the score. With an API key, the response also carries itemized reasons — each one names its source, the entity behind it, its category, a severity and a confidence. A partial: true flag means one of the underlying data sources was degraded for that call — the score is a lower bound, not the final word.

Alongside the text above, both tools also return a structuredContent object with the same fields as JSON — so an agent doesn't have to parse the sentence to branch on score or band, it can read the field directly and decide programmatically whether to proceed, warn or refuse.

// use cases

Where an agent reaches for it.

Pre-flight before sending funds

An agent with wallet access calls screen_transaction with from/to before it broadcasts anything, and holds or asks for confirmation on a high or critical band.

Triage an address a user pastes

A support or research assistant runs check_address on any address a user drops into the conversation, before answering questions about it.

Counterparty investigation

An investigative agent walks a list of addresses from a case, checks each one and cites the specific reasons — source, entity, category — in its report instead of just a number.

Automated screening in a pipeline

The same server runs headless — a scheduled job or a queue worker calls it over stdio and gates a downstream action on the returned score, no human reading a chat transcript.

// pricing

Same balance as everything else.

Every successful tool call spends one check from your account balance — 3 checks are free on signup, and packs bring the price down from there. It's the same balance the web checker and your API keys draw from, so there's nothing separate to set up for the MCP server. See the full pricing grid.

// faq

Questions, answered.

What is an MCP server?

MCP (Model Context Protocol) is a standard way to give an AI assistant access to an external tool. traql's MCP server exposes address and transaction risk scoring as two tools an agent can call directly, without you copying and pasting into a chat window.

Which clients does it work with?

Any MCP client that speaks the stdio transport — Claude Code, Claude Desktop, Cursor, VS Code and others. You need Node.js 18+ to run it via npx; no other dependency is required.

Do I need an API key?

No — the server runs without one. Without a key, a call still returns a verdict, but it's collapsed to a single summary sentence rather than the itemized breakdown, and on the hosted API keyless calls are billed per call over x402. Add TRAQL_API_KEY and you get the full response: score, band, flags and itemized reasons.

How much does it cost to run?

Every successful tool call spends one check from your account balance. Signing up gives you 3 free checks, and packs bring the price down from there.

What data leaves my machine?

Only the network and the address (or transaction hash) you're checking, sent to api.traql.io — the MCP server itself runs locally as a thin client. traql doesn't store your raw IP address, only its sha256 hash.

Wire it into your agent —
one call, one verdict.

no card · Node.js 18+ · sign in