MCP Tools Reference

Integrations should call DCP through MCP. The HTTP endpoint is streamable HTTP MCP; it is not a general REST API.

Endpoint

dcp-agent run --mode http-mcp --host 127.0.0.1 --port 8420
http://127.0.0.1:8420/mcp

Initialize With curl

curl -i -sS \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -X POST http://127.0.0.1:8420/mcp \
  --data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"dcp-client","version":"1.0.0"}}}'

Copy the returned mcp-session-id.

List Tools

curl -i -sS \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'mcp-session-id: PASTE_SESSION_ID_HERE' \
  -X POST http://127.0.0.1:8420/mcp \
  --data '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'

Tools

ToolRequired inputOptional input
vault_get_addresschain: "solana"
vault_budget_checkamount, currencychain: "solana"
vault_scope_guide
vault_readscopefields
vault_writescope, data
vault_sign_txchain: "solana", unsigned_txdescription, amount, currency, destination, idempotency_key
vault_sign_messagechain: "solana", messageencoding, description
vault_sign_x402network: "solana", payloadamount, currency, recipient, purpose
vault_transferchain: "solana", to, amountcurrency, mint, decimals, confirm, description, idempotency_key
vault_swapchain: "solana", from_token, to_token, amountslippage_bps, from_decimals, to_decimals, confirm, description, idempotency_key
vault_get_balanceschain: "solana"
vault_get_tx_historylimit, before, chain
vault_get_tx_statussignaturechain: "solana"
vault_search_tokensquerylimit

Input Rules

  • chain and network are currently solana.
  • unsigned_tx is an unsigned Solana transaction encoded as base64.
  • payload for vault_sign_x402 is the exact x402 payment payload encoded as base64.
  • encoding for vault_sign_message is utf8 or base64. Use utf8 unless the challenge is already base64.
  • currency can be SOL, USDC, USDT, or 1LY.
  • 1LY SPL mint: Aih3sbAbu39Yn7jB2Qf4btZ5eWtDGQJH2gMfC4qdBAGS.
  • For vault_transfer, to is the destination Solana address; use currency for known tokens or mint + decimals for an arbitrary SPL token.
  • For vault_swap, from_token/to_token accept SOL, a symbol like USDC, or a mint address; slippage_bps defaults to 50.
  • confirm (transfer/swap) is confirmed (default, waits for on-chain confirmation) or submitted (returns on broadcast).
  • Pass a stable idempotency_key on vault_transfer/vault_swap to make retries safe (no accidental double-spend).
  • Use exact scopes such as identity.name, identity.email, and credentials.api.openai.

Approval Behavior

Wallet reads (address, balances, history, status, token search) return without a prompt. Writes, transaction signing, message signing, x402 signing, transfers, and swaps go through budget checks and can require approval in DCP Desktop or Telegram. Each approval is bound to the exact amount and destination you see; an approval for one transaction cannot be reused for a different one. Requests within trusted policy and budget limits may complete without another prompt.