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 controll...
This record as markdown: /tools/com-1inch-business-mcp/walletconnect.md
What walletconnect does on 1inch MCP
AI agents call walletconnect to permanently remove resources in 1inch MCP, typically in cleanup and lifecycle workflows. It does its job in a single call, and there is no undo.
| Parameter | Type | Required | Description |
|---|---|---|---|
tx | object | — | Required when action is "send_transaction". EVM or Solana shape — see `tx` field descriptions. Omit for connect, status, sign, disconnect. |
action | string | Yes | Required. One of: connect (start pairing), status (session info), sign (EVM + Solana WC methods), send_transaction (EVM eth_sendTransaction or Solana solana_sig |
method | string | — | Required when action is "sign". EVM: personal_sign | eth_signTypedData_v4. Solana: solana_signMessage | solana_signTransaction. Omit for connect, status, send_t |
params | array | — | Required when action is "sign": exactly two items. personal_sign: [message, 0xAddress]. eth_signTypedData_v4: [0xSigner, typedDataJsonString]. solana_signMessag |
address | string | — | Optional; only with action "accept_terms". EVM address that signs the Terms-of-Use acceptance; must belong to the active WalletConnect session. When omitted, th |
chainId | integer | — | Optional; only when action is "sign" and method is personal_sign (EVM numeric chain id). Must be omitted for eth_signTypedData_v4, Solana methods, send_transact |
pairingTarget | string | — | Optional; only with action "connect". What to advertise in the WalletConnect proposal: "eth" (eip155 only, default), "solana" only, or "both". Many mobile walle |
solanaChainId | string | — | Optional; only when action is "sign" and method is solana_signMessage or solana_signTransaction. CAIP-2 string (e.g. solana:5eykt4…). When omitted, the server u |
sessionTtlDays | integer | — | Optional; only with action "connect". How long to persist this WalletConnect client state in Redis (days). Server clamps to [1, WALLETCONNECT_SESSION_TTL_DAYS_M |
walletSessionToken | string | — | Optional durable token for ANONYMOUS (unauthenticated) sessions. `connect` mints a fresh token; store it and pass it back on status/sign/send_transaction/accept |
Parameters from the server's own tool schema.
Why walletconnect is rated Critical
An AI agent that decides to call walletconnect doesn't hesitate, doesn't double-check, and doesn't stop at one. Whatever it removes from 1inch MCP is gone. There is no undo for destructive operations.
Risk signalsHigh parameter count (17 properties) · Bulk/mass operation — affects multiple targets
Attacks that exploit this kind of access
The rule that runs walletconnect safely
PolicyLayer is an MCP gateway: it sits between your AI agents and 1inch MCP, and checks every tool call against a rule you set before the call runs. Nothing changes on the server itself. For walletconnect, this is the rule to start with:
walletconnect is removed from the agent's tool list entirely, so the agent never calls it. The rest of the server keeps working.
The button opens the PolicyLayer dashboard: create your workspace, connect 1inch MCP, apply this rule, and every walletconnect call is checked against it from then on.
Questions about 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) an MCP type: "image" PNG of the pairing QR (render this even if the host has no resources/read), then (2) optional resource_link, then (3) text JSON with pairingQrResourceUri, presentation, nextSteps, url, optional mobileDeeplinks, etc. Desktop / scan UX: show the image content block first. Mobile / no-camera: follow nextSteps; when present, mobileDeeplinks lists HTTPS url (+ nativeUrl) per curated WalletConnect wallet. Raw wc: (url / walletConnectLinkForUser) remains fallback. Avoid calling connect again while pairing is still in progress unless the user must reset — pass walletSessionToken to resume the same pairing after MCP session rotation. 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", "walletSessionToken"?: string } - 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…" }. When the user has not accepted yet: write to the user that they must sign the 1inch Terms of Use in their wallet (one-time, gas-free personal_sign), then immediately call this action in the same turn so the signature prompt appears. You trigger the signing — do not only instruct them to sign. Required before anonymous aqua create_position / close_position. Idempotent — already-accepted wallets return immediately without a prompt. - disconnect — { "action": "disconnect" } Anonymous durable sessions: for unauthenticated callers, pairing connect (QR) returns a walletSessionToken. Store it and pass it back as walletSessionToken on later status / sign / send_transaction / accept_terms / disconnect and on a later connect to resume the same pairing after MCP session rotation. A tokenless connect that resumes an already-approved session does not mint a new token — within this MCP session, status / sign still work via anon:{sessionId}. Authenticated callers ignore the token (their WC session is scoped by org/app). Non-custodial relay; no authentication required. It is categorised as a Destructive tool in the 1inch MCP MCP Server, which means it can permanently delete or destroy data. Block by default and require explicit approval.
walletconnect accepts 10 parameters: tx, action, method, params, address, chainId, pairingTarget, solanaChainId, sessionTtlDays, walletSessionToken. Required: action. The full parameter table on this page comes from the server's own tool schema.
Register the 1inch MCP server in PolicyLayer and add a rule for walletconnect: allow, deny, rate-limit, or require approval. Point your MCP client at the PolicyLayer proxy URL and the rule is enforced on every call, before it reaches 1inch MCP. Nothing to install.
walletconnect is a Destructive tool with critical risk. Critical-risk tools should be blocked by default and only enabled with explicit human approval.
Yes. Add a rate_limit block to the walletconnect rule in your PolicyLayer policy. For example, setting max: 10 and window: 60 limits the tool to 10 calls per minute. Rate limits are tracked per agent session and reset automatically.
Set action: deny in the PolicyLayer policy for walletconnect. The AI agent will receive a policy violation error and cannot call the tool. You can also include a reason field to explain why the tool is blocked.
walletconnect is provided by the 1inch MCP server (https://api.1inch.com/mcp/protocol). PolicyLayer sits as a proxy in front of this server to enforce policies before tool calls reach the server.
More on 1inch, and thousands of servers like it.
Across the catalogue