Build an unsigned send (transfer) for the user's wallet to sign
build_send_txBuild 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
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | recipient: a 0x address, a UTXO address, or a name (ENS/Basenames) | |
| from | No | the sending wallet address (required for UTXO) | |
| chain | Yes | EVM chain name or id (base, ethereum, 8453, …) or a UTXO coin slug (btc, ltc, doge, bch, …) | |
| token | No | EVM only: token contract address; omit (or 'native') for the native coin | |
| amount | Yes | decimal amount in the coin/token units, or "max" (UTXO) to send all |