> 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/build-with-archer/overview/tools-reference.md).

# Tools Reference

Complete reference for all tools available through Archer's MCP server. Tools are organized into two categories: **read-only** (no approval needed) and **transactional** (requires human approval in the webapp).

***

## Read-Only Tools

These tools fetch data and do not modify any on-chain state. They can be called freely without transaction approval.

### `resolve_token`

Look up token metadata by ticker symbol or contract address.

**Parameters:**

| Name     | Type   | Required | Description                                         |
| -------- | ------ | :------: | --------------------------------------------------- |
| `ticker` | string |    Yes   | Token symbol (e.g., "USDC") or contract address     |
| `chain`  | string |    No    | Chain name (e.g., "ethereum", "arbitrum", "solana") |

**Example prompt:** "Find the contract address for USDC on Arbitrum"

**Returns:** Token name, symbol, contract address, decimals, chain, CoinGecko ID

***

### `get_token_price`

Get the current USD price for a token.

**Parameters:**

| Name     | Type   | Required | Description                       |
| -------- | ------ | :------: | --------------------------------- |
| `ticker` | string |    Yes   | Token symbol (e.g., "ETH", "SOL") |
| `chain`  | string |    No    | Chain for chain-specific pricing  |

**Example prompt:** "What's the price of SOL right now?"

**Returns:** Current USD price, 24h change percentage

***

### `get_user_balances`

Fetch token balances across all connected chains for the authenticated user.

**Parameters:** None (uses the authenticated user's wallets)

**Example prompt:** "Show me my balances on all chains"

**Returns:** Array of token balances with chain, amount, and USD value

***

### `get_chain_capabilities`

List all supported chains and their configurations.

**Parameters:** None

**Example prompt:** "What chains does Archer support?"

**Returns:** Chain names, IDs, native tokens, supported operations

***

### `get_swap_quote`

Get a swap quote without executing. Useful for price comparisons.

**Parameters:**

| Name        | Type   | Required | Description                                  |
| ----------- | ------ | :------: | -------------------------------------------- |
| `fromToken` | string |    Yes   | Source token symbol or address               |
| `toToken`   | string |    Yes   | Destination token symbol or address          |
| `amount`    | string |    Yes   | Amount to swap (human-readable, e.g., "100") |
| `chain`     | string |    Yes   | Chain to execute on                          |
| `slippage`  | number |    No    | Slippage tolerance (default: 0.5%)           |

**Example prompt:** "Quote swapping 100 USDC to ETH on Base"

**Returns:** Expected output amount, price impact, estimated gas, route details

***

### `get_bridge_quote`

Get a cross-chain bridge quote without executing.

**Parameters:**

| Name               | Type   | Required | Description       |
| ------------------ | ------ | :------: | ----------------- |
| `token`            | string |    Yes   | Token to bridge   |
| `amount`           | string |    Yes   | Amount to bridge  |
| `sourceChain`      | string |    Yes   | Source chain      |
| `destinationChain` | string |    Yes   | Destination chain |

**Example prompt:** "How much would it cost to bridge 0.5 ETH from Ethereum to Arbitrum?"

**Returns:** Expected output, bridge fee, estimated time, route provider

***

### `check_feasibility`

Validate whether a transaction is feasible given current balances and chain state.

**Parameters:**

| Name        | Type   | Required | Description                                 |
| ----------- | ------ | :------: | ------------------------------------------- |
| `operation` | string |    Yes   | Operation type: "swap", "bridge", or "send" |
| `token`     | string |    Yes   | Token involved                              |
| `amount`    | string |    Yes   | Amount                                      |
| `chain`     | string |    Yes   | Chain                                       |

**Example prompt:** "Can I swap 500 USDC to ETH on Arbitrum with my current balance?"

**Returns:** Feasibility status, current balance, gas estimate, any blockers

***

### `check_approval_status`

Check the status of a pending transaction approval.

**Parameters:**

| Parameter    | Type   | Required | Description                                    |
| ------------ | ------ | :------: | ---------------------------------------------- |
| `approvalId` | string |    Yes   | The approval ID returned by a `prepare_*` tool |

**Example prompt:** "What's the status of my pending swap?"

**Returns:** Approval status (`PENDING`, `APPROVED`, `REJECTED`, `EXPIRED`), transaction hash (if executed), and timestamps

***

## Transactional Tools

These tools prepare on-chain transactions. When called, they create a **Pending Approval** in the Archer webapp that you must review and sign before the transaction is submitted.

### `prepare_swap_tx`

Build a swap transaction for signing.

**Parameters:**

| Name        | Type   | Required | Description         |
| ----------- | ------ | :------: | ------------------- |
| `fromToken` | string |    Yes   | Source token        |
| `toToken`   | string |    Yes   | Destination token   |
| `amount`    | string |    Yes   | Amount to swap      |
| `chain`     | string |    Yes   | Chain to execute on |
| `slippage`  | number |    No    | Slippage tolerance  |

**Example prompt:** "Swap 50 USDC to ETH on Base"

**Approval flow:** Transaction details appear in the webapp. You review the swap parameters, expected output, and gas cost. Click **Approve** to sign and submit, or **Reject** to cancel.

***

### `prepare_bridge_tx`

Build a cross-chain bridge transaction for signing.

**Parameters:**

| Name               | Type   | Required | Description       |
| ------------------ | ------ | :------: | ----------------- |
| `token`            | string |    Yes   | Token to bridge   |
| `amount`           | string |    Yes   | Amount            |
| `sourceChain`      | string |    Yes   | Source chain      |
| `destinationChain` | string |    Yes   | Destination chain |

**Example prompt:** "Bridge 100 USDC from Ethereum to Arbitrum"

**Approval flow:** Transaction details appear in the webapp showing source chain, destination chain, amount, estimated time, and bridge fee.

***

### `prepare_send_tx`

Build a token transfer transaction for signing.

**Parameters:**

| Name        | Type   | Required | Description              |
| ----------- | ------ | :------: | ------------------------ |
| `token`     | string |    Yes   | Token to send            |
| `amount`    | string |    Yes   | Amount                   |
| `toAddress` | string |    Yes   | Recipient wallet address |
| `chain`     | string |    Yes   | Chain to send on         |

**Example prompt:** "Send 0.1 ETH to 0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18 on Ethereum"

**Approval flow:** Transaction details appear in the webapp showing recipient, amount, and gas cost. Safety check: the system blocks sends to known contract addresses to prevent accidental token loss.

***

## Compute Unit Costs

Each tool call consumes Compute Units (CU). Approximate costs:

| Tool                     | CU Cost |
| ------------------------ | :-----: |
| `resolve_token`          |    5    |
| `get_token_price`        |    5    |
| `get_user_balances`      |  20–50  |
| `get_chain_capabilities` |    2    |
| `get_swap_quote`         |    30   |
| `get_bridge_quote`       |    40   |
| `check_feasibility`      |    8    |
| `check_approval_status`  |    2    |
| `web_search`             |    15   |
| `prepare_swap_tx`        |    60   |
| `prepare_bridge_tx`      |    75   |
| `prepare_send_tx`        |    25   |

`get_user_balances` costs 20 CU for a single chain or 50 CU for all chains. Transaction tools cost more because they involve quote fetching, route optimization, and transaction construction.

Additional CU is consumed for LLM inference when the AI assistant processes your natural language prompt. The cost depends on the model tier: economy (\~40 CU/request), standard (\~145 CU/request), or premium (\~350 CU/request).
