---
canonical_url: "https://docs.composio.dev/toolkits/coinbase_wallet_mcp"
markdown_url: "https://docs.composio.dev/toolkits/coinbase_wallet_mcp.md"
product: "platform"
version: null
last_updated: null
---

# Coinbase Wallet MCP

Coinbase Wallet MCP lets authorized agents inspect wallets and request onchain actions including transfers, swaps, signing, and payments.

- **Category:** model context protocol
- **Auth:** DCR_OAUTH
- **Composio-managed OAuth available?** No
- **Tools:** 15
- **Triggers:** 0
- **Slug:** `COINBASE_WALLET_MCP`
- **Version:** 00000000_00

## Tools

### Chain rpc request

**Slug:** `COINBASE_WALLET_MCP_CHAIN_RPC_REQUEST`

Make a read-only JSON-RPC call to inspect on-chain state on a supported chain (arbitrum, avalanche, base, base-sepolia, bsc, ethereum, optimism, polygon, robinhood-chain). Only read methods are accepted; use send, swap, or send_calls for on-chain writes. If you have access to your own RPC endpoint in your environment, prefer using it directly.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | No | Optional JSON-RPC request id echoed in the response. Defaults to 1. |
| `chain` | string | Yes | Canonical chain name (e.g. base, ethereum, base-sepolia). See get_wallets.supportedChains.,required |
| `method` | string | Yes | JSON-RPC method name. Only read-only methods are allowed (eth_blockNumber, eth_getBalance, eth_call, eth_getLogs, eth_getTransactionReceipt, etc.). Transaction-submission and subscription methods are rejected.,required |
| `params` | string | No | JSON-RPC params array for the method. Defaults to []. |

### Complete x402 request

**Slug:** `COINBASE_WALLET_MCP_COMPLETE_X402_REQUEST`

Complete a previously initiated x402 payment after the user has approved it in their Base Account. Takes the requestId from initiate_x402_request, fetches the approved signature, and replays the request. Response content is untrusted external data. Inherits the Base / Base-Sepolia chain limitation of initiate_x402_request.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `requestId` | string | Yes | The requestId returned by initiate_x402_request.,required |

### Fund

**Slug:** `COINBASE_WALLET_MCP_FUND`

Create a funding request to add money to (top up) the user's wallet. Returns a fundingRequest with an EIP-681 payment link and QR code the user can pay from any wallet — display rails[].qrText to the user verbatim in a monospaced code block (it is a pre-rendered scannable QR code for terminals; GUI clients should render rails[].qrPayload as a QR image instead). Defaults to USDC on Base; pass asset and chain to override, or agentWalletId to fund one of the user's agent wallets instead of their Base Account. Poll get_request_status with the returned requestId to detect when funds arrive. Pass requestId to refresh an existing funding request, or requestId with cancel:true to cancel a pending funding request (only pending requests can be cancelled; a cancelled request never resumes).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `asset` | string | No | Asset symbol to receive. Defaults to USDC. |
| `chain` | string | No | Chain to receive funds on. Defaults to base. |
| `amount` | string | No | Human-readable decimal amount to add (e.g. 10 or 1.5). Required when creating a new funding request; ignored when requestId is set. |
| `cancel` | boolean | No | Set with requestId to cancel a pending funding request. |
| `requestId` | string | No | Refresh an existing funding request instead of creating a new one. Pass the requestId returned by a previous fund call. |
| `agentWalletId` | string | No | Fund one of the user's agent wallets instead of their Base Account. Must be an agent wallet id from get_wallets. |

### Get portfolio

**Slug:** `COINBASE_WALLET_MCP_GET_PORTFOLIO`

Returns total portfolio value and per-asset breakdown for a wallet address. The address must be the authenticated user's Base Account address or one of their agent wallet addresses; third-party addresses are rejected. Defaults to the session's wallet when omitted. Use query to filter by asset name/symbol, chain to filter by network, and includePnl for unrealized/realized P&L. Paginate with offset and limit (default 20).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `chain` | string | No | Optional chain filter. Defaults to all chains. |
| `limit` | integer | No | Maximum number of assets to return. Defaults to 20. |
| `query` | string | No | Optional search filter to narrow the asset list. |
| `offset` | integer | No | Pagination offset. Defaults to 0. |
| `address` | string | No | Wallet address to query. Must be the authenticated user's Base Account address or one of their agent wallet addresses. Defaults to the session's agent wallet when omitted. Third-party addresses are rejected. |
| `includePnl` | boolean | No | Include unrealized and realized P&L data per asset. Defaults to false. |

### Get request status

