cleartrace
Neutral on-chain execution benchmarking: slippage, revert rates, MEV, and DEX frontend attribution.
What it can do
What data it sees
Do you need an account
An API key from the service settings is required
Neutral on-chain execution benchmarking: slippage, revert rates, MEV, and DEX frontend attribution.
How to connect
How to connect cleartrace to Claude
The server address to paste into Claude settings:
https://cleartracedata.com/mcp
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect cleartrace to ChatGPT
The server address to paste into ChatGPT settings:
https://cleartracedata.com/mcp
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect cleartrace to Cursor
The server address to paste into Cursor settings:
https://cleartracedata.com/mcp
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (7)
Raw names from tools/list. Only developers need these.
| execution_benchmarks | Rank DEXs and aggregators by realized execution quality: median slippage against a 1-minute VWAP baseline, expressed as a score of 0-100 (higher means less slippage). This score measures SLIPPAGE ONLY. Revert rates and MEV exposure are tracked as separate metrics and are deliberately not folded in, so do not present this as an overall 'best execution' ranking -- a venue can score well here and fail often, and the caller has to ask `revert_rates` to find that out. Execution quality is not uniform across chains: pass a chain for a single-chain ranking, or 'all' for the blended cross-chain rollup, and do not describe the blend as if it were one chain's result. |
| revert_rates | The share of a venue's routing transactions that fail on-chain, per chain. Reported separately from slippage because reliability and price are different questions. DO NOT RANK ACROSS EXECUTION MODELS. A revert rate measures reliability only where the failing transaction is the user's own -- a 'router' venue, where the user signs and submits the swap. On a batch-auction or intent venue a solver settles, and an order that cannot be filled never becomes a transaction at all, so its on-chain revert rate is structurally near zero no matter how well or badly it fills. Sorting every venue by revert rate puts those at the top and means nothing. `comparable_only` (the default) returns only the rows that may legitimately be ranked against each other. Read `user_revert_rate_pct` when present: the headline rate on some cells stays inflated by address-rotating spam senders that no per-sender filter separates cleanly, and the user-only figure is the measured genuine-user experience. Each row carries its `execution_model` and a `revert_comparable` flag; quote them. |
| attribution | Which frontend, router or interface originated on-chain DEX volume, aggregated per contract per chain. This is the dataset ClearTrace exists for: it names the venue behind volume that block explorers leave as an anonymous contract. THE VOLUME COLUMNS ARE TWO DIFFERENT KINDS AND MUST NOT BE SUMMED TOGETHER. `direct_volume_usd`, `aggregator_volume_usd`, `proxy_volume_usd` and `aggregator_partner_volume_usd` partition `total_volume_usd` between them. `calldata_suffix_volume_usd` and `erc20_fee_volume_usd` are OVERLAYS: they re-describe dollars already counted in the first group, seen through a different attribution vector. A suffix figure larger than the total is therefore correct and is not a bug. Adding an overlay to a partition column double-counts. Volumes refresh weekly and are dated to the Monday of their window, so present them as a week's volume and never as today's. |
| contract_attribution | What ClearTrace knows about a single contract or wallet address: its per-chain volume split across the four attribution vectors, plus any label resolved for it. Most useful on the ANONYMOUS routers and proxies that aggregate views leave unnamed -- that is the differentiated question this answers. Known, named protocol contracts are often keyed by name rather than address upstream and may return nothing here, so an empty result for a famous router is not evidence the address is obscure. An address that resolves to no label is reported with a null label. Report that as 'not identified', which is what it means: these are genuinely anonymous deployments, and guessing an operator from volume or deployer alone has been wrong before. |
| explain_transaction | Classify a single transaction against the attribution engine: which frontend or router originated the trade and by which evidence, the pools it touched, any fee recipients, and whether it was sandwiched. Confidence is per-vector and is reported per result -- a calldata suffix is strong evidence a specific frontend tagged the swap, while a fee recipient is indirect evidence and is never rated high. Pass that qualification through instead of stating the frontend flatly. `estimated_volume_usd` (only with price=true) is a best-effort spot price on the dominant leg. It is an approximation for orientation and must never be quoted as a settlement figure. Fee amounts are exact raw token integers with no decimals or pricing applied. deep=true costs more upstream credits; leave it off unless a shallow classification came back unattributed. |
| gas_prices | Current gas price on each supported chain, from RPC. On the L2s (Base, Arbitrum, Optimism) this is the EXECUTION gas price only and excludes the L1 data availability fee, which is a real and sometimes dominant part of an L2 transaction's cost. Any cost estimate built from this figure on an L2 is a lower bound and should be labelled as one; comparing an L2 'cost' against Ethereum's on this basis overstates the L2's advantage. |
| request_api_key | Mint a free API key that multiplies this server's rate limits by 10x. Requires an email address. The key changes LIMITS ONLY. Every figure served here is public and identical with or without one, there is no paid tier, and no data is gated behind it -- so present this as raising a ceiling, never as unlocking content. Ask the user before submitting their email; do not invent an address to satisfy the argument. The key is returned once and cannot be shown again, so surface it to the user verbatim. |