Skip to main content
Glama

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.

What it returns

Every classification carries the reliability envelope:

Field

Meaning

category

Canonical event type (swap, liquidity_add, reward, bridge, ...)

treatment

Closed enum: disposal, income, non_taxable, expense, needs_review

taxable

true, false, or null — null always travels with needs_review: true

confidence

Routing signal: how strongly independent evidence agreed

needs_review

The honesty contract — uncertain rows are flagged, never guessed

grey_area

On contested treatments (LP, wrap, liquid staking): the position not taken

assets

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 with PORT; binds 0.0.0.0)

  • Paths: POST / and POST /mcp (streamable HTTP / JSON-RPC)

  • Health: GET / or GET /health

  • No API key for initialize, tools/list, or ping

  • tools/call returns 401 unless CTE_API_KEY is set or the request already has Authorization: Bearer …

docker build -t cryptotaxedge-mcp .
docker run --rm -p 8080:8080 cryptotaxedge-mcp
curl -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.


Classifications are informational only, not tax advice. Verify results with a qualified tax professional before filing.

Available Tools

4 tools
classify_batchClassify transaction batchA
Read-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 transactionA
Read-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 metadataA
Read-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 accountsA
Read-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

    A4.4/5.0

    Scored across 4 tools

    Disambiguation4/5

    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.

    Naming Consistency5/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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

    ActivityStale
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      A
      maintenance
      Parse 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 npm
      ISC
    • A
      license
      Not graded
      quality
      D
      maintenance
      Cost basis tracking, capital gains calculation, and 1099-DA reconciliation for Claude, built on top of the Crypto Portfolio MCP data layer.
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Reference 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.
      3
      MIT