Skip to main content
Glama
@cryptoapis-io/mcp-signer

@cryptoapis-io/mcp-signer

Official

utxo_sign

Sign Bitcoin, Bitcoin Cash, Litecoin, Dogecoin, Dash, or Zcash UTXO transactions locally from prepared details or raw unsigned hex using a provided private key.

Instructions

Sign a UTXO transaction (bitcoin, bitcoin-cash, litecoin, dogecoin, dash, zcash). Two actions: (1) sign-from-details: sign from prepared transaction object (e.g. HD wallet prepare-transaction) — for zcash this produces a v5 (ZIP 225/244) transaction and requires exactly one of targetHeight (chain tip + 1) or consensusBranchId; (2) sign-unsigned-hex: sign from raw unsigned tx hex (provide inputs metadata: script, satoshis per input) — does not support zcash. Private key is passed as parameter (never from env). SECURITY: Private keys may be logged by MCP clients or stored in conversation history — use only in trusted local environments.

Input Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.4.0

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does: it discloses that the private key must come from a parameter and never from env, and gives a concrete security warning that keys may be logged by MCP clients or persisted in conversation history. It also discloses the zcash v5 (ZIP 225/244) output format and the exactly-one-of constraint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and chain scope, then numbered modes, then a security block. Dense and mostly efficient, though the single long paragraph packs mode-specific constraints inline where bullets would read faster.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A complex multi-mode, multi-chain signing tool with an empty schema and no output schema gets the mode split, chain scope, zcash constraint, and key-handling risk covered. Return values are left implicit, which is acceptable without an output schema but leaves the agent guessing what a successful sign returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema declares zero properties, so the description is the only source of parameter meaning, and it supplies targetHeight (chain tip + 1), consensusBranchId, per-input script and satoshis, and the private key. It still omits full naming/typing for the two action modes' argument sets, so it does not fully reconstruct the missing schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (sign a UTXO transaction) and names the exact set of chains covered, which is what separates it from sibling signers like evm_sign, kaspa_sign and svm_sign. An agent can route on chain family alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly defines two modes and the conditions selecting each: sign-from-details for prepared transaction objects (with a zcash caveat and the targetHeight/consensusBranchId requirement) and sign-unsigned-hex for raw hex, which explicitly does not support zcash. It stops short of stating when to prefer one mode generally or of any exclusions beyond zcash.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.