> For the complete documentation index, see [llms.txt](/llms.txt).

# Swap and bridge tokens

Get a quote, review the route, and execute a same-chain swap or cross-chain bridge.

## Ask your agent[​](#ask-your-agent "Direct link to Ask your agent")

```
You (to your agent): "Swap 0.1 ETH to USDC"

```

For a cross-chain bridge:

```
You (to your agent): "Bridge 10 USDC from Base to Arbitrum"

```

Your agent fetches a quote, shows you the route and output, then executes after you confirm.

## Prerequisites[​](#prerequisites "Direct link to Prerequisites")

- [Quickstart](/agent-wallet/quickstart/) completed
- Sufficient balance of the source token on the source chain

## Same-chain swap[​](#same-chain-swap "Direct link to Same-chain swap")

1. Request a quote:  
```  
mm swap quote --from <TOKEN> --to <TOKEN> --amount <AMOUNT> --from-chain <CHAIN_ID> [--slippage <PERCENT>]  
```
2. Review the quoted output, fees, and route in the command output. Note the `quoteId`.
3. Execute the swap:  
```  
mm swap execute --quote-id <QUOTE_ID>  
```
4. Optionally check status:  
```  
mm swap status --quote-id <QUOTE_ID>  
```

## Cross-chain bridge[​](#cross-chain-bridge "Direct link to Cross-chain bridge")

Include `--to-chain` when requesting a quote:

```
mm swap quote --from USDC --to USDC --amount 10 --from-chain 8453 --to-chain 42161
mm swap execute --quote-id <QUOTE_ID>

```

### Send bridged tokens to another address[​](#send-bridged-tokens-to-another-address "Direct link to Send bridged tokens to another address")

Add `--to-address` to send output tokens to a recipient other than your wallet. Only valid for cross-chain bridges (`--to-chain` differs from `--from-chain`):

```
mm swap quote --from USDC --to USDC --amount 10 --from-chain 8453 --to-chain 42161 --to-address 0x742d35Cc6634C0532925a3b844Bc454e4438f08e

```

### Top up destination gas (refuel)[​](#top-up-destination-gas-refuel "Direct link to Top up destination gas (refuel)")

When bridging to a chain where you hold no native gas token, add `--refuel` to bundle a small destination native-gas top-up into the quote:

```
mm swap quote --from USDC --to USDC --amount 50 --from-chain 1 --to-chain 42161 --refuel

```

Refuel is opt-in and cross-chain only. Do not use `--refuel` when the destination token is the destination chain's native gas asset (for example, bridging ETH to Arbitrum ETH). The backend returns `NO_QUOTES` in that case.

## Compare quotes[​](#compare-quotes "Direct link to Compare quotes")

Use `--all-quotes` to see all available routes ranked by your preferred strategy:

```
mm swap quote --from ETH --to USDC --amount 0.5 --from-chain 1 --all-quotes --strategy cost,speed

```

A ★ marks the recommended quote. Execute a specific quote by its ID:

```
mm swap execute --quote-id <QUOTE_ID>

```

Available strategies: `cost`, `speed`, `impact`, `output`. The default is `cost,speed`.

## Gasless swaps[​](#gasless-swaps "Direct link to Gasless swaps")

When your wallet's native balance cannot cover gas, the CLI automatically uses gasless execution via the EIP-7702 relay for eligible quotes. No additional flags are required.

## Unavailable quotes[​](#unavailable-quotes "Direct link to Unavailable quotes")

When the bridge returns zero routes for actionable reasons, `mm swap quote` returns a soft unavailable result (exit 0) instead of a hard error. The response includes:

- `kind: "unavailable"` — no quote was generated.
- `reason` — one of `AMOUNT_TOO_LOW`, `SLIPPAGE_TOO_HIGH`, `NO_QUOTES`, or other actionable codes.
- `message` — a human-readable explanation.
- `hint` — guidance on how to adjust and retry.

Your agent can inspect the reason and adjust amount, slippage, or token before retrying. Only the transient `QUOTE_RETRY` bridge signal produces a hard error (exit 1).

## Common pitfalls[​](#common-pitfalls "Direct link to Common pitfalls")

Verify the quote step succeeded

If `mm swap quote` returns an unavailable result or no quote ID, do not call `mm swap execute` with a fabricated or expired quote ID. The execute step fails and no transaction is submitted, even when partial output is printed.

## Related commands[​](#related-commands "Direct link to Related commands")

See [mm swap](/agent-wallet/reference/commands/#mm-swap) in the commands reference.