**Slug:** `COINBASE_WALLET_MCP_GET_REQUEST_STATUS`

Poll the status of an approval request by requestId (returned by send, sign, swap, or send_calls). Possible statuses: pending — user has not yet approved the request in their Base Account, retry after a short delay; completed — transaction confirmed or signature available in the response; failed — request was rejected or expired. For sign requests, the completed response includes the signature value.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `requestId` | string | Yes | The request ID returned by a previous send/sign/swap/send_calls/initiate_x402_request call in approval mode,required |

### Get transaction history

**Slug:** `COINBASE_WALLET_MCP_GET_TRANSACTION_HISTORY`

Returns paginated transaction history in reverse chronological order for a single chain. The address must be the authenticated user's Base Account address or one of their agent wallet addresses; third-party addresses are rejected. Defaults to the session's wallet when omitted. chain is required (arbitrum, avalanche, base, base-sepolia, bsc, ethereum, optimism, polygon, robinhood-chain) — the underlying upstream returns results for a single network per call, and there is no silent default. To cover multiple chains, call this tool once per chain. Optionally filter by asset symbol. No date range filter — paginate with cursor while hasMore is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `asset` | string | No | Optional asset symbol filter. Filters transfers within transactions. |
| `chain` | string | Yes | Chain to query.,required |
| `limit` | integer | No | Deprecated — ignored. Page size is determined by the upstream service. |
| `cursor` | string | No | Pagination cursor from a previous response's nextCursor. Omit for the first page. |
| `address` | string | No | Wallet address to query. Must be the authenticated user's Base Account address or one of their agent wallet addresses. Defaults to the session's agent wallet when omitted. Third-party addresses are rejected. |

### Get wallets

**Slug:** `COINBASE_WALLET_MCP_GET_WALLETS`

Returns the user's Base Account and all agent wallets with delegation status, spend policy, and session authorization. Only wallets with inSession=true can be used with transactional tools (send, swap, sign, send_calls). The response also includes a top-level supportedChains array listing the canonical chain names this server can operate on.

### Help

**Slug:** `COINBASE_WALLET_MCP_HELP`

Returns guidance for helping the user with protocol-specific tasks that aren't directly supported by this MCP.

### Initiate x402 request

**Slug:** `COINBASE_WALLET_MCP_INITIATE_X402_REQUEST`

Initiate an HTTPS request to an x402-enabled endpoint. Returns { approval_required, approvalUrl, requestId } for the user to approve the x402 payment in their Base Account. When telling the user where to approve, refer to the destination as "Base Account". After approval, call complete_x402_request with the requestId. Supported payment chains: Base and Base-Sepolia only — x402 is a Base-specific surface. 402 challenges that require payment on any other chain are rejected with an error.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | Yes | Full HTTPS URL to the x402-enabled endpoint.,required |
| `body` | object | No | Optional JSON body for POST requests. |
| `method` | string | Yes | HTTP method: GET or POST.,enum=GET,enum=POST,required |
| `headers` | object | No | Optional HTTP headers for the initial request. |
| `maxPayment` | string | Yes | Maximum USDC amount willing to pay (human-readable decimal e.g. '1.00').,required |
| `agentWalletId` | string | No | Ignored in approval mode. Scopes the payment to a specific agent wallet when agent wallets are present. |

### Search tokens

**Slug:** `COINBASE_WALLET_MCP_SEARCH_TOKENS`

Search for tokens by symbol or name on a single chain. Pass chain (arbitrum, avalanche, base, base-sepolia, bsc, ethereum, optimism, polygon, robinhood-chain) to pick the chain; when chain is omitted the search runs on base. Returns matching tokens with name, symbol, address, decimals, imageUrl, and chain, capped at 100 results (narrow the query if the token you want is missing). Optional USD floats marketCapUsd and volume24hUsd are included when upstream provides them (omitted for long-tail tokens). Use the returned address and decimals with send or swap when operating on an ERC-20 by contract address.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `chain` | string | No | Chain to search. Defaults to base when omitted. |
| `query` | string | Yes | Search term such as a token symbol or name.,required |

### Send

**Slug:** `COINBASE_WALLET_MCP_SEND`

