Getting started
How it works
Every ROXI action follows the same path: the agent prepares, your wallet authorizes, the chain settles.
Four roles#
| Role | What it does | Owns |
|---|---|---|
| Agent | Understands your request and decides which tools to call. | Reasoning |
| MCP servers | Look up data, encode calls and compile code. They never sign. | Preparation |
| Your wallet | Shows each transaction and signs it only if you approve. | Authorization |
| The chain | Executes the signed transaction and records the result. | Settlement |
Prepare, then sign#
Tools that build something onchain don't send it. They return a small instruction saying what to do next and with what data. For example, prepare-transfer from erc20-mcp returns:
{
"prepareForAction": "send-transaction",
"address": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238",
"data": "0xa9059cbb000000000000000000000000…"
}prepareForAction names the metamask-mcp tool that finishes the job, and the agent passes address to it as to. There are three kinds:
call— a read. The agent runscall, which needs no signature, then decodes the result with the matchingresolve-*tool.send-transaction— a state change, such as a transfer or approval. MetaMask asks you to confirm it.deploy-contract— a new contract. MetaMask asks you to confirm the deployment.
One request, end to end#
Here's what happens when you ask to send 50 USDC on Sepolia:
you Send 50 USDC to 0xA11c…e5 on Sepolia
agent → metamask-mcp get-account # is a wallet connected?
agent → metamask-mcp switch-chain # chainId 11155111 (you approve)
agent → metamask-mcp get-token # USDC has 6 decimals
agent → erc20-mcp prepare-transfer # encodes transfer(to, 50 USDC)
agent → metamask-mcp send-transaction # MetaMask shows it; you sign
agent → metamask-mcp wait-for-transaction-receipt
agent Sent. Transaction 0x9f2c… confirmed in block 7,214,903.The agent never sees a private key at any step. If you reject the prompt in MetaMask, nothing is sent and the agent is told the request was declined.
Read-only versus signing tools#
Most tools only read: balances, blocks, receipts, ENS names, contract views, chain lists and compilation. They run without asking you anything. Only four metamask-mcp tools produce a signature: send-transaction, write-contract, deploy-contract and sign-message. switch-chain also asks for your approval, but signs nothing.