sign_message_btc

Sign a UTF-8 message with a paired Bitcoin address using the Bitcoin Signed Message format (BIP-137). Returns a base64-encoded compact signature with a header byte that matches the address-type convention (legacy / P2SH-wrapped / native segwit) AND messageSha256 — a lowercase hex SHA-256 of the e...

Server VaultPilot MCP vaultpilot-mcp
Category Destructive
Risk class Critical
Parameters 22 required

What sign_message_btc does on VaultPilot MCP

AI agents call sign_message_btc to permanently remove resources in VaultPilot MCP — typically in cleanup and lifecycle workflows. It does its job in a single call, and there is no undo.

ParameterTypeRequiredDescription
wallet string Yes Paired Bitcoin source address. Must already be in `pairings.bitcoin` (call `pair_ledger_btc` first). Phase 1 message-signing supports legacy (`1...`), P2SH-wrap
message string Yes UTF-8 message to sign. Typical Sign-In-with-Bitcoin payloads are a few hundred chars; capped at 10000 because the Ledger BTC app's on-device review window chunk

Parameters from the server's own tool schema.

Why sign_message_btc needs a policy

An AI agent that decides to call sign_message_btc doesn't hesitate, doesn't double-check, and doesn't stop at one. Whatever it removes from VaultPilot MCP is gone — there is no undo for destructive operations.

Questions about sign_message_btc

What does the sign_message_btc tool do? +

Sign a UTF-8 message with a paired Bitcoin address using the Bitcoin Signed Message format (BIP-137). Returns a base64-encoded compact signature with a header byte that matches the address-type convention (legacy / P2SH-wrapped / native segwit) AND messageSha256 — a lowercase hex SHA-256 of the exact UTF-8 bytes submitted to the device (Inv #8 byte-fingerprint, issue #454). Surface messageSha256 in the verbatim message-sign block so the user can recompute on a separate device (printf '%s' '<message>' | sha256sum) and catch unicode-confusable substitution attacks the Ledger Nano OLED can't show in full. The Ledger BTC app prompts the user to confirm the message text on-device before signing — same clear-sign UX as send-side flows. DRAINER-STRING REFUSAL (issue #454): the MCP refuses messages containing value-transfer / authorization markers (transfer / authorize / grant / custody / release / consent) or explicit drainer templates ("I authorize", "granting full custody", "I consent to", "I hereby transfer", "release my") BEFORE any device interaction — fires regardless of agent cooperation. Legitimate Sign-In-with-Bitcoin / proof-of-funds flows don't use these markers. Taproot (bc1p…) addresses are refused: BIP-322 (taproot's canonical message scheme) is not yet exposed by the Ledger BTC app; sign with one of your other paired address types from the same Ledger account instead. It is categorised as a Destructive tool in the VaultPilot MCP MCP Server, which means it can permanently delete or destroy data. Block by default and require explicit approval.

What parameters does sign_message_btc accept? +

sign_message_btc accepts 2 parameters: wallet, message. Required: wallet, message. The full parameter table on this page comes from the server's own tool schema.

How do I enforce a policy on sign_message_btc? +

Register the VaultPilot MCP server in PolicyLayer and add a rule for sign_message_btc: allow, deny, rate-limit, or require approval. Point your MCP client at the PolicyLayer proxy URL and the rule is enforced on every call, before it reaches VaultPilot MCP. Nothing to install.

What risk level is sign_message_btc? +

sign_message_btc is a Destructive tool with critical risk. Critical-risk tools should be blocked by default and only enabled with explicit human approval.

Can I rate-limit sign_message_btc? +

Yes. Add a rate_limit block to the sign_message_btc rule in your PolicyLayer policy. For example, setting max: 10 and window: 60 limits the tool to 10 calls per minute. Rate limits are tracked per agent session and reset automatically.

How do I block sign_message_btc completely? +

Set action: deny in the PolicyLayer policy for sign_message_btc. The AI agent will receive a policy violation error and cannot call the tool. You can also include a reason field to explain why the tool is blocked.

What MCP server provides sign_message_btc? +

sign_message_btc is provided by the VaultPilot MCP server (vaultpilot-mcp). PolicyLayer sits as a proxy in front of this server to enforce policies before tool calls reach the server.

// GET IN TOUCH

Have a question or want to learn more? Send us a message.

Message sent.

We'll get back to you soon.