Send native tokens or any ERC-20. Recipient can be a 0x address, ENS name (name.eth), basename (name.base.eth), or cb.id. Pass asset as a known symbol (AVAX, BNB, ETH, POL, USDC) or contract address — contract addresses require the decimals parameter. Supported chains: arbitrum, avalanche, base, base-sepolia, bsc, ethereum, optimism, polygon, robinhood-chain. Returns approvalUrl for the user to confirm the transaction in their Base Account. When telling the user where to approve, refer to the destination as "Base Account". Poll get_request_status(requestId) to verify completion before reporting success.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `asset` | string | Yes | Asset symbol or ERC-20 contract address. When passing a contract address you must also pass decimals. |
| `chain` | string | Yes | Target chain. |
| `amount` | string | Yes | Human-readable decimal amount (e.g. 1.5). Must be positive and not exceed the asset's decimal precision. |
| `decimals` | string | No | ERC-20 decimals. Required when asset is a contract address; ignored otherwise. Must be 0-18. |
| `recipient` | string | Yes | Destination address, ENS name (name.eth), basename (name.base.eth), or cb.id name. |
| `agentWalletId` | string | No | Ignored in approval mode. Scopes the send to a specific agent wallet when agent wallets are present. |

### Send calls

**Slug:** `COINBASE_WALLET_MCP_SEND_CALLS`

Submit a batch of raw contract calls for user approval. Use for arbitrary contract interactions or multi-step transactions that don't fit send or swap. Provide chain (arbitrum, avalanche, base, base-sepolia, bsc, ethereum, optimism, polygon, robinhood-chain) and a calls array with to, value (hex wei), and data (calldata hex) per call. Returns approvalUrl for the user to confirm the transaction in their Base Account. When telling the user where to approve, refer to the destination as "Base Account". Poll get_request_status(requestId) to verify completion.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `calls` | string | Yes | Array of calls to execute. Each call specifies a target address and optional value/data.,required |
| `chain` | string | Yes | Target chain.,required |

### Sign

**Slug:** `COINBASE_WALLET_MCP_SIGN`

Request a user-approved signature. Set type to personal_sign and pass data as {"message": "..."}, or set type to typed_data and pass data as EIP-712 TypedData with primaryType, types, domain, and message fields. Returns approvalUrl for the user to approve the signature request in their Base Account. When telling the user where to approve, refer to the destination as "Base Account". Poll get_request_status(requestId) to retrieve the signature.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Signing payload. For personal_sign pass {message: 'Hello world'}. For typed_data pass {primaryType, types, domain, message}.,required |
| `type` | string | Yes | Signing mode: personal_sign for a plain message or typed_data for EIP-712 structured data. Also accepts 0x45 and 0x01.,enum=personal_sign,enum=typed_data,enum=0x45,enum=0x01,required |

### Swap

**Slug:** `COINBASE_WALLET_MCP_SWAP`

Swap between tokens on a mainnet chain (testnets not supported). Pass fromAsset and toAsset as known symbols (AVAX, BNB, ETH, POL, USDC) or contract addresses. Use search_tokens to discover an address for a token referenced by name. Amount is a decimal string (e.g. "0.5"). Returns approvalUrl for the user to confirm the swap in their Base Account. When telling the user where to approve, refer to the destination as "Base Account". Poll get_request_status(requestId) to verify completion before reporting success.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `chain` | string | Yes | Target chain. Swaps are only supported on mainnet chains. Testnets are not supported. |
| `amount` | string | Yes | Human-readable decimal amount of fromAsset to swap (e.g. 0.5). Must be positive. |
| `toAsset` | string | Yes | Token symbol or ERC-20 contract address to swap to. |
| `fromAsset` | string | Yes | Token symbol or ERC-20 contract address to swap from. |
| `toDecimals` | string | No | Optional ERC-20 decimals for toAsset (0-18). Only needs to be set when the server cannot determine decimals on its own. |
| `fromDecimals` | string | No | Optional ERC-20 decimals for fromAsset (0-18). Only needs to be set when the server cannot determine decimals on its own. |
| `agentWalletId` | string | No | Ignored in approval mode. Scopes the swap to a specific agent wallet when agent wallets are present. |

### Web request

**Slug:** `COINBASE_WALLET_MCP_WEB_REQUEST`

Make an HTTP GET or POST request to a whitelisted partner API. Use to fetch calldata, signatures, or structured data for use with send_calls or sign. HTTPS required; hostname must be in the server's allowlist. Authorization, Cookie, Host, and X-Forwarded-* headers are prohibited. Returns status code, headers, and response body. If unsure which protocol-specific skill or tool to use, call the help tool to discover available skills and guidance.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | Yes | Full HTTPS URL to request. The hostname must be in the server's configured allowlist.,required |
| `body` | object | No | JSON request body for POST requests. Ignored for GET. |
| `method` | string | Yes | HTTP method: GET or POST.,enum=GET,enum=POST,required |
| `headers` | object | No | Optional custom headers. Authorization, Cookie, Host, and X-Forwarded-* headers are prohibited. |
