onchain_send_token
Same-chain transfer of any token to any address. Use this when sender and recipient are on the SAME chain. For cross-chain transfers (e.g. USDC on Polygon -> USDC on Base, or any chain to/from Solana), use relay_execute instead — Relay aggregates bridges and handles the swap+route. Works on every supported EVM chain (native gas + ERC-20) and Solana (native SOL + SPL). Pass chainId as a number for EVM (1, 137, 8453, 42161, 10, 56, 43114, 59144, 81457, 534352, 324, 7777777) or "solana" for Solana. Use tokenAddress="native" or 0x000…0 for the chain's native gas / SOL. amount is the raw integer in the token's smallest unit (wei / lamports / atomic) — caller scales decimals. For SPL the recipient's associated token account is created on the fly if missing (sender pays rent ~0.002 SOL). Returns the EVM tx hash or Solana signature.
⚠️ SAFETY — VERIFY EXTERNAL ADDRESSES BEFORE SUBMITTING. Before calling this tool, resolve the caller's own wallets via get_wallet_addresses (EVM EOA + Solana) and polymarket action get_deposit_wallet. If to is NOT one of those self-addresses, this is an EXTERNAL transfer and you MUST stop and surface this bold warning to the user verbatim before proceeding: "⚠️ EXTERNAL TRANSFER — sending {amount} {token} to {to} on {chain}. This is NOT one of your wallets. Funds cannot be recovered if the address is wrong. Type 'yes' to confirm." Only call this tool after the user replies "yes". For self-transfers between the caller's own wallets, a plain summary + confirmation is enough — skip the EXTERNAL warning, but still confirm.
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": {
"chainId": "<chainId>",
"tokenAddress": "<tokenAddress>",
"to": "<to>",
"amount": "<amount>"
},
"name": "onchain_send_token"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient address on the target chain. | |
| amount | Yes | Raw integer in the token's smallest unit (wei / lamports / atomic). | |
| chainId | Yes | EVM chain ID — accepts either a number (137) or its string form ("137"); the backend normalizes. Use the literal "solana" for Solana. | |
| tokenAddress | Yes | Token contract / SPL mint. Use "native" or 0x000…0 for native gas / SOL. |