mcpbeat

1inch MCP Server

com.1inch.business/mcp
answering

1inch MCP is answering right now. Last checked 13 min ago. It exposes 9 tools. Last commit 2 Aug 2026.

Doc search, intent & cross-chain swaps, limit orders, portfolio, spot prices, gas & all APIs.

Uptime history 41 hours of history
41 hours agonow
100.0%
Uptime 24h
91 of 91 checks
9
Tools
read from the server
95 ms
Response time
average over 24h
2
Stars
last commit 2 Aug 2026

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 13 min ago.

run in your terminal
claude mcp add mcp --transport http https://api.1inch.com/mcp/protocol
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://api.1inch.com/mcp/protocol"
    }
  }
}
~/.codex/config.toml
[mcp_servers.mcp]
url = "https://api.1inch.com/mcp/protocol"
.cursor/mcp.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://api.1inch.com/mcp/protocol"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://api.1inch.com/mcp/protocol"
    }
  }
}

Available tools 9

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

aqua
aqua
Query the 1inch Aqua API (v1.0) — analytics for Aqua strategies (shared-liquidity market making): maker stats, strategy lists, overview, activity, and volume series. Read-only. No OAuth required. REQUIRED: "action" — read actions (no OAuth): maker_stats, list_maker_strategies, strategy_overview, strategy_activity, strategy_volume, list_opened. Read the resource file://1inch-mcp/guides/aqua-workflow for per-action examples, priceRange semantics, and maker/taker flows. Raw HTTP: product_api with path "/aqua/v1.0/strategies/...".
debug
debug
[Requires authentication] This tool needs OAuth. If it returns an authentication error, prompt the user to connect/authenticate this MCP server (OAuth), then retry. Look up production API request logs for your 1inch Business organization to troubleshoot integration issues. Results are always scoped to your authenticated organization. Two modes: 1) By request id: pass requestId (the x-request-id header returned on 1inch API responses). Optionally narrow startTime/endTime (defaults: last 24 hours ending now). 2) Logs in a time window: omit requestId and pass both startTime and endTime (RFC3339). Optionally set logLevel ("info", "warn", or "error") to filter by severity; omit to return all levels. Limits: each call covers at most a 24-hour window; how far back you can query depends on your plan's log retention.
example
get_example
Get the full source code of an SDK example. Use list_examples first to see available examples.
examples
list_examples
List all available SDK code examples. Returns example names that can be used with get_example tool.
orderbook
orderbook
[Requires authentication] This tool needs OAuth. If it returns an authentication error, prompt the user to connect/authenticate this MCP server (OAuth), then retry. Limit orders via the 1inch Orderbook API (v4.1). IMPORTANT: The "action" parameter is REQUIRED. Must be one of: "build", "create", "list", "cancel". Actions with example parameters: 1. build (recommended first step): { "action": "build", "chain": 1, "makerAsset": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "takerAsset": "0xdAC17F958D2ee523a2206206994597C13D831ec7", "makingAmount": "1000000", "takingAmount": "990000", "makerAddress": "0x..." } Optional: expirationSeconds (default 604800 = 7 days). With an active WalletConnect session, the order is signed and submitted automatically (set execute=false to return typed data only). 2. create (after signing typedData from build): { "action": "create", "chain": 1, "orderHash": "0x...", "signature": "0x...", "orderData": { ... } } 3. list (query orders): - By maker: { "action": "list", "chain": 1, "listMode": "by_maker", "makerAddress": "0x..." } - By hash: { "action": "list", "chain": 1, "listMode": "by_hash", "orderHash": "0x..." } - Browse: { "action": "list", "chain": 1, "listMode": "all", "limit": 10 } 4. cancel (inspect + guidance): { "action": "cancel", "chain": 1, "orderHash": "0x..." } Typical flow: build -> sign typedData -> create (or one build call when WalletConnect is connected — order signed and submitted automatically). The maker asset may require a one-time ERC-20 approval for the Limit Order Protocol; it costs native gas even though the limit order itself is gasless. When a build response includes an "approval" block, tell the user upfront (approval.estimatedCost holds the estimated cost in native units) and broadcast the included approveTx before signing. With WalletConnect, the approve is sent automatically — "approvalTxSent": true means the first wallet prompt was the one-time approval. Requires authentication. For raw HTTP access, use product_api.
product
product_api
[Requires authentication] This tool needs OAuth. If it returns an authentication error, prompt the user to connect/authenticate this MCP server (OAuth), then retry. Call any 1inch product API endpoint using the authenticated user's credentials (base URL is the unified gateway, e.g. https://api.1inch.com). Optional: if your client can read MCP resources, file://1inch-mcp/guides/api-index has live Swagger links and extra gateway notes (mirrors business.1inch.com/portal/llms.txt). Common chain IDs: Ethereum=1, BNB=56, Polygon=137, Arbitrum=42161, Optimism=10, Base=8453, Avalanche=43114, Gnosis=100, zkSync=324, Linea=59144, Sonic=146, Unichain=130, Cronos=25, Monad=10143, Solana=501 (where applicable). Gateway products (use these path prefixes with this tool): - Portfolio: /portfolio/portfolio/v5.0/... — example path="/portfolio/portfolio/v5.0/general/current_value", query={"addresses":"0x..."}; token metrics path="/portfolio/portfolio/v5.0/tokens/metrics", query={"addresses":"0x...","timerange":"1year"} - Balance: /balance/v1.2/{chainId}/... — example path="/balance/v1.2/1/balances/0x..." - Spot Price: /price/v1.1/{chainId} — example path="/price/v1.1/1", method="POST", body={"tokens":["0x..."],"currency":"USD"} - Token: /token/v1.4/{chainId}/... — example path="/token/v1.4/1/search", query={"query":"USDC"} (prefer v1.4; older v1.2 chain search is deprecated in OpenAPI) - Token Details: /token-details/v1.0/details/{chain}/{tokenAddress} — example path="/token-details/v1.0/details/1/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" - Gas Price: /gas-price/v1.6/{chainId} — example path="/gas-price/v1.6/1" - Swap (Classic): /swap/v6.1/{chainId}/... — example path="/swap/v6.1/1/quote", query={"src":"0x...","dst":"0x...","amount":"..."} (exact query names per OpenAPI) - Orderbook: /orderbook/v4.1/{chainId}/... — example path="/orderbook/v4.1/1/all", query={"page":"1","limit":"10"} - Fusion (Intent): /fusion/orders/v2.0/..., /fusion/quoter/v2.0/..., /fusion/relayer/v2.0/... — example path="/fusion/quoter/v2.0/1/quote/receive" with required query params from spec - Fusion+ (Cross-chain): /fusion-plus/orders/..., /fusion-plus/quoter/..., /fusion-plus/relayer/... — example path="/fusion-plus/quoter/v1.2/quote/receive" with required params; equivalent routes also exist under /cross-chain/orders|quoter|relayer - History: /history/v2.0/history/{address}/events — example path="/history/v2.0/history/0x.../events", query={"chainId":"1","limit":"50","tokenAddress":"0x..."} (optional tokenAddress filters by contract; response shape uses items[].details.txHash — not raw event logs) - Traces: /traces/v1.0/chain/{chainId}/block-trace/{blockNumber}/tx-hash/{txHash} — example path="/traces/v1.0/chain/1/block-trace/18000000/tx-hash/0x..." (not /transaction/{hash}) - NFT: /nft/v2/... — example path="/nft/v2/byaddress", query={"chainIds":"1","address":"0x..."} - Charts: /charts/v1.0/chart/line/{token0}/{token1}/{period}/{chainId} — example path="/charts/v1.0/chart/line/0x.../0x.../24H/1" (period: 24H, 1W, 1M, 1Y, AllTime; not a separate timerange query) - Domains: /domains/... — example path="/domains/v2.0/lookup", query={"name":"vitalik.eth"} - Aqua (strategy analytics): /aqua/v1.0/strategies/... — example path="/aqua/v1.0/strategies/opened", query={"limit":"100"}; maker stats path="/aqua/v1.0/strategies/makers/0x.../stats". Prefer the dedicated "aqua" tool when Unleash flag mcp-service.tool.aqua is enabled; otherwise use product_api for raw HTTP. - Tx Gateway: /tx-gateway/... — example path="/tx-gateway/v1.1/1/broadcast", method="POST", body={...} - Web3 RPC: /web3/{chainId}/... — JSON-RPC over HTTP POST to an EVM (or Solana 501) node; Gateway exposes e.g. 1,10,25,56,100,130,137,143,146,324,501,8453,42161,43114,59144 — confirm availability for your org/plan. Example path="/web3/1", method="POST", body={"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]} Gotchas: Portfolio gateway path repeats "portfolio" (/portfolio/portfolio/v5.0/...) because the gateway strips the first segment. Spot Price returns WEI in native currency unless you set currency. Token list responses are large; prefer search. Token Details does not support native ETH pseudo-address 0xeeee...eeee; use WETH. Balance responses may include zero balances—filter client-side. For limit order flows (build, sign, create, cancel), prefer the "orderbook" tool. For swap execution, prefer the "swap" tool. Use product_api for direct REST access to any endpoint.
search
search
Search 1inch documentation and API reference
swap
swap
[Requires authentication] This tool needs OAuth. If it returns an authentication error, prompt the user to connect/authenticate this MCP server (OAuth), then retry. Swap tokens via 1inch. Supports classic (on-chain), Fusion (intent/gasless), and cross-chain swaps. Omit preferredType and the tool picks a type for you; set preferredType (classic, fusion, crosschain) to choose explicitly. When quoteOnly returns a `recommended` type and that type is available, present **only** that type to the user. Do not mention, compare, or suggest other swap types unless the user explicitly asks to compare alternatives. ERC-20 source tokens may require a one-time approval transaction before the swap can proceed; the approval costs native gas on the source chain even for gasless Fusion/cross-chain swaps. When a response includes an `approval` block, tell the user upfront (approval.estimatedCost holds the estimated cost in native units). Usage modes: 1. **Quote** (quoteOnly=true): Returns only one swap type and its quote. If you pass `preferredType` explicitly (classic, fusion, or crosschain), the response returns that exact type (when a quote for it is available). If `preferredType` is omitted, the tool compares classic, Fusion, and cross-chain internally and picks the best one. The chosen type is echoed as `recommended`. 2. **Execute** (default): Returns data to sign. Response type depends on swap mode: - Classic → {type:"classic", step:"approve"|"swap", tx:{to,data,value}} → sign with eth_sendTransaction, wait for receipt. If step="approve", sign the approve tx first, then call swap again for the actual swap tx. - Fusion → {type:"fusion", orderHash, typedData} → sign typedData with eth_signTypedData_v4, then call this tool again with signedOrder=<signature> and orderHash. - Cross-chain → {type:"crosschain", orderHash, typedData, srcChain, dstChain} → same as Fusion: sign typedData, then submit with signedOrder. 3. **Submit** (signedOrder=<sig>): Submit a previously signed Fusion/cross-chain order. Returns {status:"submitted", orderHash}. Flows: - **Full flow**: quote first (quoteOnly=true), then execute with chosen preferredType, then sign + submit. - **Shortcut**: skip the quote — call directly without quoteOnly. Omit preferredType to let the tool pick a type, or set preferredType explicitly. Set dstChain for cross-chain. Responses that require on-chain transactions link to a guide. Use the product_api tool with path="/web3/{chainId}" to broadcast (see linked guide for body format). With an active WalletConnect session (`walletconnect` action=connect), swap execution is automatic by default: classic approve/swap txs, Fusion/cross-chain sign-and-submit, and native escrow sends are prompted in the user’s wallet — no manual broadcast or separate submit step. Set `execute=false` to receive unsigned payloads instead. Set `execute=true` to require WalletConnect (fails if not connected).
walletconnect
walletconnect
Pair and use an EVM and/or Solana wallet via WalletConnect v2. **No authentication required** — available to every user (including unauthenticated/anonymous). Non-custodial: the server never holds keys and the user approves every signature/transaction in their own wallet. **Pairing proposal** is controlled per request via optional `pairingTarget` on `action: "connect"`: `eth` (default, eip155 only), `solana`, or `both`. Many mobile wallets fail if eip155 and solana are proposed together; prefer `eth` or `solana` unless the user needs both in one session. **Every call must include `action`** (string). **Connect QR (critical for assistants):** On `action: "connect"`, successful responses return **(1) a `resource_link`** to the pairing QR PNG when storage works, then **(2) text JSON** with `pairingQrResourceUri`, `presentation`, `nextSteps`, `url`, optional `mobileDeeplinks`, etc. **Desktop / scan UX:** surface the pairing QR **first**: call MCP `resources/read` on `pairingQrResourceUri` in the **same MCP session** as `connect`, then open the PNG per OS (`open` / `xdg-open` / `start`) or render it inline so the user can scan. **Mobile / no-camera:** follow `nextSteps`; when present, `mobileDeeplinks` lists HTTPS `url` (+ `nativeUrl`) per curated WalletConnect wallet so the user can open pairing without QR (`presentation.mobilePreferred === "deeplinks"`); links overlay WalletConnect Explorer data when Redis cache allows; otherwise curated fallbacks still work. Raw `wc:` (`url` / `walletConnectLinkForUser`) remains fallback if links fail to open in the host. **Avoid calling `connect` again while pairing is still in progress** unless the user must reset—duplicate calls used to invalidate the WalletConnect URI; the server now returns the same in-flight URI when Redis shows pairing pending *and* `pairingTarget` matches, but the wallet may still expire stale links if you wait too long. **Flow:** (1) `connect` as above. (2) User approves in the wallet (EVM only, Solana only, or both). (3) `status` until `kind` is `session` — optional `evm` / `solana` blocks; `address`/`chains` remain legacy EVM when EVM is connected. (4) `sign` / `send_transaction` or swap `execute=true` (swap execute remains EVM unless extended elsewhere). `kind: "pending"` on `status` is success — keep polling. **Actions (exact JSON shapes):** - **connect** — `{ "action": "connect", "sessionTtlDays"?: number, "pairingTarget"?: "eth" | "solana" | "both" }` - **status** — `{ "action": "status" }` (anonymous sessions include a `terms` block showing the connected wallet's 1inch Terms-of-Use acceptance state) - **sign** — EVM: `personal_sign` / `eth_signTypedData_v4`. Solana: `solana_signMessage` / `solana_signTransaction` (see schema fields `params`, `chainId`, `solanaChainId`). - **send_transaction** — EVM: `tx.to`, numeric `tx.chainId`. Solana: string `tx.chainId` (`solana:...`), `tx.serializedTransaction` (base64). Set `tx.namespace` when both WC namespaces are active and the payload is ambiguous. - **accept_terms** — `{ "action": "accept_terms", "address"?: "0x…" }`. One-time per wallet: the user signs the 1inch Terms-of-Use acceptance message in their wallet (personal_sign); the consent is stored durably. Required before anonymous (unauthenticated) write actions such as aqua build_ship/build_swap. Idempotent — safe to call again; already-accepted wallets return immediately without a wallet prompt. - **disconnect** — `{ "action": "disconnect" }` **Anonymous durable sessions:** for unauthenticated callers, `connect` returns a `walletSessionToken`. Store it and pass it back as `walletSessionToken` on later `status` / `sign` / `send_transaction` / `accept_terms` / `disconnect` so the wallet stays connected after the MCP session rotates; omit it and the session is scoped to the current MCP session only. Authenticated callers ignore the token (their WC session is scoped by org/app). Non-custodial relay; no authentication required.

Endpoints

URLTransportStateLatencyChecked
https://api.1inch.com/mcp/protocol streamable-http answering 94 ms 13 min ago

1inch MCP — questions

Answers built from our own checks of this server.

What can 1inch MCP do?
It exposes 9 tools, read directly from the server on our last check. Among them: aqua, debug, get_example, list_examples, orderbook, product_api and 3 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
Is 1inch MCP working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 91 checks got a reply (100.0%), average response time 95 ms. The bar chart above shows every period we have measured.
How do I connect 1inch MCP?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does 1inch MCP need an API key?
No. 1inch MCP completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 9 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is 1inch MCP?
It answers our handshake in 95 ms on average, which is faster than 85% of all working MCP servers we measure. That puts it in the quick quarter of the ecosystem. The comparison comes from our own checks across the whole registry, every 15 minutes.
Is 1inch MCP open source?
Yes — it is published under the MIT licence and 2 stars on GitHub. The source link is on this page, so you can read exactly what it does with your data before you connect it.