cryptotaxedge
US tax classification for on-chain transactions: category, treatment, confidence, review flags.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (4)
- HIGH
- MEDIUMin classify_transaction
- MEDIUMin classify_batch
- LOWin lookup_contract
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"cryptotaxedge": {
"url": "https://mcp.cryptotaxedge.com/"
}
}
}Remote-Endpunkte
https://mcp.cryptotaxedge.com/streamable-httpWas es kann
Tool-Inventar
Tools (4)
🟢classify_transaction(tx_hash, chain, contract_address, function_selector)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"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."
},
"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."
},
"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)."
}
},
"required": []
}Ausgabe-Schema
{
"type": "object",
"properties": {
"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"
},
"treatment": {
"type": "string",
"enum": [
"disposal",
"income",
"non_taxable",
"expense",
"needs_review"
],
"description": "Closed five-value tax treatment enum, safe to switch on exhaustively. needs_review means no treatment is asserted."
},
"taxable": {
"type": [
"boolean",
"null"
],
"description": "null when needs_review"
},
"confidence": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"needs_review": {
"type": "boolean"
},
"ledger_action": {
"type": [
"string",
"null"
],
"description": "Suggested ledger label for posting, same field as REST /v1."
},
"protocol": {
"type": [
"string",
"null"
]
},
"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."
},
"assets": {
"type": "object",
"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.",
"properties": {
"sent": {
"type": "array"
},
"received": {
"type": "array"
},
"gas": {
"type": [
"object",
"null"
]
}
}
}
},
"required": [
"category",
"treatment",
"confidence",
"needs_review"
]
}🟢lookup_contract(address, chain)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "Contract address (0x-prefixed 42-char for EVM)."
},
"chain": {
"type": "string",
"description": "Chain slug (e.g. \"ethereum\", \"polygon\", \"arbitrum\"). EVM only."
}
},
"required": [
"address",
"chain"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"protocol": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"category": {
"type": [
"string",
"null"
]
},
"chain": {
"type": [
"string",
"null"
]
}
}
}🟢classify_batch(transactions, engagement_id, firm_id)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"transactions": {
"type": "array",
"description": "Array of transactions to classify (max 100 per call).",
"maxItems": 100,
"items": {
"type": "object",
"properties": {
"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)."
},
"chain": {
"type": "string",
"description": "Chain slug (e.g. \"ethereum\", \"polygon\", \"bsc\", \"arbitrum\", \"base\", \"optimism\", \"avalanche\", \"solana\"). Optional; CryptoTaxEdge auto-detects the chain if omitted."
}
},
"required": [
"tx_hash"
]
}
},
"engagement_id": {
"type": "string",
"description": "(Optional) host-side engagement identifier. Reserved for firm-policy + engagement-record correlation. No effect today; forward-compatible."
},
"firm_id": {
"type": "string",
"description": "(Optional) host-side firm identifier. When firm classification policy is configured, applies that firm's confidence thresholds + CoA overrides."
}
},
"required": [
"transactions"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"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"
},
"treatment": {
"type": "string",
"enum": [
"disposal",
"income",
"non_taxable",
"expense",
"needs_review"
],
"description": "Closed five-value tax treatment enum, safe to switch on exhaustively. needs_review means no treatment is asserted."
},
"taxable": {
"type": [
"boolean",
"null"
],
"description": "null when needs_review"
},
"confidence": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"needs_review": {
"type": "boolean"
},
"ledger_action": {
"type": [
"string",
"null"
],
"description": "Suggested ledger label for posting, same field as REST /v1."
},
"protocol": {
"type": [
"string",
"null"
]
},
"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."
},
"assets": {
"type": "object",
"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.",
"properties": {
"sent": {
"type": "array"
},
"received": {
"type": "array"
},
"gas": {
"type": [
"object",
"null"
]
}
}
}
},
"required": [
"category",
"treatment",
"confidence",
"needs_review"
]
}
}
},
"required": [
"results"
]
}🟢map_to_chart_of_accounts(transactions, 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.
Eingabe-Schema
{
"type": "object",
"properties": {
"transactions": {
"type": "array",
"maxItems": 100,
"description": "Transactions to classify + map (max 100 per call).",
"items": {
"type": "object",
"properties": {
"tx_id": {
"type": "string",
"description": "Your row id, echoed back."
},
"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."
},
"fiat_amount": {
"type": "number",
"description": "Optional fiat value for the roll-ups."
}
},
"required": [
"hash"
]
}
},
"chart_of_accounts": {
"type": "array",
"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.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"type": {
"type": "string"
}
}
}
}
},
"required": [
"transactions"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"account": {
"type": [
"string",
"null"
]
},
"mapping_basis": {
"type": [
"string",
"null"
]
}
}
}Community
Nachweis