Servidor MCP

cryptotaxedge

io.github.sturs49/cryptotaxedge
Cripto y Web3 Finanzas e inversión Público y accesible MCP 2026-07-28

Qué hace este MCP

Classifies blockchain transactions for US tax treatment, looks up contract metadata, and maps transactions to ledger accounts.

classify_batch
Classify transaction batch
Classify a batch of blockchain transactions (up to 100) using CryptoTaxEdge's classification engine. Built for accounting platforms integrating CryptoTaxEdge as their classification layer. Returns per-transaction: category (the open vocabulary the engine emits, for example swap, transfer, staking, reward, airdrop, income_receipt, fee_payment, borrow, repay, collateral_supply, collateral_withdraw, liquidity_add, liquidity_remove, wrap, unwrap, liquid_staking_mint, bridge_transfer, nft_mint, spam, unclassified; the full set with house treatments is at https://cryptotaxedge.com/standard/#categories and grows additively, so branch exhaustive logic on treatment, never on category), treatment (closed enum: disposal, income, non_taxable, expense, needs_review; needs_review means no treatment is asserted), tax_category (the engine's stored treatment value, kept for existing hosts), taxable, confidence score, needs_review, ledger_action, protocol, description (plain-English reasoning, also returned as explanation for existing clients), assets (sent, received, gas) and a reliability envelope with an explicit route-to-review flag. 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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', 'required': ['transactions'], 'properties': {'firm_id': {'type': 'string', 'description': "(Optional) host-side firm identifier. When firm classification policy is configured, applies that firm's confidence thresholds + CoA overrides."}, 'transactions': {'type': 'array', 'items': {'type': 'object', 'required': ['tx_hash'], 'properties': {'chain': {'type': 'string', 'description': 'Chain slug (e.g. "ethereum", "polygon", "bsc", "arbitrum", "base", "optimism", "avalanche", "solana"). Optional; CryptoTaxEdge auto-detects the chain if omitted.'}, 'tx_id': {'type': 'string', 'description': '(Optional) your own ID for this tx; echoed back so you can correlate results to your records.'}, 'tx_hash': {'type': 'string', 'description': 'Transaction hash (0x-prefixed 66-char for EVM, base-58 for Solana).'}}}, 'maxItems': 100, 'description': 'Array of transactions to classify (max 100 per call).'}, 'engagement_id': {'type': 'string', 'description': '(Optional) host-side engagement identifier. Reserved for firm-policy + engagement-record correlation. No effect today; forward-compatible.'}}}
Esquema de salida
{'type': 'object', 'required': ['results'], 'properties': {'results': {'type': 'array', 'items': {'type': 'object', 'required': ['category', 'treatment', 'confidence', 'needs_review'], 'properties': {'assets': {'type': 'object', 'properties': {'gas': {'type': ['object', 'null']}, 'sent': {'type': 'array'}, 'received': {'type': 'array'}}, 'description': 'Net asset movements, same shape as REST /v1: sent and received legs plus the gas leg (null when not attributable). Present when the engine response carries them.'}, 'taxable': {'type': ['boolean', 'null'], 'description': 'null when needs_review'}, 'category': {'type': 'string', 'description': 'Canonical category. Open vocabulary that only grows additively; tolerate unfamiliar values and branch exhaustive logic on treatment instead. Full set with house treatments: https://cryptotaxedge.com/standard/#categories'}, 'protocol': {'type': ['string', 'null']}, 'treatment': {'enum': ['disposal', 'income', 'non_taxable', 'expense', 'needs_review'], 'type': 'string', 'description': 'Closed five-value tax treatment enum, safe to switch on exhaustively. needs_review means no treatment is asserted.'}, 'confidence': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'description': {'type': ['string', 'null'], 'description': 'Plain-English reasoning for the verdict, same field as REST /v1.'}, 'explanation': {'type': ['string', 'null'], 'description': 'Deprecated alias of description, kept for existing clients.'}, 'needs_review': {'type': 'boolean'}, 'ledger_action': {'type': ['string', 'null'], 'description': 'Suggested ledger label for posting, same field as REST /v1.'}}}}}}
classify_transaction
Classify one transaction
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 (the open vocabulary the engine emits, for example swap, transfer, staking, reward, airdrop, income_receipt, fee_payment, borrow, repay, collateral_supply, collateral_withdraw, liquidity_add, liquidity_remove, wrap, unwrap, liquid_staking_mint, bridge_transfer, nft_mint, spam, unclassified; the full set with house treatments is at https://cryptotaxedge.com/standard/#categories and grows additively, so branch exhaustive logic on treatment, never on category), treatment (closed enum: disposal, income, non_taxable, expense, needs_review; needs_review means no treatment is asserted and taxable is null), taxable, confidence, needs_review, ledger_action, protocol, description (plain-English reasoning, also returned as explanation for existing clients) and, on hash lookups, assets (sent, received, gas). 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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'chain': {'type': 'string', 'description': 'Chain slug (e.g. "ethereum", "polygon", "bsc", "arbitrum", "base", "optimism", "avalanche", "solana"). Optional for tx_hash lookups; the engine auto-detects the chain. REQUIRED for contract_address lookups.'}, 'tx_hash': {'type': 'string', 'description': 'Transaction hash (0x-prefixed 66-char for EVM, base-58 for Solana). Either tx_hash OR contract_address is required.'}, 'contract_address': {'type': 'string', 'description': '(Optional) 0x-prefixed contract address the transaction called. With function_selector + chain, performs a rule-library tuple lookup.'}, 'function_selector': {'type': 'string', 'description': '(Optional) 0x-prefixed 4-byte function selector (first 4 bytes of tx input data).'}}}
Esquema de salida
{'type': 'object', 'required': ['category', 'treatment', 'confidence', 'needs_review'], 'properties': {'assets': {'type': 'object', 'properties': {'gas': {'type': ['object', 'null']}, 'sent': {'type': 'array'}, 'received': {'type': 'array'}}, 'description': 'Net asset movements, same shape as REST /v1: sent and received legs plus the gas leg (null when not attributable). Present when the engine response carries them.'}, 'taxable': {'type': ['boolean', 'null'], 'description': 'null when needs_review'}, 'category': {'type': 'string', 'description': 'Canonical category. Open vocabulary that only grows additively; tolerate unfamiliar values and branch exhaustive logic on treatment instead. Full set with house treatments: https://cryptotaxedge.com/standard/#categories'}, 'protocol': {'type': ['string', 'null']}, 'treatment': {'enum': ['disposal', 'income', 'non_taxable', 'expense', 'needs_review'], 'type': 'string', 'description': 'Closed five-value tax treatment enum, safe to switch on exhaustively. needs_review means no treatment is asserted.'}, 'confidence': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'description': {'type': ['string', 'null'], 'description': 'Plain-English reasoning for the verdict, same field as REST /v1.'}, 'explanation': {'type': ['string', 'null'], 'description': 'Deprecated alias of description, kept for existing clients.'}, 'needs_review': {'type': 'boolean'}, 'ledger_action': {'type': ['string', 'null'], 'description': 'Suggested ledger label for posting, same field as REST /v1.'}}}
lookup_contract
Look up contract metadata
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.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'required': ['address', 'chain'], 'properties': {'chain': {'type': 'string', 'description': 'Chain slug (e.g. "ethereum", "polygon", "arbitrum"). EVM only.'}, 'address': {'type': 'string', 'description': 'Contract address (0x-prefixed 42-char for EVM).'}}}
Esquema de salida
{'type': 'object', 'properties': {'name': {'type': ['string', 'null']}, 'chain': {'type': ['string', 'null']}, 'category': {'type': ['string', 'null']}, 'protocol': {'type': ['string', 'null']}}}
map_to_chart_of_accounts
Map to chart of accounts
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.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'required': ['transactions'], 'properties': {'transactions': {'type': 'array', 'items': {'type': 'object', 'required': ['hash'], 'properties': {'hash': {'type': 'string', 'description': 'On-chain transaction hash (0x…64 hex).'}, 'chain': {'type': 'string', 'description': 'Chain slug, e.g. ethereum, polygon, base, arbitrum, optimism, bsc, avalanche.'}, 'tx_id': {'type': 'string', 'description': 'Your row id, echoed back.'}, 'fiat_amount': {'type': 'number', 'description': 'Optional fiat value for the roll-ups.'}}}, 'maxItems': 100, 'description': 'Transactions to classify + map (max 100 per call).'}, 'chart_of_accounts': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'type': {'type': 'string'}}}, 'description': 'Optional: your chart of accounts as [{name, type}]. Account names are pattern-matched per role (digital assets, income, fees, realized G/L, collateral, LP positions, loan payable). Omit for the standard chart.'}}}
Esquema de salida
{'type': 'object', 'properties': {'account': {'type': ['string', 'null']}, 'mapping_basis': {'type': ['string', 'null']}}}
Añadido
map_to_chart_of_accounts
17 de September de 2026 a las 12:52
Añadido
classify_batch
17 de September de 2026 a las 12:52
Añadido
lookup_contract
17 de September de 2026 a las 12:52
Añadido
classify_transaction
17 de September de 2026 a las 12:52