05Agents
The agent reads.
01Agent
› openpons_get_quote({ side: "buy" })Claude · Cursor · your runtime02OpenPons
validate · registry · quoteverified Pons V2 only03Prepare
PREPAREopenpons_prepare_buy → { to, data, value }unsigned · expires 30s04Simulate
PREPAREeth_call → simulation.okfrom the user's address⚿ Agent never gets the private key
05Signer
SIGNwallet.eth_sendTransactionuser confirms in wallet06Robinhood Chain
CHAINreceipt.status = successchainId 4663Read9 tools · safe to call repeatedly
› openpons_search_tokensList new / graduated Pons tokens, filter by name, symbol or CA› openpons_get_tokenCurve state, price & market cap in ETH, creator, socials› openpons_get_tradesRecent on-chain buys and sells› openpons_get_quoteOn-chain buy/sell quote with min-out after slippage- LIVE
› openpons_get_walletETH balance, nonce, account type › openpons_get_portfolioPons holdings valued in ETH where derivable› openpons_get_launchesTokens launched by an address, creator tax settings› openpons_get_creator_feesClaimable creator fees in the Pons fee escrow- LIVE
› openpons_get_transactionPending / success / reverted + explorer link
Prepare5 tools · unsigned · simulated · 30s
› openpons_prepare_buyUnsigned buy tx with quote, min-out and simulation› openpons_prepare_sellUnsigned sell tx with quote, min-out and simulation› openpons_prepare_launchUnsigned launch tx via the verified Pons factory / router› openpons_prepare_claimUnsigned escrow claim() — pays the signer only› openpons_prepare_sweepUnsigned curve sweepFees() for the creator fee recipient
Every write tool
guarantees.
enforced in code · src/lib/pons/prepare.ts01
chainId 4663
Every prepared tx targets Robinhood Chain only.
02
Verified target
Factory, router, escrow, or the curve the factory registered.
03
Registry check
Look-alike names rejected; address is the identity.
04
Min-out
Slippage enforced by the contract, not by trust.
05
Simulation
eth_call from the user's address; failures returned verbatim.
06
Exact approvals
approve(curve, exactAmount) — never unlimited.
07
30s expiry
Stale transactions must be re-prepared.
08
No execution
OpenPons never calls eth_sendTransaction for anyone.
What users ask → what agents call
“Find newly launched Pons tokens.”
openpons_search_tokens { sort: "new" }“What's trading right now?”
openpons_search_tokens { sort: "active" }“Show me this token.”
openpons_get_token → openpons_get_trades“Get a quote for 0.02 ETH.”
openpons_get_quote { side: "buy", amount: "0.02" }“Prepare a buy.”
openpons_prepare_buy → unsigned → user signs“Sell half my position.”
openpons_get_portfolio → openpons_prepare_sell“Prepare a token launch.”
openpons_prepare_launch → predicted address“Show my creator fees.”
openpons_get_launches → openpons_get_creator_fees“Claim my fees.”
openpons_prepare_claim → unsigned claim()Autonomy, on your terms
Want an agent to execute?
Run your own signer with a spending cap, outside OpenPons. Never connect an agent to your main browser wallet.
your-agent.ts
// Autonomous execution = a signer YOU run, with YOUR caps.
// OpenPons never holds this key — it only prepares.
import { OpenPons, toEip1193Params } from "@openpons/sdk";
const openpons = new OpenPons({ baseUrl: "https://openpons.xyz/api/v1" });
const tx = await openpons.trade.prepareBuy({ token, amount: "0.005", from: signer.address });
if (!tx.simulation.ok) throw new Error(tx.simulation.error!);
if (BigInt(tx.value) > MAX_SPEND_WEI) throw new Error("over budget");
await signer.sendTransaction(toEip1193Params(tx)); // separate hot wallet