> ## Documentation Index
> Fetch the complete documentation index at: https://docs.walletsuite.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Tool Reference

> The public WalletSuite MCP tool surface, grouped by execution level.

WalletSuite operates the MCP runtime; you point your client at the hosted endpoint and the tools below are what an agent can reach. Each tool belongs to an [execution level](/ai-agents/execution-levels) — the level determines which tools are registered in the agent's MCP schema.

<Info>
  A tool outside the agent's granted profile is never registered in the schema — the [prompt-injection boundary](/ai-agents/security-model). What each level grants is in [Execution Levels](/ai-agents/execution-levels).
</Info>

## Token-transfer pattern

When you are working with token transfers, use this order:

1. Call `resolve_asset` with the chain and a token symbol, name, or contract
2. Choose the intended candidate
3. Pass the selected `tokenContract` into the transaction-preparation step

WalletSuite MCP does not guess token contracts from symbols or names.

## R0 · Read Tools

Available at [R0 Read](/ai-agents/execution-levels#r0-read) and above. No signing scope is present, so no signing tool is reachable regardless of policy.

### `get_balance`

**What it does:** Returns the native balance for one address on one chain.

**Required inputs:**

* `address`
* `chain`

**Optional inputs:**

* `fiat` (defaults to `USD`)

**Returns:** Native asset balance and valuation details for the selected chain.

**Example prompt:** `Check the native balance for 0x... on ethereum.`

### `get_all_balances`

**What it does:** Returns native and token balances for one address on one chain.

**Required inputs:**

* `address`
* `chain`

**Optional inputs:**

* `fiat` (defaults to `USD`)
* `assetIds`
* `includeNative` (defaults to `true`)

**Returns:** A broader portfolio view for the selected chain.

**Example prompt:** `Show all balances for 0x... on ethereum.`

### `get_price`

**What it does:** Returns the current price for a token by symbol or by contract address.

**Required inputs:**

* either `symbol`
* or both `contractAddress` and `chain`

**Optional inputs:**

* `base` (defaults to `USD`)

**Returns:** Current token price data for the requested pair.

**Example prompt:** `What's the price of ETH?`

### `get_fee_quote`

**What it does:** Estimates the network fee for a native or token transfer before execution.

**Required inputs:**

* `chain`
* `from`
* `to`
* `amountWei`

**Optional inputs:**

* `tokenContract`
* `memo`
* `fiat`

**Returns:** Estimated network fee details for the proposed transfer.

**Example prompt:** `Estimate the fee to send 1000000 smallest-unit USDC from 0x... to 0x... on ethereum.`

### `resolve_asset`

**What it does:** Resolves a token symbol, name, or exact contract into one or more chain-specific asset candidates.

**Required inputs:**

* `chain`
* exactly one of `tokenContract`, `symbol`, or `name`

**Optional inputs:**

* `limit` (defaults to `5`, max `10`)

**Returns:** A candidate list plus a resolution status of `unique`, `ambiguous`, or `not_found`.

**Example prompt:** `Resolve USDC on ethereum so I can prepare a transfer.`

### `get_tx_status`

**What it does:** Returns the status of one transaction hash on one chain.

**Required inputs:**

* `hash`
* `chain`

**Returns:** A transaction status such as `PENDING`, `SUCCEEDED`, `FAILED`, or `UNKNOWN`.

**Example prompt:** `What's the status of transaction 0x... on ethereum?`

### `get_tx_history`

**What it does:** Returns recent transaction history for one address on one chain.

**Required inputs:**

* `address`
* `chain`

**Optional inputs:**

* `limit` (defaults to `10`, max `50`)

**Returns:** A trimmed list of recent transactions for the address.

**Example prompt:** `Show me the last 10 transactions for 0x... on ethereum.`

## R1 · Prepare Tools

Available at [R1 Prepare](/ai-agents/execution-levels#r1-prepare) and above. These construct unsigned artifacts; they never release a signature.

### `prepare_transfer`

**What it does:** Prepares a structured transfer request for later execution.

**Required inputs:**

* `chain`
* `from`
* `to`
* either `amount` or `amountWei`

**Optional inputs:**

* `symbol`
* `tokenContract`
* `nonce`
* `maxPriorityFeePerGasWei`
* `priorityFeeMultiplier`

**Important rules:**

* provide either `amount` or `amountWei`, never both
* token transfers require `tokenContract`
* if you only know the token symbol or name, resolve it first with `resolve_asset`

**Returns:** A structured prepared transfer result for the requested transaction.

**Example prompt:** `Prepare a transfer of 1 ETH from 0x... to 0x... on ethereum.`

### `prepare_serialized_unsigned_tx`

**What it does:** Prepares signing-ready raw unsigned transaction hex for the MPC signing layer and subsequent broadcast.

**Required inputs:**

* `chain`
* `to`
* either `walletName` or `from`
* either `amount` or `amountWei`

**Optional inputs:**

* `walletName`
* `from`
* `symbol`
* `tokenContract`
* `nonce`
* `maxPriorityFeePerGasWei`
* `priorityFeeMultiplier`

**Important rules:**

* provide either `amount` or `amountWei`, never both
* token transfers require `tokenContract`
* if you only know the token symbol or name, resolve it first with `resolve_asset`
* see [Supported Chains](/supported-chains) for the chain surface

**Returns:** Signing-ready raw unsigned transaction hex plus a review summary.

**Example prompt:** `Prepare a signing-ready transaction to send 1 ETH from my local wallet to 0x... on ethereum.`

### `prepare_onramp`

**What it does:** Prepares a fiat on-ramp widget URL for funding a destination address or a managed MPC wallet on a supported chain.

**Required inputs:**

* `chain`
* exactly one of `address` or `walletName`

**Optional inputs:**

* `currencyCode` (defaults to the chain-native asset)
* `baseCurrencyCode` (required if `baseCurrencyAmount` or `quoteCurrencyAmount` is provided)
* one of `baseCurrencyAmount` or `quoteCurrencyAmount`
* `lockAmount` (only valid with `baseCurrencyAmount`)
* `redirectUrl` (HTTPS)

**Returns:** A fiat on-ramp widget URL plus the resolved destination address and next-action hint.

**Notes:**

* Requires the fiat on-ramp to be enabled. If unavailable, the call returns a structured `not_available` error.
* If `walletName` is provided, the tool resolves the chain-specific wallet address before building the widget URL.

**Example prompt:** `Prepare an on-ramp to fund my treasury wallet with 500 USD on ethereum.`

## R2 · Execute Tools

Available at [R2 Execute](/ai-agents/execution-levels#r2-execute). These are registered only when the agent's tool profile includes `execute` and its token carries `wallets:sign` — otherwise they never appear in the schema.

Signing is non-custodial MPC threshold signing — no full private key is ever assembled. External BYO signing, where you manage the key yourself, is also supported. See the [trust model](/security/overview#trust-model). Every execution composes with the deterministic policy engine before a signature is released — see [Policy Gates](/core-concepts/policy-gates).

<Note>
  **Not agent tools.** Wallet creation and policy-rule management are admin operations, not MCP tools — see [Managing Policy Rules](/core-concepts/managing-policy-rules). Agents are provisioned in the dashboard, not from a tool — see [Connect your agent](/ai-agents/token-exchange).
</Note>

### `get_wallet_address`

**What it does:** Returns the address for a named wallet on a supported signing chain.

**Required inputs:**

* `walletName`
* `chain`

**Returns:** The wallet address for the selected chain.

**Example prompt:** `Get the ethereum address for my wallet named treasury.`

### `sign_transaction`

**What it does:** Signs a raw unsigned transaction hex blob via MPC threshold signing.

**Required inputs:**

* `walletName`
* `chain`
* `unsignedTxHex`

**Returns:** A signature and recovery id when available.

**Important note:** This works with raw unsigned transaction hex.

**Example prompt:** `Sign this raw unsigned ethereum transaction hex with my treasury wallet.`

### `send_transaction`

**What it does:** Signs and broadcasts a raw unsigned transaction hex blob via MPC threshold signing.

**Required inputs:**

* `walletName`
* `chain`
* `unsignedTxHex`
* `confirmBroadcast=true`

**Returns:** The resulting transaction hash.

**Important notes:**

* this is the destructive path
* explicit confirmation is required
* this works with raw unsigned transaction hex

**Example prompt:** `Broadcast this unsigned ethereum transaction with my treasury wallet.`
