US tax classification for on-chain transactions: category, treatment, confidence, review flags.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Array of transactions to classify (max 100 per call).
(Optional) host-side firm identifier. When firm classification policy is configured, applies that firm's confidence thresholds + CoA overrides.
(Optional) host-side engagement identifier. Reserved for firm-policy + engagement-record correlation. No effect today; forward-compatible.
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.
| Argument | Type | Description |
|---|---|---|
| firm_id | string | (Optional) host-side firm identifier. When firm classification policy is configured, applies that firm's confidence thresholds + CoA overrides. |
| transactions* | array | Array of transactions to classify (max 100 per call). |
| engagement_id | string | (Optional) host-side engagement identifier. Reserved for firm-policy + engagement-record correlation. No effect today; forward-compatible. |
{
"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."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| chain | string | 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 | string | Transaction hash (0x-prefixed 66-char for EVM, base-58 for Solana). Either tx_hash OR contract_address is required. |
| contract_address | string | (Optional) 0x-prefixed contract address the transaction called. With function_selector + chain, performs a rule-library tuple lookup. |
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.
| Argument | Type | Description |
|---|---|---|
| chain* | string | Chain slug (e.g. "ethereum", "polygon", "arbitrum"). EVM only. |
| address* | string | Contract address (0x-prefixed 42-char for EVM). |
{
"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)."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| transactions* | array | Transactions to classify + map (max 100 per call). |
| chart_of_accounts | array | 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. |
{
"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."
}
}
}| function_selector | string | (Optional) 0x-prefixed 4-byte function selector (first 4 bytes of tx input data). |
{
"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)."
}
}
}