Prerequisites
- The Sauce MCP server in your agent (The Sauce MCP server).
- A supported chain: Ethereum, Base, Arc or Solana.
- The release’s engine deployed on that chain.
sauce pot --chain <chain> --owner <address>reports whether it is (sauce_potin the agent).
Which wallet
Sauce’s own wallets, made with
sauce wallet or by a local server, keep the key on your machine, encrypted under a password the server holds, and no one approves each send. Use them for experiments with small amounts (Wallets over stdio).
Add the wallet’s server
Add the wallet’s server beside Sauce’s. Each opens your browser to sign in the first time the agent uses it. Coinbase Wallet MCP is a server on the web:{ "type": "http", "url": … } under servers. Gemini CLI takes it as { "httpUrl": … } under mcpServers.
Phantom MCP runs on your machine:
What Sauce hands over
sauce_tx, sauce_pot and sauce_actions (given a Pot) return their transactions in the form these wallets take:
- Each EVM transaction,
{ chainId, to, data, value, gas }withvalueandgasas hex quantities, is what Phantom’sevm_sendtakes. Labels Sauce adds, such aswhat, are ignored by the wallet. sendCallsholds every transaction in order, as Coinbase’ssend_callstakes it: one batch, approved once, that runs all together or not at all. It is present on Base and Ethereum, the chains Coinbase Wallet MCP serves.- On Solana, each
transactionis a base64 transaction, which is what Phantom’ssolana_sendtakes.
sauce_tx result is for a Pot on Base that has no code yet, with data shortened:
gas, and a note says to fund the Pot and build again. Fund it once the deployment has landed, or pass fund so the plan puts a token’s transfer after the deployment and before the cook (Funding a Pot). ETH:<amount> adds to the cook’s value, with no separate transfer. The plan has that deployment only when the call reads the chain: a call that reaches no endpoint (How a tool reaches a chain) checks no deployment and plans no deployment step, so deploy the Pot first. Deployments lists the Kitchen’s address.
On Base or Ethereum, with Coinbase
1
Get the address
The agent asks the wallet for your address.
2
Build for it
The agent calls
sauce_tx with owner set to that address. To move tokens from the wallet into the Pot before the program runs, it adds fund, such as ["USDC:100"].3
Simulate
The agent calls
sauce_simulate on the same program and shows you what would move.4
Send the batch
The agent calls
send_calls with sendCalls. You open the link it returns, check, and approve in your wallet.5
Wait for it
The agent calls
get_request_status until the wallet reports that the batch landed.sauce_pot reads what the Pot holds.
On Solana, with Phantom
1
Get the address
The agent asks the wallet for its Solana address. You send that address what the program spends.
2
Build for it
The agent calls
sauce_tx with chain: "solana" and that address as owner.3
Preview
The agent calls
solana_send with the transaction. The first call only previews, and the agent shows you what would move.4
Send
When you agree, the agent calls
solana_send again with confirmed: true. Phantom signs, sends and returns the signature.5
Continue a plan
If the result had a
cursor, the cook needs more than one transaction. The agent passes the cursor and the signatures to sauce_send, which returns the next step, until next.step is done.sauce_send with the cursor alone, or the tool that built it.
On Base or Ethereum, with Phantom
The agent callsevm_send with each transaction as it is, in order, and waits for each to land before sending the next. As on Solana, the first call previews and confirmed: true sends.
With any other signer
A hardware wallet or a key management service signs too, with the key never near the agent. The signer returns the signed bytes, andsauce_send broadcasts them:
sauce_send simulates each transaction as signed, refuses one that would fail, sends them in order, and stops at the first that does not succeed (sauce_send).
Order and gas
- A new Pot, then its cook. While the Pot has no code, the deployment comes first, marked
deploysPot. Any account may send it; only the owner may send the cook. - Gas. The cook’s
gasis estimated as if the deployment had landed, with 30% room. A signer’s own estimate, taken while the Pot has no code, is far too low. - A cook that would revert. A cook that would revert after the deployment, such as one on a Pot not funded yet, has no
gas, and a note says why. Send the deployment, fund the deployed Pot and callsauce_txagain, or call it withfund, which plans a token’s transfer after the deployment when the call reads the chain.ETH:<amount>adds to the cook’s value, with no separate transfer. A call that reaches no endpoint checks no deployment and plans no deployment step, so deploy the Pot first. - On Arc, sign each transaction with a
maxFeePerGas(orgasPrice) of at least 20 gwei, the chain’s minimum base fee.sauce_sendrefuses a transaction signed with a lower fee cap and sends nothing. - On Solana, each transaction is signed by its
feePayer, the owner the call named. Its blockhash expires in about a minute, and a transaction signed later is refused.
A cook someone else sends
A signed cook splits the cook in two: the Pot’s owner signs it as EIP-712 typed data, and another account sends it and pays the gas. On Base, Ethereum or Arc,sauce_signed_cook builds it and signs nothing:
nonce, deadline and maxExecutionFee the first returned, and leave within out, since it is refused beside deadline: the call then checks the signature over the same cook, and a signature over other inputs is refused. cook is an ordinary transaction for whichever wallet sends it, and a signer’s signed bytes go to sauce_send. The Pot pays the Kitchen’s fee from its own balance, so fund the deployed Pot with native coin before the cook is sent, or sign a value that covers the fee. sauce_signed_cook lists its inputs; sauce sign is the same from a terminal.
A Solana cook of several transactions
Some Solana cooks need more than one transaction:- a program too large for one transaction, staged in a Kitchen code buffer;
- accounts past one transaction’s list, through a lookup table;
- a Pot or a token account to create first.
sauce_tx then returns a plan. The steps are the setup, then the cook, then closing the code buffer.
sauce_txreturns the first step and acursor.- The owner’s signer signs each transaction of the step.
sauce_sendwith the signed transactions and thecursorsends them. It returns the next step asnext, built fresh from what the cluster shows.- Repeat with
next.cursoruntilnext.stepisdone.
- A step with nothing to sign says why in
next.wait. Callsauce_sendwith the cursor alone again. - A cook its simulation says would fail is not built.
next.failssays why, with the simulation’slogs. - Giving up.
close: truegives up on the cook and closes the code buffer. - Leftover rent.
sauce_reclaimlists the code buffers and lookup tables left open and returns the transactions that close them.
From the command line
sauce tx prints the same JSON, so a script or an agent with a shell can pass it on the same way:
sauce send then broadcasts them (sauce send).
Next steps
- Wallets over stdio: wallets a local server keeps for experiments, under a policy.
- MCP tools: every tool and what it returns.
- Cook: why a cook runs on your Pot, and where its results end up.
