> For the complete documentation index, see [llms.txt](https://archer-bot.gitbook.io/archer.bot/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://archer-bot.gitbook.io/archer.bot/what-you-can-do/send-tokens.md).

# Send Tokens

A send transfers tokens to another wallet address **on the same chain**.

## Basic Sends

* *"Send 0.1 ETH to 0x742d...2bD18 on Ethereum"*
* *"Send 50 USDC to 0xABC...DEF on Arbitrum"*
* *"Transfer 2 SOL to 7xYz...abc on Solana"*

## Send All / Max

* *"Send all my USDC on Base to 0x..."*
* *"Send my entire SOL balance to 7xYz..."*

For native tokens, Archer reserves enough for gas. For ERC-20 / SPL tokens, the full balance moves.

## USD-Denominated Sends

* *"Send $25 worth of ETH to 0x... on Arbitrum"*

Archer prices the token live and converts.

## Safety Checks

Sends are the easiest way to lose funds in Web3. Archer enforces three guardrails before any send executes:

1. **Contract address blocking.** If the destination address is a known contract (a token contract, a DEX router, a bridge contract, etc.), the send is blocked with an explanation. Sending tokens to a contract that's not designed to receive them is a permanent loss.
2. **Self-send warning.** If the destination matches one of your own wallets (primary or connected), Archer surfaces a warning before confirming.
3. **Spam token check.** If the token you're sending is flagged as spam, the send is blocked. See [Token Safety & Spam Detection](/archer.bot/what-you-can-do/token-safety-and-spam-detection.md).

## Consolidation Sends (External → Embedded)

A special case: moving funds from a *connected* external wallet into your *embedded* Archer wallet.

* *"Send all my USDC from my connected wallet to my Archer wallet on Base"*

This send opens your external wallet's native popup (MetaMask, Phantom, etc.) for approval. Archer cannot sign on behalf of an external wallet. Once it confirms, the funds land in your primary wallet and are ready for swaps and bridges.

Consolidation sends are **only available in the web app**. MCP/headless clients can't render external wallet popups.

## Address Format Validation

Archer validates the destination address against the chain's format:

* **EVM chains:** must be a valid `0x...` address with a correct checksum
* **Solana:** must be a valid base58 public key

Invalid addresses are rejected before the confirmation modal appears.

## Sample Output Structure (MCP / API)

```json
{
  "status": "OK",
  "transactionRequest": {
    "to": "0xRecipient...",
    "data": "0xa9059cbb...",
    "value": "0",
    "chainId": 42161,
    "signingTarget": "primary"
  },
  "humanSummary": "Send 50 USDC to 0xABC...DEF on Arbitrum",
  "amount": "50.00",
  "amountUsd": "50.00",
  "token": "USDC",
  "destinationType": "wallet",
  "gasEstimateUsd": "0.02"
}
```
