MetaMask Agent Wallet
Your MetaMask Agent Wallet on EVM: balances, swaps and bridges, transfers, perps, yield vaults, and prediction markets.
The MetaMask Agent Wallet node runs your own MetaMask wallet inside a workflow. It is the EVM counterpart to Jupiter: one node covering market data, swaps and cross-chain bridges, transfers and raw transactions, signing, Hyperliquid perpetual futures, DeFi yield vaults, and Polymarket prediction markets, across 44 EVM chains.
Your private keys never touch Solaris AI. They stay inside MetaMask's secure enclave, and every action Solaris AI takes is a request that MetaMask evaluates against your wallet's own policy before it signs anything.
Quick start
- Open Connections, choose MetaMask Agent Wallet, and click Continue with MetaMask. You sign in on MetaMask's own page (Google, email, or the MetaMask app) and paste back the token it shows you. It works on a phone; there is nothing to install.
- Add a MetaMask Agent Wallet node and pick Wallet & Balances. Run it. You get your address and USD balances across every supported chain, with no funding required.
- Pick Swap Quote, set From Token
ETH, To TokenUSDC, Amount0.1, and Source ChainBase. Run it to see the exact output, fees, and route you would get, still without spending anything. - When you want the swap to actually happen, switch the operation to Execute Swap and set a Minimum Output so the workflow refuses a bad fill.
Guard mode and Beast mode
This is the single most important thing to understand about the node, because it changes what your workflow gets back.
Your Agent Wallet runs in one of two trading modes, which you choose in MetaMask:
- Guard mode: every action that signs something waits for your approval on your bound device. The workflow does not get a transaction hash. It gets a polling id and
awaitingApproval: true, and the job stays alive inside MetaMask until you approve or it expires. - Beast mode: actions are signed autonomously within your wallet's policy, and the workflow normally gets a transaction hash inside the same run.
Use the Trading Mode operation to read which mode a wallet is in. For workflows that must confirm settlement in Guard mode, follow the write with a Wallet Request Status node using the polling id:
Execute Swap → { pollingId, awaitingApproval: true }
↓
Wallet Request Status (pollingId) → { status: "CONFIRMED", done: true, txHash }Operations whose underlying call accepts a deadline also have a Wait (seconds) control. It bounds how long the node waits before handing back the polling id: 60 seconds by default, 180 for multi-step operations like swaps and vault deposits, 420 maximum. A timeout is never an error: the job keeps running inside MetaMask and stays pollable.
Setting it to 0 returns immediately with the polling id. The multi-step operations are the exception: a swap drives approve then trade to completion inside one call, so there is nothing to return early from, and a 0 there is read as the default rather than an instruction to abort a transaction that may already be in flight.
Operations the SDK exposes with no deadline hook (the Hyperliquid order actions and most prediction-market writes) show only Dry Run, deliberately. A wait box that could not be enforced would be a false promise.
Dry run
Every operation that moves funds accepts Dry Run. It is a real preview, not a stub:
- Execute Swap fetches a live quote and reports exactly what would execute, then stops.
- Open Perps Position prices the order through Hyperliquid and returns entry price, notional, fee, and liquidation price.
- Perps Deposit and Perps Withdraw resolve the real bridge route and its constraints.
- Place Prediction Order quotes the order against the live Polymarket book.
Build the whole workflow in dry run, read the numbers, then turn it off.
Swaps and bridges
Swap Quote prices a trade without executing. Set a different Destination Chain and the same operation becomes a cross-chain bridge quote: swap and bridge are one surface upstream.
Two details matter when you read a quote:
fromAmountis the total debited from your wallet. On gasless quotes, where MetaMask covers network fees out of your input, the swap leg alone is smaller and appears separately asfromAmountSwapLeg.priceImpactis a fraction, not a percent.0.0006means 0.06%. Multiply by 100 to display it.
Execute Swap quotes and executes in one step, deliberately: bridge quotes go stale in minutes, so quoting in one node and executing in a later one would trade at a different price than the one you reviewed. Instead, the guards run against the fresh quote right before submission:
- Minimum Output aborts if the expected output falls below your floor.
- Max Price Impact aborts above your percentage limit (here you write a percent, e.g.
1for 1%).
Both fail closed. If a quote does not report the number a guard needs (price impact is optional upstream), the swap is blocked rather than executed unchecked, because a guard that silently skips itself is worse than no guard at all.
A blocked swap is a successful run with blocked: true and a reason, so a Condition node can branch on it. Nothing is submitted.
For cross-chain swaps, settlement continues after the source transaction confirms. Swap Status tracks it by quoteId, including the destination receive leg. Quotes executed by your workspace stay trackable for 24 hours.
Transfers, transactions, and signing
- Transfer Tokens sends native or ERC-20 tokens. Leave Token blank for the chain's native asset.
- Send Transaction submits a raw transaction:
to,valuein wei, and calldata. - Sign Message signs plaintext.
- Sign Typed Data signs an EIP-712 payload. Pass the whole object (
domain,types,primaryType,message) as JSON. Some protocols pin a domain chain id different from the wallet's chain, for example Hyperliquid signs with 1337 while the wallet lives on Arbitrum. Allow Domain Chain Mismatch covers that case.
Decode Calldata turns raw calldata into a readable function name and parameters, which is useful for reviewing a transaction before signing it.
Perpetual futures (Hyperliquid)
Perps Markets is public: mark price, funding rate, open interest, and max leverage, with no account needed.
The account operations trade through your Agent Wallet:
- Perps Order Quote previews an order. Open Perps Position places it. Size is in contracts, not dollars, so
0.01on BTC is 0.01 BTC of exposure. - Close Perps Position closes one symbol or, with Close All, every open position. Leave Size blank to close a position fully.
- Modify Perps Position changes leverage, take-profit, or stop-loss on an open position.
- Perps Positions, Perps Open Orders, and Perps Balance read your account. Cancel Perps Order takes an order id from Perps Open Orders.
- Perps Deposit, Perps Withdraw, and Move Perps Collateral handle USDC funding, including the spot-to-perp transfer Hyperliquid requires.
Order results carry the venue's own status (filled, resting, submitted, rejected). A rejected order fails the node so a workflow does not treat it as a fill.
Yield vaults
Yield Vaults lists ERC-4626 vaults across EVM chains (Aave, Morpho, and others) with live APY, 7-day and 30-day APY, and TVL. Filter by asset, chain, protocol, or minimum TVL, and sort by APY or TVL.
Supply to Vault and Withdraw from Vault take a Vault field that accepts three forms: an underlying symbol (USDC), an underlying token address, or the vault address itself.
A vault address is unambiguous and always resolves. The other two name an asset, not a venue, and several protocols typically run a vault for the same asset on the same chain. When that happens the node stops and lists the matching protocols rather than picking one for you, because guessing would move your funds into a protocol you never chose. Add Protocol (e.g. aave) to disambiguate, or pass the vault address. If nothing matches at all, the node returns found: false with a message so the workflow can fall back.
Withdrawals convert your requested amount into vault shares through the vault's current exchange rate. A vault's share price rises as yield accrues, so 100 USDC is not 100 shares. Leave Amount blank to withdraw the entire position.
Prediction markets (Polymarket)
Browsing is public. Prediction Markets and Search Prediction Markets return markets whose clobTokenIds are the outcome token ids you trade with, in the same order as outcomes. Prediction Market returns one market in full, and Prediction Order Book shows live depth for an outcome.
Trading requires a one-time setup per wallet: Set Up Prediction Trading deploys your deposit wallet, mints trading credentials, and sets approvals. Until that runs, every account-scoped operation returns setupRequired: true with an explanation instead of failing, so you find out early rather than mid-strategy. Check readiness any time with Prediction Account Status.
When placing an order, two conventions catch people out:
- Price is a probability between 0 and 1. A 62% chance is
0.62, not62. The node rejects out-of-range prices with that message rather than sending them. - Shares is a share count, not a dollar amount. A winning share pays 1.00.
The CLOB reports a refusal in its response body rather than by failing the request, so the node reads it: an order the venue rejects (insufficient balance, market closed) and a cancel it refuses (the order already filled) both fail the node, with the venue's reason. A workflow that cancels before re-quoting will not proceed on a stale assumption.
Fund Prediction Wallet and Withdraw from Prediction Wallet move funds in and out. Redeemable Winnings lists positions that can be cashed out, and Redeem Winnings settles them.
Market data
The node also exposes MetaMask's own price and token APIs, so you can build a strategy without a second data credential:
- Token Prices takes
native, ERC-20 addresses, or full CAIP-19 asset ids, with optional market data. - Historical Prices returns price, market cap, and volume series for a token over a period.
- Search Tokens, Trending Tokens, Top Gainers, and Popular Tokens cover discovery.
- Transaction History and Transaction Lookup read your wallet's activity, and Supported Chains lists every chain the wallet can sign on.
Chain coverage
Balance, history, and chain reads report a chainCoverage field. registry means every supported chain was queried. fallback means MetaMask's network registry was unreachable and a curated subset was used, so totals may be partial. That distinction lets a workflow tell a real zero from an incomplete answer instead of acting on a missing balance.
Solana
The Agent Wallet is EVM-only today. For Solana, use Jupiter alongside it: a workflow can read a signal on Solana and act on EVM, or the reverse, in the same run.
Marketplace clones
When you publish a workflow using this node, the strategy travels and the account does not. Tokens, chains, amounts, slippage, guards, order terms, vault targets, and market ids are all kept so a buyer's clone works. Deliberately stripped: your credential, and any field naming where value lands, specifically transfer recipients, raw transaction targets, and withdrawal destinations. A buyer fills those in themselves.
