@cryptoapis-io/mcp-prepare-transactions
OfficialThis MCP server builds unsigned cryptocurrency transactions across multiple blockchains for local signing and broadcasting, and provides Crypto APIs reference documentation.
Prepare unsigned EVM transactions: native coin transfers, ERC-20 fungible token transfers, and ERC-721 NFT transfers.
Prepare unsigned Tezos operations: native XTZ transfers, FA1.2 token transfers, and FA2 token transfers.
Prepare unsigned Solana transactions: native SOL transfers and SPL token transfers.
Prepare unsigned Kaspa transactions: native KAS transfers with multi-recipient support.
Prepare unsigned XRP transactions: native XRP transfers.
Prepare unsigned UTXO transactions: native coin transfers for Bitcoin, Bitcoin Cash, Litecoin, Dogecoin, Dash, and Zcash with multi-recipient support.
Prepare unsigned Tron transactions: native TRX transfers, TRC-20 token transfers, and TRC-721/TRC-1155 NFT transfers.
Access Crypto APIs reference documentation: supported blockchains, error codes, credit costs, callback/webhook mechanics, and rate limits.
Returns unsigned transaction data ready for local signing and subsequent broadcast via broadcast_signed_transaction.
Allows using the Crypto APIs Prepare Transactions MCP server as a tool within n8n workflows to prepare unsigned EVM transactions for native coin, ERC-20 token, and ERC-721 NFT transfers.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@cryptoapis-io/mcp-prepare-transactionsPrepare an unsigned native coin transfer of 0.1 ETH to 0xRecipientAddress"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@cryptoapis-io/mcp-prepare-transactions
MCP server for Crypto APIs Prepare Transactions product. Build unsigned transactions for EVM, Tezos, Solana, Kaspa, XRP, UTXO, and Tron.
API Version: Compatible with Crypto APIs version 2024-12-12
Features
Prepare EVM native coin, ERC-20 fungible token, and ERC-721 NFT transfer transactions
Prepare native Tezos (XTZ), FA1.2, and FA2 token transfer operations
Prepare native SOL and SPL token transfer transactions on Solana
Prepare native KAS transfers on Kaspa, with multi-recipient support
Prepare native XRP transfers
Prepare native coin transfers across 6 UTXO chains (Bitcoin, Bitcoin Cash, Litecoin, Dogecoin, Dash, Zcash)
Prepare native TRX, TRC-20, and NFT transfers via Tron's dedicated prepare-transactions endpoints
Returns unsigned transaction data ready for local signing
Related MCP server: @cryptoapis-io/mcp-signer
Prerequisites
Node.js 18+
Crypto APIs account and API key (sign up | get API key)
Installation
npm install @cryptoapis-io/mcp-prepare-transactionsOr install all Crypto APIs MCP servers: npm install @cryptoapis-io/mcp
Usage
# Run with API key
npx @cryptoapis-io/mcp-prepare-transactions --api-key YOUR_API_KEY
# Or use environment variable
export CRYPTOAPIS_API_KEY=YOUR_API_KEY
npx @cryptoapis-io/mcp-prepare-transactions
# HTTP transport (listens on 127.0.0.1; see "Exposing the server beyond localhost")
npx @cryptoapis-io/mcp-prepare-transactions --transport http --port 3000 --api-key YOUR_API_KEYClaude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"cryptoapis-prepare-transactions": {
"command": "npx",
"args": ["-y", "@cryptoapis-io/mcp-prepare-transactions"],
"env": {
"CRYPTOAPIS_API_KEY": "your_api_key_here"
}
}
}
}Cursor
Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"cryptoapis-prepare-transactions": {
"command": "npx",
"args": ["-y", "@cryptoapis-io/mcp-prepare-transactions"],
"env": {
"CRYPTOAPIS_API_KEY": "your_api_key_here"
}
}
}
}MCP Inspector
npx @modelcontextprotocol/inspector npx @cryptoapis-io/mcp-prepare-transactions --api-key YOUR_API_KEYn8n
Start the server in HTTP mode:
npx @cryptoapis-io/mcp-prepare-transactions --transport http --port 3000 --api-key YOUR_API_KEYIn your n8n workflow, add an AI Agent node
Under Tools, add an MCP Client Tool and set the URL to
http://localhost:3000/mcp
n8n in Docker:
localhostinside the container is not your machine. Start the server with--host 0.0.0.0andMCP_AUTH_TOKENset (see Exposing the server beyond localhost), usehttp://host.docker.internal:3000/mcpas the URL, and add anAuthorization: Bearer <token>header to the MCP Client Tool credential.
All servers default to port 3000. Use
--portto assign different ports when running multiple servers.
Available Tools
prepare_transactions_evm
Prepare unsigned EVM transactions.
Action | Description |
| Prepare a native coin transfer from an address |
| Prepare an ERC-20 token transfer |
| Prepare an ERC-721 NFT transfer |
prepare_transactions_tezos
Prepare unsigned Tezos operations (mainnet, shadownet).
Action | Description |
| Prepare a native XTZ transfer |
| Prepare an FA1.2 token transfer |
| Prepare an FA2 token transfer |
prepare_transactions_solana
Prepare unsigned Solana transactions (mainnet, devnet).
Action | Description |
| Prepare a native SOL transfer |
| Prepare an SPL token transfer |
prepare_transactions_kaspa
Prepare unsigned Kaspa transactions (mainnet only).
Action | Description |
| Prepare a native KAS transfer, supporting multiple recipients in one transaction |
prepare_transactions_xrp
Prepare unsigned XRP transactions (mainnet, testnet).
Action | Description |
| Prepare a native XRP transfer |
prepare_transactions_utxo
Prepare unsigned UTXO transactions (Bitcoin, Bitcoin Cash, Litecoin, Dogecoin, Dash, Zcash; mainnet, testnet).
Action | Description |
| Prepare a native coin transfer, supporting multiple recipients. Requires |
prepare_transactions_tron
Prepare unsigned Tron transactions via Tron's dedicated prepare-transactions endpoints (mainnet, nile).
Action | Description |
| Prepare a native TRX transfer |
| Prepare a TRC-20 token transfer |
| Prepare a TRC-721/TRC-1155 NFT transfer |
CLI Arguments
Argument | Description | Default |
| Crypto APIs API key |
|
| Transport type: |
|
| HTTP host (use |
|
| Bearer token callers must send ( |
|
| Comma-separated | — |
| HTTP port |
|
| HTTP path |
|
| Enable stateless HTTP mode |
|
HTTP API Key Modes
When using HTTP transport, the server supports two API key modes:
With
--api-key: The key is used for all requests.x-api-keyrequest headers are ignored.Without
--api-key: Each request must include anx-api-keyheader with a valid Crypto APIs key. This enables hosting a public server where each user provides their own key.
# Per-request key mode (multi-tenant)
npx @cryptoapis-io/mcp-prepare-transactions --transport http --port 3000
# Clients send x-api-key header with each requestExposing the server beyond localhost
HTTP mode listens on 127.0.0.1 by default, so only processes on the same machine can reach it.
To accept connections from other machines or containers, bind explicitly and protect the port:
# Startup-key mode: callers must present the token (the server refuses to start without one)
export MCP_AUTH_TOKEN=$(openssl rand -hex 32)
npx @cryptoapis-io/mcp-prepare-transactions --transport http --host 0.0.0.0 --port 3000 --api-key YOUR_API_KEY \
--allowed-hosts mcp.internal.example
# Clients send: Authorization: Bearer $MCP_AUTH_TOKEN
# Per-request key mode: no startup key, every request must carry the caller's own x-api-key
npx @cryptoapis-io/mcp-prepare-transactions --transport http --host 0.0.0.0 --port 3000--allowed-hosts restricts the Host header (DNS rebinding protection) when not bound to loopback. Prefer MCP_AUTH_TOKEN over --auth-token: command-line arguments are visible in the process list.
Stdio transport always requires an API key at startup.
Important: API Key Required
Warning: Making requests without a valid API key — or with an incorrect one — may result in your IP being banned from the Crypto APIs ecosystem. Always ensure a valid API key is configured before starting any server.
Remote MCP Server
Crypto APIs provides an official remote MCP server with all tools available via HTTP Streamable transport at https://ai.cryptoapis.io/mcp. Pass your API key via the x-api-key header — no installation required.
License
MIT
Available Tools
8 toolsprepare_transactions_evmA
Build unsigned EVM transactions ready for signing. Returns the raw unsigned transaction hex and fee details. After preparing, use a signing tool (e.g. evm_sign) to sign locally, then broadcast via broadcast_signed_transaction.
Actions: • prepare-transaction-from-address: Build an unsigned native coin transfer (e.g. ETH, BNB) • prepare-fungible-token-transfer: Build an unsigned ERC-20 token transfer • prepare-nft-transfer: Build an unsigned ERC-721 NFT transfer
Credits by action (source: OpenAPI): • prepare-fungible-token-transfer: 24 • prepare-nft-transfer: 24 • prepare-transaction-from-address: 24
Credits are indicative only and may change at any time. The actual credits spent for each API request are returned in the response headers.
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | Amount in native coin's smallest unit, e.g. wei (required for prepare-transaction-from-address) | |
| action | Yes | Action to perform | |
| amount | No | Token amount to transfer (required for prepare-fungible-token-transfer) | |
| context | No | Optional context for the request - echoed back in response | |
| network | Yes | Network name | |
| tokenId | No | NFT token ID (required for prepare-nft-transfer) | |
| gasLimit | No | Custom gas limit override (prepare-transaction-from-address only; auto-estimated if omitted) | |
| gasPrice | No | Custom gas price in wei (prepare-transaction-from-address only; auto-estimated if omitted) | |
| toAddress | No | Recipient address (required for all actions) | |
| blockchain | Yes | Blockchain protocol | |
| fromAddress | No | Sender address (required for all actions) | |
| contractAddress | No | Token contract address (required for prepare-fungible-token-transfer and prepare-nft-transfer) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for disclosure. It reveals that the tool returns the raw unsigned transaction hex and fee details, and it implies the operation has no on-chain side effects ('ready for signing'). It also adds credit cost details, which is useful context. It does not cover all potential behaviors (e.g., authentication, rate limits), but it covers the essential nature of the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: it starts with a clear one-sentence overview, then lists the three actions with brief explanations, and finally includes credit information. It is concise enough for the complexity it covers, though the credit section could be trimmed if not essential, but it does contribute operational context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 12 parameters and no output schema, yet the description gives sufficient context: it names the three actions, describes the expected output (transaction hex and fee details), and outlines the follow-up steps for signing and broadcasting. It does not provide examples or error handling details, but for correct invocation it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptions for 100% of the parameters, including which actions they apply to. The tool description adds value by explaining what each action does, but it does not add meaning for individual parameters beyond the schema. Given the high schema coverage, this baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Build unsigned EVM transactions ready for signing.' It lists three specific actions (native transfer, ERC-20 transfer, NFT transfer), which distinguishes it from downstream signing and broadcasting tools. The mention of the prepare-sign-broadcast workflow further differentiates its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use the tool: before signing locally via a tool like evm_sign, and before broadcasting via broadcast_signed_transaction. It gives a clear sequential workflow but does not explicitly state when not to use it or name alternative preparation tools, so it falls slightly short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_transactions_kaspaA
Build unsigned Kaspa transactions ready for signing. Returns the unsigned transaction and fee details. After preparing, sign locally (kaspa_sign) and broadcast via broadcast_signed_transaction.
Actions: • native-coins: Build an unsigned native KAS transfer, supporting multiple recipients in one transaction
Credits by action (source: OpenAPI): • native-coins: 60
Credits are indicative only and may change at any time. The actual credits spent for each API request are returned in the response headers.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform | |
| context | No | Optional context for the request - echoed back in response | |
| network | Yes | Network name - Kaspa is mainnet-only | |
| exactFee | No | Exact fee override in KAS - bypasses mass-based fee calculation when set | |
| locktime | No | Transaction locktime | |
| recipients | No | Recipients as {address, amount} objects, amount in KAS main units - one output per entry, multiple recipients supported in a single transaction (required) | |
| feePriority | No | Fee priority tier - defaults to standard if omitted | |
| fromAddress | No | Sender's Kaspa address (required) | |
| prepareStrategy | No | UTXO selection strategy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it states the operation is a prepare-only step (returns an unsigned transaction, no signing), discloses the return shape (unsigned tx + fee details), and surfaces cost (60 credits for native-coins). It omits auth requirements, funding prerequisites, and failure behavior, leaving some transparency gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and workflow in the first three sentences, then organizes actions and credits as labeled lists. The credits disclaimer boilerplate is slightly verbose but informative; overall well-structured with little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation-preparation tool with no output schema and no annotations, the description covers the essentials: what it builds, what it returns, the follow-up signing/broadcast steps, and cost. Missing prerequisites (funded UTXOs, address ownership) and error/edge-case handling, but adequate given full schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 9 parameters (exactFee, locktime, recipients, feePriority, fromAddress, prepareStrategy, etc.). The description adds only the action's meaning ('native KAS transfer, supporting multiple recipients'), which is redundant with the schema's recipients description. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Build unsigned Kaspa transactions ready for signing') and enumerates the single supported action (native-coins) with its behavior. It clearly scopes to Kaspa, though it never explicitly contrasts itself with the sibling prepare_transactions_* chain variants, relying on the tool name and the 'Kaspa' mention to disambiguate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear end-to-end workflow: prepare here, then 'sign locally (kaspa_sign) and broadcast via broadcast_signed_transaction', naming the two follow-up tools. It stops short of stating when NOT to use it or how it relates to the other prepare_transactions_* tools for other chains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_transactions_solanaA
Build unsigned Solana transactions ready for signing. Returns the unsigned transaction and fee details. After preparing, sign locally and broadcast via broadcast_signed_transaction.
Actions: • native-coins: Build an unsigned native SOL transfer • spl-tokens: Build an unsigned SPL token transfer
Credits by action (source: OpenAPI): • native-coins: 180 • spl-tokens: 240
Credits are indicative only and may change at any time. The actual credits spent for each API request are returned in the response headers.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform | |
| amount | No | Amount in lamports for native-coins, or token base units for spl-tokens (required for all actions) | |
| context | No | Optional context for the request - echoed back in response | |
| network | Yes | Network name | |
| toAddress | No | Recipient address (required for all actions) | |
| feePriority | No | Fee priority tier - defaults to standard if omitted | |
| fromAddress | No | Sender address (required for all actions) | |
| tokenContract | No | SPL token mint address (required for spl-tokens) | |
| tokenStandard | No | SPL token program standard (spl-tokens only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description must carry the behavior, and it does add value beyond the schema: it clarifies the output is unsigned with fee details, defines the post-call signing/broadcast path, and discloses per-action credit costs with the caveat that they are indicative and authoritative values appear in response headers. It omits auth/permission requirements and any rate-limit behavior, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and return shape, then structured as a scannable action list and credit table. Every element is useful, though the credit list plus the disclaimer paragraph is more text than the tool itself strictly requires.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description still tells the agent what comes back (unsigned transaction plus fee details) and the exact next call to make. Missing only peripheral details such as authentication needs or failure modes for a 9-parameter, two-action builder.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes beyond it by mapping each action to its semantics (native SOL transfer vs SPL token transfer) and by associating credit costs with each action value. It still leaves parameter-level detail such as feePriority/fee semantics and base-unit formatting to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb (build/prepare) and resource (unsigned Solana transactions) and enumerates its two actions, native-coins and spl-tokens. The chain name in both tool and description cleanly separates it from the six sibling prepare_transactions_* chain variants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly places the tool in a workflow: build unsigned, sign locally, then broadcast via the named sibling broadcast_signed_transaction. It does not, however, say when to choose native-coins vs spl-tokens beyond stating that one builds a SOL transfer and the other an SPL token transfer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_transactions_tezosA
Build unsigned Tezos operations ready for signing. Returns the forged (unsigned) operation bytes and fee details. After preparing, sign locally and broadcast via broadcast_signed_transaction.
Actions: • native-coins: Build an unsigned native XTZ transfer • fa1-2-tokens: Build an unsigned FA1.2 token transfer • fa2-tokens: Build an unsigned FA2 token transfer
Credits by action (source: OpenAPI): • fa1-2-tokens: 104 • fa2-tokens: 104 • native-coins: 78
Credits are indicative only and may change at any time. The actual credits spent for each API request are returned in the response headers.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform | |
| amount | No | Amount to send, in mutez for native-coins, or in the token's base units for fa1-2-tokens/fa2-tokens (required for all actions) | |
| context | No | Optional context for the request - echoed back in response | |
| network | Yes | Network name | |
| tokenId | No | FA2 token ID - required for fa2-tokens | |
| toAddress | No | Recipient's Tezos address (required for all actions) | |
| feePriority | No | Fee priority tier - defaults to standard if omitted | |
| fromAddress | No | Sender's Tezos address (required for all actions) | |
| fromPublicKey | No | Sender's public key - required only when the source account is unrevealed | |
| contractAddress | No | FA1.2/FA2 token contract address (KT1...) - required for fa1-2-tokens, fa2-tokens |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does reasonably well: it discloses that output is unsigned/forged bytes plus fee details, that signing happens locally (so keys are never sent), and that credits are consumed per action. It omits permission/auth requirements and rate-limit behavior, but the core non-destructive 'build only' trait is clearly conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the critical next-step are front-loaded in the first two sentences, then actions and credits are cleanly sectioned. The credits subsection and its 'indicative only' disclaimer add bulk that is only marginally relevant to invocation, keeping this short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, no-annotation, no-output-schema tool, the description covers the essential gaps: what is returned (forged bytes + fees), the signing/broadcast handoff, and per-action credit costs. It could say more about required permissions or address prerequisites, but it is complete enough to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented, including enum values, defaults, and per-action requirements. The description's action list adds a small semantic gloss on the three enum values but no unit, format, or conditional detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Build unsigned Tezos operations ready for signing', which names the chain and the exact artifact produced. The action list (native XTZ, FA1.2, FA2 transfers) makes it unambiguous against the chain-specific siblings (prepare_transactions_evm, prepare_transactions_tron, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear workflow context: prepare, then 'sign locally and broadcast via broadcast_signed_transaction', which tells the agent where this fits in the sequence. It does not explicitly state when to pick this over a sibling chain tool or any exclusions, but the chain scoping in the name plus the flow is sufficient to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_transactions_tronA
Build unsigned Tron transactions ready for signing. Returns the unsigned transaction and fee details. After preparing, sign locally (tron_sign) and broadcast via broadcast_signed_transaction. These are Tron's dedicated prepare-transactions endpoints, distinct from the generic EVM ones used for other chains.
Actions: • native-coins: Build an unsigned native TRX transfer • trc20-tokens: Build an unsigned TRC-20 token transfer • non-fungible-tokens: Build an unsigned TRC-721/TRC-1155 NFT transfer
Credits by action (source: OpenAPI): • native-coins: 90 • non-fungible-tokens: 128 • trc20-tokens: 120
Credits are indicative only and may change at any time. The actual credits spent for each API request are returned in the response headers.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform | |
| amount | No | Amount in sun for native-coins, or token base units for trc20-tokens (required for native-coins, trc20-tokens) | |
| sender | No | Sender's Tron address (required for all actions) | |
| context | No | Optional context for the request - echoed back in response | |
| network | Yes | Network name | |
| tokenId | No | NFT token ID (required for non-fungible-tokens) | |
| contract | No | Token contract address (required for trc20-tokens, non-fungible-tokens) | |
| feeLimit | No | Max TRX fee limit in sun (trc20-tokens, non-fungible-tokens only) | |
| recipient | No | Recipient's Tron address (required for all actions) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden; it discloses that the output is unsigned, returns fee details, and incurs per-action credit costs. It does not state auth/permission requirements, whether the call has side effects on-chain, or rate limits, which is a moderate gap for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded first sentence states the core purpose, then a flow sentence, then a scannable action/credit list. The credits disclaimer is slightly verbose but earns its place by warning costs may change.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description covers the purpose, the return shape at a high level (unsigned tx + fee details), the follow-up calls, and per-action costs. Missing auth and side-effect details keep it from being fully complete, but it is adequate for a 9-param builder tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the per-parameter meaning (amount units, sender/recipient, contract, tokenId, feeLimit) is already documented. The description adds the action enumeration with credit costs, which is marginal value beyond the schema enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (build/prepare) and resource (unsigned Tron transactions) and explicitly distinguishes itself from the generic EVM prepare endpoints used for other chains. The three action bullets make the scope concrete, so an agent can tell it apart from the sibling prepare_transactions_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit downstream flow: prepare, then sign locally with tron_sign, then broadcast via broadcast_signed_transaction. It also names the alternative (generic EVM endpoints) and the condition (other chains), leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_transactions_utxoA
Build unsigned UTXO transactions ready for signing (Bitcoin, Bitcoin Cash, Litecoin, Dogecoin, Dash, Zcash). Returns the unsigned transaction and fee details. After preparing, sign locally (utxo_sign) and broadcast via broadcast_signed_transaction.
Actions: • native-coins: Build an unsigned native coin transfer, supporting multiple recipients in one transaction. Requires either feePriority or exactFee.
Credits by action (source: OpenAPI): • native-coins: 530
Credits are indicative only and may change at any time. The actual credits spent for each API request are returned in the response headers.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform | |
| context | No | Optional context for the request - echoed back in response | |
| network | Yes | Network name | |
| exactFee | No | Exact fee override in the chain's main denomination - required unless feePriority is given | |
| locktime | No | Transaction locktime | |
| blockchain | Yes | Blockchain protocol | |
| recipients | No | Recipients as {address, amount} objects, amount in the chain's main denomination - one output per entry (required) | |
| feePriority | No | Fee priority tier - required unless exactFee is given | |
| fromAddress | No | Sender's address (required) | |
| replaceable | No | Mark the transaction as RBF-replaceable | |
| additionalData | No | OP_RETURN data to embed in the transaction | |
| prepareStrategy | No | UTXO selection strategy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses that the output is unsigned (not broadcast), that it returns fee details, the required fee inputs, and a credit cost (530). It omits auth/credential requirements, rate limits, and what the fee model does when neither strategy applies – gaps that matter on a 12-param mutation-adjacent builder.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then the sign/broadcast workflow, then action details, then credits. The credits boilerplate ('indicative only, may change') is partly filler but is bounded and clearly separated. Overall well-structured with minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 12 params, no output schema, and no annotations, the description does substantial lifting: it explains the returned unsigned tx + fees, the action set, the fee requirement, and the follow-on tools. It is nearly complete, though it could state auth/prerequisite context given the parameter weight.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (action enum, feePriority/exactFee, recipients, fromAddress, locktime, etc.) is already documented in the schema. The description largely restates this by naming the single action and its fee constraint, adding little syntax or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb + resource (build unsigned UTXO transactions) and enumerates the exact chains (Bitcoin, Bitcoin Cash, Litecoin, Dogecoin, Dash, Zcash). This cleanly distinguishes it from the sibling prepare_transactions_evm/tron/solana/etc. that target other ecosystems. An agent can route without opening any other definition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lays out the downstream workflow: sign locally with utxo_sign, then broadcast via broadcast_signed_transaction, and notes the feePriority-or-exactFee requirement. It does not explicitly say when to prefer this over sibling chain tools, but the chain enumeration and workflow cover the practical selection decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_transactions_xrpA
Build unsigned XRP transactions ready for signing. Returns the unsigned transaction and fee details. After preparing, sign locally (xrp_sign) and broadcast via broadcast_signed_transaction.
Actions: • native-coins: Build an unsigned native XRP transfer
Credits by action (source: OpenAPI): • native-coins: 60
Credits are indicative only and may change at any time. The actual credits spent for each API request are returned in the response headers.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform | |
| amount | No | Amount in drops (required) | |
| context | No | Optional context for the request - echoed back in response | |
| network | Yes | Network name | |
| sequence | No | Override the account sequence number (advanced use) | |
| toAddress | No | Recipient's XRP address (required) | |
| feePriority | No | Fee priority tier - defaults to standard if omitted | |
| fromAddress | No | Sender's XRP address (required) | |
| destinationTag | No | Destination tag - commonly required when sending to an exchange address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose meaningful behavior: the output is unsigned, signing happens locally (non-custodial), and the response contains transaction plus fee details. It also surfaces credit cost per action and that actual credits come back in response headers, which the agent cannot infer elsewhere. Missing auth/permission and failure-mode context keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the sign/broadcast workflow are front-loaded, and the action/credit bullets are scannable. The credits-and-disclaimer block is somewhat boilerplate repetition, but it is bounded and clearly separated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter construction tool with no output schema, the description covers the essentials: what is returned (unsigned tx + fee details), what to do next, and per-action cost. It stops short of documenting the single supported action's required fields, but the schema covers those at full coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the schema already documents drops units, fee tiers, destination tags, and sequence override. The description adds no parameter-level syntax or constraints beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Build unsigned XRP transactions ready for signing') and names the resulting artifact. The 'XRP' qualifier cleanly separates it from the many chain-specific prepare_transactions_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes the downstream workflow — sign locally with xrp_sign, then broadcast via broadcast_signed_transaction — which tells the agent when this tool belongs in a sequence. It doesn't state exclusions or when a different sibling should be preferred, but the chain scoping makes that fairly obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_infoA
CryptoAPIs reference documentation — no API call, no credits consumed.
Actions: • blockchains — Supported blockchains, networks, products per chain, denominations, fiat currencies • errors — Complete error code table (HTTP status, error code, message) • credits — Credit charging structure, cost multipliers per blockchain, monitoring & operations taxes (xPub, synced addresses, blockchain events), pay-as-you-go • callbacks — Webhook mechanics: URL requirements, retry strategy (5 retries, exponential backoff), HMAC security, idempotency • limits — Throughput soft/hard limits per plan, 2.1x penalty multiplier, rate limiting behavior
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Reference topic to retrieve | |
| context | No | Optional context for the request - echoed back in response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and explicitly notes 'no API call, no credits consumed,' which is key behavioral information. It also discloses detailed content such as retry strategy, HMAC security, and rate-limit penalty multipliers, going well beyond a generic 'returns info' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the critical 'no API call, no credits consumed' caveat and uses a compact bullet list. Each bullet covers a distinct action without wasted prose, making it highly scannable for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a reference-documentation tool with no output schema and no annotations, this description is complete enough: it defines all five actions and gives sufficient detail about their content. It also clarifies side effects (none) and cost implications (none), covering the main contextual risks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds significant meaning by explaining each allowed action enum value in detail (e.g., callbacks covers URL requirements, 5 retries, HMAC). This transforms enum names into actionable context and compensates fully beyond the schema's short parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states this is CryptoAPIs reference documentation with no API call or credits consumed, and enumerates five specific topics (blockchains, errors, credits, callbacks, limits). This clearly identifies it as an informational tool distinct from domain siblings like aml.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The bulleted actions give clear contexts for when to use the tool, such as looking up error codes, credit structures, callback mechanics, or rate limits. It does not explicitly name alternatives or exclusion conditions, so it stops short of a full when/when-not specification.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.5.0- Added
prepare_transactions_kaspa - Added
prepare_transactions_solana - Added
prepare_transactions_tezos - Added
prepare_transactions_tron - Added
prepare_transactions_utxo - Added
prepare_transactions_xrp
2 tool updates
v0.3.0- First observed
prepare_transactions_evm - First observed
system_info
TDQS
Scored across 8 tools
Each tool targets a specific blockchain family (Tron, Tezos, Solana, Kaspa, XRP, UTXO, EVM) with clear distinctions, and descriptions explicitly differentiate dedicated chain endpoints from generic EVM. The system_info tool is clearly separate as a reference resource.
Seven of eight tools follow the consistent snake_case pattern prepare_transactions_<chain>, but system_info breaks the pattern as a non-action reference tool. The deviation is minor and readable.
Eight tools are well-scoped for preparing transactions across major blockchain families, with one tool per chain family plus a reference tool. No redundancy or excessive granularity.
The set covers native, token, and NFT transfers for most listed chains, but some chains lack token support (e.g., XRP, Kaspa only native) and possible chains (e.g., Cosmos, Algorand) are missing. Within the prepare-only scope, coverage is strong.
Maintenance
Related MCP Connectors
Tenderly MCP server for blockchain dev — simulate, debug, and test on 100+ networks.
Self-hosted MCP server: 26 deterministic dev, security, and EVM tools.
Tenzro Network MCP server: wallet, identity, payments, inference, staking, bridges, verification.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for Crypto APIs Blockchain Fees product, providing fee recommendations and gas estimates for UTXO, EVM, and XRP blockchains.6607 npmMIT
- AlicenseAqualityAmaintenanceMCP server for local transaction signing across EVM, UTXO, Tron, and XRP blockchains, with no network calls or API keys required.7552 npmMIT
- AlicenseAqualityBmaintenanceMCP server for Crypto APIs Block Data product. Get block details by height or hash for EVM, UTXO, and XRP blockchains.4484 npmMIT

@cryptoapis-io/mcpofficial
AlicenseAqualityBmaintenanceMCP server for Crypto APIs Transactions Data. Enables lookup of transaction details by hash across EVM, UTXO, Solana, XRP, and Kaspa blockchains.6273 npmMIT