CryptoTaxEdge
Provides US tax classification for on-chain Ethereum transactions, including swaps, liquidity adds, rewards, and bridges, with per-leg asset breakdowns and counterparty identification.
Provides US tax classification for on-chain Solana transactions, including swaps, liquidity adds, rewards, and bridges, with per-leg asset breakdowns and counterparty identification.
CryptoTaxEdge MCP Server
US tax classification for on-chain transactions, as an MCP server. Submit transaction hashes and get back the canonical event category, the US tax treatment with cited authority, a calibrated confidence score, an explicit route-to-review flag on uncertain rows, and per-leg breakdowns with counterparty identification. 80+ chains, including Ethereum, the major L2s, and Solana.
This is a remote MCP server — nothing to install or run locally.
Endpoint:
https://mcp.cryptotaxedge.com/(streamable HTTP, JSON-RPC 2.0)Auth:
Authorization: Bearer YOUR_API_KEY— free self-serve Developer key (no card) at dashboard.cryptotaxedge.com under Settings → API KeysSite: cryptotaxedge.com
What it returns
Every classification carries the reliability envelope:
Field | Meaning |
| Canonical event type (swap, liquidity_add, reward, bridge, ...) |
| Closed enum: |
|
|
| Routing signal: how strongly independent evidence agreed |
| The honesty contract — uncertain rows are flagged, never guessed |
| On contested treatments (LP, wrap, liquid staking): the position not taken |
| Per-leg sent/received breakdown with counterparties |
Plain transfers, approvals, spam, failed and unsupported transactions, and every repeat come back fully identified at no charge.
Related MCP server: Crypto Tax MCP
Try it
List the tools:
curl -X POST https://mcp.cryptotaxedge.com/ \
-H "Authorization: Bearer $CTE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Classify a batch (up to 100 per call):
curl -X POST https://mcp.cryptotaxedge.com/ \
-H "Authorization: Bearer $CTE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"classify_batch","arguments":{"transactions":[{"tx_id":"row_1","tx_hash":"0x...","chain":"ethereum"}]}}}'The same engine is available over plain REST — see the API docs and the developer quickstart.
Registry manifest
server.json — published to the official
MCP Registry as
io.github.sturs49/cryptotaxedge.
Listed on Glama
(glama.json).
License
MIT © 2026 Kevin Stursberg / CryptoTaxEdge. This repository is the public listing (docs, registry manifest, and a small catalog proxy). The classification engine is the remote server above, not this repo.
Glama / local container
Glama grades Tool Definition Quality from a container that starts and answers
MCP initialize + tools/list. The image is a tiny Node proxy — it does not
ship the engine. Catalog methods are forwarded to https://mcp.cryptotaxedge.com/.
Listen port:
8080(override withPORT; binds0.0.0.0)Paths:
POST /andPOST /mcp(streamable HTTP / JSON-RPC)Health:
GET /orGET /healthNo API key for
initialize,tools/list, orpingtools/callreturns 401 unlessCTE_API_KEYis set or the request already hasAuthorization: Bearer …
docker build -t cryptotaxedge-mcp .
docker run --rm -p 8080:8080 cryptotaxedge-mcpcurl -X POST http://localhost:8080/ \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"local","version":"0"}}}'
curl -X POST http://localhost:8080/ \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'If Glama generates a Dockerfile and wraps CMD with mcp-proxy --, set the
admin CMD arguments to ["node", "server.mjs", "--stdio"]. The same process
also accepts stdio when started without --stdio.
Cite / provenance
The category vocabulary and treatment semantics this server returns are the CryptoTaxEdge Classification Standard: an open, versioned schema with worked examples and tax-position caveats, licensed CC BY 4.0. The standard and the 2026 H1 labelled benchmark corpus (388 public transaction hashes) are archived at DOI 10.5281/zenodo.21911546 and mirrored as a Hugging Face dataset: CryptoTaxEdge/crypto-tax-classification-2026h1.
Methodology and benchmark notes: cryptotaxedge.com/research
Verbatim request/response captures, replayed nightly against the live engine: sturs49/cryptotaxedge-examples
Classifications are informational only, not tax advice. Verify results with a qualified tax professional before filing.
Available Tools
4 toolsclassify_batchClassify transaction batchARead-onlyIdempotent
Classify a batch of blockchain transactions (up to 100) using CryptoTaxEdge's classification engine. Built for accounting platforms integrating CTE as their classification layer. Returns per-transaction: canonical category (swap / transfer / income_receipt / fee_payment / borrow / repay / collateral_supply / collateral_withdraw / liquidity_add / liquidity_remove / unclassified), tax treatment (taxable, tax category), confidence score, and a natural-language explanation. Complex multi-step transactions (flash loans, batch NFT sales, bridges, DCA programs) additionally return a per-leg breakdown and a preparer-ready memo with IRS citations. EVM + Solana. Pass engagement_id / firm_id to apply firm-specific classification policy when configured.
Inputs: transactions (required), firm_id, engagement_id. Returns: results
classify_transactionClassify one transactionARead-onlyIdempotent
Classify a single blockchain transaction using CryptoTaxEdge's multi-source consensus engine, the same engine and serve semantics as the public REST /v1/classify endpoint. Returns the /v1 contract fields: category (swap / transfer / stake / lend / bridge / etc.), treatment (disposal / income / non_taxable / expense / needs_review), taxable, confidence, needs_review, plus a natural-language description. Works for EVM chains and Solana. Provide tx_hash (chain optional, auto-detected), or contract_address + function_selector + chain for a rule-library tuple lookup.
Inputs: chain, tx_hash, contract_address, function_selector. Returns: taxable, category, protocol, treatment, +3 more
lookup_contractLook up contract metadataARead-onlyIdempotent
Look up a smart contract in CryptoTaxEdge's registry. Returns protocol metadata, contract type, verified ABI availability, label, and category hints. Use before deciding whether to classify a tx.
Inputs: chain (required), address (required). Returns: name, chain, category, protocol
map_to_chart_of_accountsMap to chart of accountsARead-onlyIdempotent
Map classified blockchain transactions into journal-entry-ready ledger lines against a chart of accounts. For each transaction (up to 100): debit account, credit account, optional gain/loss plug account, memo (protocol + reasoning), confidence, and a route-to-review flag, plus category roll-ups with the governing US tax authority (IRC §1001, §61, Rev. Rul. 2019-24, Rev. Rul. 2023-14, etc.). Pass your own chart_of_accounts (array of {name, type}) and the tool maps to YOUR account names; omit it for a standard crypto-treasury chart. Suggested, non-binding entries: the ledger platform owns amounts, cost basis, and posting.
Inputs: transactions (required), chart_of_accounts. Returns: account, mapping_basis
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 4 tools
classify_transaction and classify_batch share the same core action and could be confused, though their single-vs-batch distinction is clearly described. lookup_contract and map_to_chart_of_accounts are each unambiguously distinct from the classification tools.
All tool names follow a clear verb_noun style: classify_transaction, classify_batch, lookup_contract, and map_to_chart_of_accounts. The pattern is consistently applied and easy to predict.
Four tools is well-scoped for this server's purpose: contract lookup, single classification, batch classification, and chart-of-accounts mapping. Each tool earns its place and the count stays comfortably within the ideal range.
The core workflow of lookup, classify, batch-classify, and map to ledger entries is well covered. The only notable gap is the absence of a reclassification or review-override tool for adjusting previous decisions, but this is a minor gap for a stateless classification API.
Maintenance
Related MCP Connectors
US tax classification for on-chain transactions: category, treatment, confidence, review flags.
Institutional asset taxonomy, scores, entity and VASP directories, mappings and crypto actions.
Raw and normalized on-chain data: balances, transactions, blocks and Ethereum validator activity.
Token risk, wallet profiles, OFAC screening, whale trades on 6 chains. x402, USDC per call.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceParse crypto exchange CSVs (Coinbase, Binance, Kraken, +11 more) and bank statement PDFs (Chase, BofA, +11 more) into Koinly, TurboTax, CoinLedger, or ZenLedger formats. Free tier: 25 files/month, no credit card required.1 npmISC
- AlicenseNot gradedqualityDmaintenanceCost basis tracking, capital gains calculation, and 1099-DA reconciliation for Claude, built on top of the Crypto Portfolio MCP data layer.MIT
- AlicenseNot gradedqualityBmaintenanceReference data layer for prediction markets: resolution-clarity grades (A/B/C), named resolution sources with provenance, cross-venue linking, and per-contract eligibility screens across Kalshi and Polymarket. Open,read-only, no key required.3MIT
- FlicenseNot gradedqualityDmaintenanceClassifies Solana on-chain transactions into tax categories (e.g., swap, stake, NFT) and exports CSV reports compatible with TurboTax and CoinTracker.-