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
MCP server · stdio · npx
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
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
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
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
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
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
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
| Variable | Default | Purpose |
|---|---|---|
| TRAQL_API_KEY | — | Your key from app.traql.io. Unlocks the full itemized verdict and spends from your account balance; omit it and the server still answers, just with a single summary line. |
| TRAQL_API_URL | https://api.traql.io | Point the server at a self-hosted traql API instead of the public one. |
| TRAQL_TIMEOUT_MS | 30000 | How long to wait for a scoring call before giving up. |
// tools
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
Direct label matches plus one hop of traced counterparty exposure, for a wallet on its own.
| Argument | Type | Description |
|---|---|---|
| chain | enum | Required. One of ethereum, bsc, tron, ton, bitcoin. |
| address | string | Required. The address to check. |
SCREEN_TRANSACTION
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.
| Argument | Type | Description |
|---|---|---|
| chain | enum | Required. One of ethereum, bsc, tron, ton, bitcoin. |
| tx_hash | string | By-hash mode. Ethereum, BSC, TRON and TON only — omit if using from/to. |
| from / to | string | Pre-flight mode. Required together if tx_hash is omitted — works on all five networks, including Bitcoin. |
| amount | integer | Optional. Transfer size in the asset's base units. |
| asset | string | Optional. Which asset is moving, alongside amount. |
// the response
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
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.
A support or research assistant runs check_address on any address a user drops into the conversation, before answering questions about it.
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.
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
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
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.
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.
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.
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.
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.
no card · Node.js 18+ · sign in