Skip to main content
Glama

Build an unsigned send (transfer) for the user's wallet to sign

build_send_tx
Read-only

Build an UNSIGNED transfer of a token or the native coin to any recipient — e.g. "send 50 USDC to alice.eth" or "send 0.01 BTC to bc1q…". Resolves names (ENS/Basenames) and the token's decimals, constructs the transaction with blocktools, and re-checks the recipient with verifyTx so it can't pay the wrong address. Works on EVM (native + any ERC-20), Bitcoin + UTXO coins (amount or "max" to send all), Solana (SOL + SPL) and Tron (TRX + TRC-20). For UTXO, Solana and Tron pass the user's sending address as 'from'; Bitcoin needs a native-SegWit (bc1q) sender. Returns the unsigned tx/PSBT plus a verify verdict; show the recipient and amount and get an explicit yes before the user's OWN wallet signs. Trustless: SwapChan never signs or broadcasts. Result includes display markdown with chan images: show it to the user. How to combine this with the other tools: swapchan_playbook (workflows: find-money, best-swap, rebalance, revoke-approvals, bridge-stuck, token-safety, recover-old-wallet).

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "chain": "<chain>",
      "to": "<to>",
      "amount": "<amount>"
    },
    "name": "build_send_tx"
  }
}

Input Schema

NameRequiredDescriptionDefault
toYesrecipient: a 0x address, a UTXO address, or a name (ENS/Basenames)
fromNothe sending wallet address (required for UTXO)
chainYesEVM chain name or id (base, ethereum, 8453, …) or a UTXO coin slug (btc, ltc, doge, bch, …)
tokenNoEVM only: token contract address; omit (or 'native') for the native coin
amountYesdecimal amount in the coin/token units, or "max" (UTXO) to send all

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • changedInput schema / properties / amount / description
      Previous value: -"decimal amount in the token's own units"New value: +"decimal amount in the coin/token units, or \"max\" (UTXO) to send all"
    • addedInput schema / properties / chain
      Added value: +{
      +  "description": "EVM chain name or id (base, ethereum, 8453, …) or a UTXO coin slug (btc, ltc, doge, bch, …)",
      +  "maxLength": 40,
      +  "type": "string"
      +}
    • removedInput schema / properties / chainId
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "maximum": 9007199254740991,
      -      "minimum": -9007199254740991,
      -      "type": "integer"
      -    },
      -    {
      -      "type": "string"
      -    }
      -  ],
      -  "description": "Chain id (1, 8453, 42161, 10, 137, 56, 43114, 59144, 534352, 792703809 Solana, 8253038 Bitcoin, 728126428 Tron) or name (eth, base, arbitrum, optimism, polygon, bnb, avalanche, linea, scroll, solana, bitcoin, tron)."
      -}
    • changedInput schema / properties / from / description
      Previous value: -"the sending wallet address"New value: +"the sending wallet address (required for UTXO)"
    • changedInput schema / properties / to / description
      Previous value: -"recipient: a 0x address or a name (ENS/Basenames)"New value: +"recipient: a 0x address, a UTXO address, or a name (ENS/Basenames)"
    • changedInput schema / properties / token / description
      Previous value: -"token contract address; omit (or 'native') for the native coin"New value: +"EVM only: token contract address; omit (or 'native') for the native coin"
    • changedInput schema / required
      Previous value: -[
      -  "chainId",
      -  "to",
      -  "amount"
      -]New value: +[
      +  "chain",
      +  "to",
      +  "amount"
      +]
  2. Added

TDQS

A4.7/5.0
Behavior5/5

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

The description adds substantial behavior beyond the annotations: it constructs an unsigned tx/PSBT, resolves names and decimals, re-checks the recipient with verifyTx, returns a verify verdict, and never signs or broadcasts. It also states the user must review recipient and amount and explicitly confirm before their own wallet signs, which is exactly the safety context an agent needs.

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?

The description is front-loaded with the core action and then provides chain-specific caveats and safety instructions. It is dense but mostly earns its length; the final sentence about combining with other tools via swapchan_playbook is useful but slightly less essential than the preceding operational details.

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

Completeness5/5

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

For a multi-chain unsigned transaction builder with no output schema, the description covers the return value well: unsigned tx/PSBT plus verify verdict, with a display markdown field containing chan images. It also covers trustlessness, signing responsibility, and chain-specific sender requirements, leaving no major gap for correct invocation.

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

Parameters5/5

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

Although schema coverage is already 100%, the description adds cross-parameter meaning: 'from' is required for UTXO, Solana, and Tron, Bitcoin specifically needs a native-SegWit bc1q sender, amount can be 'max' for UTXO, and token is EVM-only with omission meaning native. These are meaningful constraints beyond the individual schema field descriptions.

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?

The description states a specific verb and resource: build an UNSIGNED transfer of a token or native coin to a recipient. It immediately distinguishes this from signing or broadcasting and gives concrete examples, so an agent can tell it is the send/transfer builder rather than a swap or broadcast tool.

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?

It gives clear when-to-use context: sending tokens/native coin on EVM, Bitcoin/UTXO, Solana, and Tron, including examples and chain-specific conditions. It also points to swapchan_playbook for workflows, but it does not explicitly contrast itself with close siblings like build_swap_tx or broadcast_tx beyond saying it never signs or broadcasts.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.