The challenge
An agent managing on-chain yield has to solve three problems at once, and most stacks only solve one:- Deciding requires comparable data across protocols and chains — not twelve different APIs with twelve different definitions of “APY”.
- Acting requires building correct calldata for a protocol the agent has never seen, and being sure it works before a key touches it.
- Doing both safely requires that the agent never hold the key at all.
Start with the MCP
The fastest way to give an agent all of this is the 1Tx MCP server. One line connects it to Claude, ChatGPT, Cursor, VS Code or Codex; the user signs in once and gets a 1Tx non-custodial wallet, and every action the agent builds waits for their approval.Getting started
Every client, sign-in, and prompts to try
Tools
Discover, act and track
What 1Tx gives an agent
One vocabulary for every market
Every lending position is an instrument id. The agent compares Aave on Base against a Morpho vault on Arbitrum using the same fields, and enters either one with the same call.Yield that survives scrutiny
Raw APY rewards whatever is being subsidised this week. The catalogue also exposes the coefficient of variation of an instrument’s APY, how many days of history it has, how much of the yield is rewards rather than interest, and a derived tier — so an agent can rank on durability instead of on a headline number.A bundle it cannot get wrong
The agent asks for calls; the API simulates them against live state and either returns a measured result or refuses. An agent’s failure mode becomes “no action taken, here is why” rather than a transaction it reasoned itself into.No custody, anywhere
The agent produces a batch. The user’s own smart account signs it, pays gas in USDC from its own balance, and receives the yield tokens. There is no session key to scope, no wallet of ours to trust, and no 1Tx contract in the path.Decide
/instruments, /metrics, /yield-index, /portfolios/analyzeAct
/instruments/:id/calldata, /bridge/calldata, /loops/:id/calldataVerify
Every bundle simulated at a pinned block before it is returned
Sign elsewhere
The user’s ERC-4337 account, the user’s bundler, the user’s paymaster
A rebalance, end to end
Patterns this supports
Rules worth building in
Never replay a bundle
Never replay a bundle
A bundle is pinned to a quote block, and a swap-bearing one expires outright. Rebuild before
signing if anything has waited — an agent’s own deliberation time counts.
Treat a refusal as information
Treat a refusal as information
400 means the API simulated the thing and it did not work. Retrying it unchanged burns rate
limit and proves nothing. 503 is the only status worth a blind retry.Check requires yourself
Check requires yourself
Bundles are built with overridden balances so they can be prepared for an account that is not
funded yet.
assumedBalances: true is the API telling you that funding is your check to make.Leave the gas reserve alone
Leave the gas reserve alone
On a smart account paying gas in USDC, a deposit sized to the entire balance fails. Size to
balance minus the paymaster’s maximum charge, and keep that reserve on every chain you execute on.
Next steps
Integration Overview
The agent-driven model in context
API Cookbook
Rebalance and bridge recipes
Execution Model
Accounts, gas and cross-chain rules
Portfolio API
Score a book before moving it