The 1inch MCP server provides eight tools. Five execution tools require authentication; three public tools work without it. For the conceptual overview, see the MCP server page.
Authenticated tools (API key or OAuth)
These tools require authentication. Authenticate via an API key header or OAuth — see Authentication setup.
swap
Execute token swaps via 1inch. The server automatically finds the best rate across all available routes, handles token resolution, allowance checks, and transaction building — the agent only signs transactions where required. Supports same-chain and cross-chain swaps.
| Parameter | Type | Required | Description |
|---|---|---|---|
src |
string | Yes | Source token (symbol or address) |
dst |
string | Yes | Destination token (symbol or address) |
amount |
string | Yes | Amount in smallest units |
chain |
number | Yes | Chain ID |
from |
string | Yes | Sender wallet address |
quoteOnly |
boolean | No | If true, returns quotes without building a transaction |
preferredType |
string | No | "classic", "fusion", or "crosschain" (omit to auto-route) |
dstChain |
number | No | Destination chain ID (triggers cross-chain mode) |
slippage |
number | No | Slippage tolerance in percent (default 0.5) |
signedOrder |
string | No | Submit a previously signed Fusion/cross-chain order |
orderHash |
string | No | Order hash for submission |
Typical flow:
- Call
swapwith source/destination tokens and amount — the server finds the best rate automatically - Sign the returned transaction (
eth_sendTransaction) or typed data (eth_signTypedData_v4) - For Fusion/cross-chain: call
swapagain with thesignedOrderto submit
orderbook
Manage limit orders via the 1inch Orderbook API (v4.1). The server builds orders server-side using the Limit Order SDK — no SDK installation needed on the client.
Actions:
| Action | Description |
|---|---|
build |
Server-side order construction. Returns EIP-712 typed data for signing |
create |
Submit a signed order to the orderbook |
list |
Query orders by maker address, order hash, or browse all with pagination |
cancel |
Load order state and return on-chain cancellation guidance |
Build parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
action |
string | Yes | "build" |
chain |
number | Yes | Chain ID |
makerAsset |
string | Yes | Token to sell (symbol or address) |
takerAsset |
string | Yes | Token to receive (symbol or address) |
makingAmount |
string | Yes | Amount to sell (smallest units) |
takingAmount |
string | Yes | Amount to receive (smallest units) |
maker |
string | Yes | Maker wallet address |
expirationSeconds |
number | No | Expiration in seconds (default 600) |
Typical flow:
- Call
orderbookwithaction: "build"and your order parameters - Approve the maker asset for the Limit Order Protocol contract (address provided in the response)
- Sign the returned
typedDatawitheth_signTypedData_v4 - Call
orderbookwithaction: "create", passingorderHash,signature, andorderDatafrom the build response
product_api
Call any 1inch Business product API endpoint using your authenticated session. This single tool provides access to all 1inch APIs: Portfolio, Spot Price, Token, Gas Price, Web3 RPC, Balance, NFT, Charts, Transaction Gateway, and every other endpoint available in the 1inch Business platform.
For Portfolio v5.0 through this gateway, use paths starting with /portfolio/portfolio/v5.0/... (the first /portfolio segment is stripped when routing to the Portfolio service).
| Parameter | Type | Required | Description |
|---|---|---|---|
method |
string | No | "GET" or "POST" (default "GET") |
path |
string | Yes | API path (e.g. /portfolio/portfolio/v5.0/general/current_value) |
query |
object | No | Query parameters as key-value pairs |
body |
object | No | Request body for POST requests |
walletconnect
Pair a non-custodial wallet with the MCP session via WalletConnect v2 so the assistant can request signatures and submit on-chain transactions for the user. Supports EVM and Solana namespaces (depending on the wallet). The MCP server never sees private keys — the wallet app shows every signature / transaction request and the user approves it directly.
When to use it: any flow that needs a real signature or eth_sendTransaction driven by the assistant — for example completing a swap or sending an order on-chain — instead of pasting transaction data back into a wallet manually.
| Parameter | Type | Required | Description |
|---|---|---|---|
action |
string | Yes | One of: "connect", "status", "sign", "send_transaction", "disconnect" |
pairingTarget |
string | No (only with connect) |
What to advertise in the pairing proposal: "eth" (default, EVM only), "solana", or "both". Many mobile wallets fail when EVM and Solana are proposed together |
sessionTtlDays |
number | No (only with connect) |
How long to persist the WalletConnect session (days). Server clamps to a per-deployment maximum (default 30, max 365) |
method |
string | Yes (only with sign) |
"personal_sign", "eth_signTypedData_v4", "solana_signMessage", or "solana_signTransaction" |
params |
array | Yes (only with sign) |
Exactly two items, shape depends on method (see below) |
chainId |
number | No (only with sign/personal_sign) |
EVM numeric chain id when signing |
solanaChainId |
string | No (only with sign Solana methods) |
CAIP-2 chain id, e.g. "solana:5eykt4UsFv8P8NJdT7ipf5EZiJUfk8tXwnUS2esLgDU". When omitted, the first Solana chain on the session is used |
tx |
object | Yes (only with send_transaction) |
EVM: { to, chainId, data?, value?, from? }. Solana: { chainId: "solana:…", serializedTransaction: "<base64>", from? } |
sign params by method:
| Method | params shape |
|---|---|
personal_sign |
[message: string, signerAddress: "0x…"] |
eth_signTypedData_v4 |
[signerAddress: "0x…", typedDataJsonString] |
solana_signMessage |
[message: string, signerPubkey: base58] |
solana_signTransaction |
[serializedTransactionBase64, signerPubkey] |
Typical flow:
connect— call withaction: "connect"(optionallypairingTarget: "solana"or"both"). The response contains a pairing QR (PNG resource link) and awc:URI. Desktop / scan UX: the assistant fetches the QR via MCPresources/readand renders or opens the PNG. Mobile UX: the response includesmobileDeeplinksfor curated wallets — tap one to open the wallet directly without scanning.- User approves in the wallet. The wallet shows the connection request; the user picks accounts/chains and approves.
status— call withaction: "status"untilkind: "session"is returned (or a clear error).kind: "pending"is a success state — keep polling.sign/send_transaction— drive the user's wallet for individual signatures or transactions. The user approves each request in their wallet app.disconnect— call withaction: "disconnect"to end the session and clear server-side pairing state.
Idempotent connect: calling connect again while a pairing is still in progress with the same pairingTarget returns the same wc: URI. Changing pairingTarget starts a new proposal and invalidates the previous QR.
Supported wallets
The connect response includes mobileDeeplinks for these curated wallets so users on mobile can pair with one tap. Any WalletConnect v2-compatible wallet can also pair by scanning the QR or pasting the wc: URI:
| Wallet | Chains |
|---|---|
| MetaMask | EVM |
| 1inch Wallet | EVM, Solana |
| Coinbase Wallet | EVM, Solana |
| Trust Wallet | EVM, Solana |
| Phantom | EVM, Solana |
| Solflare | Solana |
Error states
The tool returns a structured JSON error with kind: "error" and a code so the assistant can react:
code |
Meaning |
|---|---|
not_connected |
No active WalletConnect session — call connect first |
invalid_request |
Malformed input or wrong field for the chosen action (e.g. chainId on a Solana sign) |
solana_namespace_not_available |
Active session does not include Solana — reconnect with pairingTarget: "solana" or "both" and approve Solana in the wallet |
relay_* |
Transient WalletConnect relay error — retry, or guide the user to reconnect |
debug
Debug production issues by looking up request logs. Provide a correlation id (x-request-id from any API response) to trace a specific request, or specify a time window to retrieve all logs for your account.
| Parameter | Type | Required | Description |
|---|---|---|---|
requestId |
string | No* | x-request-id (or correlation id) from API responses. When set, searches logs for this value; optional startTime / endTime narrow the window (defaults to the last 24 hours ending at endTime or now). |
startTime |
string | No* | RFC3339 start of the query window (required with endTime when requestId is omitted). |
endTime |
string | No | RFC3339 end of the query window. |
logLevel |
string | No | Filter by log level: "info", "warn", or "error". Omit to return all levels. Only applies to time-window mode (ignored when requestId is set). |
limit |
number | No | Max log lines (1–100, default 50). |
*Provide requestId, or both startTime and endTime, to list all logs in that window (when requestId is omitted).
Log retention: the time window you can query depends on the log retention period of your subscription plan.
Response shape: JSON with mode (request_id or logs), timeRange (start / end in RFC3339), count, and logs (array of entries). Each entry includes timestamp, message, and optional level and HTTP status code.
Public tools (no authentication required)
search
Search across all 1inch documentation, API references, and SDK guides. Returns matching results with titles, snippets, and links.
| Parameter | Type | Required | Description |
|---|---|---|---|
query |
string | Yes | Search query |
limit |
number | No | Results per page (1–100) |
page |
number | No | Page number (1-based) |
include_body |
boolean | No | Include full document body in results |
list_examples
List all available SDK code examples. Returns example names that can be used with the get_example tool. No parameters required.
Currently available examples:
- @1inch-examples/intent-swap — Intent/Fusion swaps for EVM and Solana
- @1inch-examples/limit-order — Limit orders for EVM chains
- @1inch-examples/cross-chain-swap — Cross-chain swaps (Fusion+)
get_example
Retrieve the full source code of an SDK example.
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Example name from list_examples |
file |
string | No | Specific file path (omit to get all files) |