send-token

SKILL.md

Sending Tokens on OpenAnt

Use the npx @openant-ai/cli@latest CLI to transfer tokens on Solana or Base. Supports native coins (SOL, ETH), named tokens (USDC), and arbitrary tokens by mint/contract address.

Always append --json to every command for structured, parseable output.

Confirm Authentication and Balance

npx @openant-ai/cli@latest status --json
npx @openant-ai/cli@latest wallet balance --json

If not authenticated, refer to the authenticate-openant skill. If balance is insufficient, inform the user.

Command Syntax

npx @openant-ai/cli@latest wallet send <chain> <token> <amount> <to> [--json] [--rpc <url>]

Arguments

Argument Description
chain Target chain: solana (or sol), base (or eth)
token Token: sol, eth, usdc, or a mint/contract address
amount Amount in display units (e.g. 10 = 10 USDC, 0.5 = 0.5 SOL)
to Destination address (Solana pubkey or EVM 0x address)

Options

Option Description
--json Machine-readable JSON output
--rpc <url> Override the default RPC URL for the chain

Supported Chains and Tokens

Chain Named tokens Native coin
solana / sol usdc, or any SPL mint address sol
base / eth usdc, or any ERC20 contract address eth

For arbitrary tokens, pass the mint address (Solana) or contract address (Base) directly as the token argument.

Examples

Send native SOL

npx @openant-ai/cli@latest wallet send solana sol 1.5 7xKabc123... --json
# -> { "success": true, "data": { "chain": "solana", "txSignature": "5xYz..." } }

Send USDC on Solana

npx @openant-ai/cli@latest wallet send solana usdc 100 7xKabc123... --json
# -> { "success": true, "data": { "chain": "solana", "txSignature": "3aBc..." } }

Send ETH on Base

npx @openant-ai/cli@latest wallet send base eth 0.05 0xAbCdEf... --json
# -> { "success": true, "data": { "chain": "base", "txHash": "0x1a2b..." } }

Send USDC on Base

npx @openant-ai/cli@latest wallet send base usdc 50 0xAbCdEf... --json
# -> { "success": true, "data": { "chain": "base", "txHash": "0x9f8e..." } }

Send arbitrary SPL token by mint address

npx @openant-ai/cli@latest wallet send solana 4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU 25 7xKabc123... --json

Send arbitrary ERC20 on Base by contract address

npx @openant-ai/cli@latest wallet send base 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 10 0xAbCdEf... --json

Natural Language Mapping

When the user says something like:

  • "帮我 base 上转 10 usdc 给 0xAbc..." → wallet send base usdc 10 0xAbc... --json
  • "帮我 solana 上转 1.5 sol 给 7xK..." → wallet send solana sol 1.5 7xK... --json
  • "Send 50 USDC to 0xDef... on Base" → wallet send base usdc 50 0xDef... --json
  • "Transfer 0.1 ETH to 0x123..." → wallet send base eth 0.1 0x123... --json
  • "帮我 solana 上转 10 <mint_address> 给 " → wallet send solana <mint_address> 10 <recipient> --json

Extract: chain, token (name or address), amount, and destination address.

Autonomy

Token transfers are irreversible. Always confirm with the user before executing:

  1. Verify the chain, token, amount, and destination address with the user
  2. Check wallet balance first to ensure sufficient funds
  3. Only execute after explicit user confirmation

Read-only commands (status, wallet balance, wallet addresses) can be executed immediately.

NEVER

  • NEVER send without the user explicitly confirming the destination address — blockchain transfers are irreversible. Show the full address and ask the user to verify it before executing.
  • NEVER send Solana tokens to a Base address, or vice versa — the chains are incompatible. Solana addresses are base58 strings (32–44 chars), Base addresses start with 0x. If the address format doesn't match the chain, stop and clarify with the user.
  • NEVER assume the displayed balance accounts for gas — Solana transactions require a small SOL fee (~0.000005 SOL); Base transactions require ETH for gas. If the user is sending their entire balance, leave a small reserve or the transaction will fail.
  • NEVER infer the chain from the token alone — USDC exists on both Solana and Base. Always confirm which chain the user intends before sending.
  • NEVER send to an address the user typed casually without double-checking — if the user typed the address in the middle of a sentence or abbreviated it, ask them to paste the full address again to confirm.

Prerequisites

  • Must be authenticated (npx @openant-ai/cli@latest status --json)
  • Wallet must have sufficient balance for the transfer plus gas/fees
  • For SPL token transfers, the sender must hold the token

Error Handling

  • "No credentials found" — Run authenticate-openant skill first
  • "Insufficient balance" / "Attempt to debit" — Wallet lacks funds; check wallet balance
  • "Unknown chain" — Supported: sol, base, eth
  • "No Base wallet found" / "No Solana wallet found" — Re-login to provision wallets
  • "Cannot read decimals for mint" — Invalid or non-existent token mint address
  • Transaction simulation failed — Check balance and recipient address validity
Weekly Installs
25
First Seen
14 days ago
Installed on
openclaw25
github-copilot17
codex17
kimi-cli17
gemini-cli17
cursor17