05Agents

The agent reads.
You hold the key.

01Agent
READ
› openpons_get_quote({ side: "buy" })Claude · Cursor · your runtime
OpenPons
02OpenPons
READ
validate · registry · quoteverified Pons V2 only
03Prepare
PREPARE
openpons_prepare_buy → { to, data, value }unsigned · expires 30s
04Simulate
PREPARE
eth_call → simulation.okfrom the user's address
⚿ Agent never gets the private key
05Signer
SIGN
wallet.eth_sendTransactionuser confirms in wallet
06Robinhood Chain
CHAIN
receipt.status = successchainId 4663
Read9 tools · safe to call repeatedly
  • › openpons_search_tokens
    List new / graduated Pons tokens, filter by name, symbol or CA
    BETA
  • › openpons_get_token
    Curve state, price & market cap in ETH, creator, socials
    BETA
  • › openpons_get_trades
    Recent on-chain buys and sells
    BETA
  • › openpons_get_quote
    On-chain buy/sell quote with min-out after slippage
    BETA
  • › openpons_get_wallet
    ETH balance, nonce, account type
    LIVE
  • › openpons_get_portfolio
    Pons holdings valued in ETH where derivable
    BETA
  • › openpons_get_launches
    Tokens launched by an address, creator tax settings
    BETA
  • › openpons_get_creator_fees
    Claimable creator fees in the Pons fee escrow
    BETA
  • › openpons_get_transaction
    Pending / success / reverted + explorer link
    LIVE
Prepare5 tools · unsigned · simulated · 30s
  • › openpons_prepare_buy
    Unsigned buy tx with quote, min-out and simulation
    BETA
  • › openpons_prepare_sell
    Unsigned sell tx with quote, min-out and simulation
    BETA
  • › openpons_prepare_launch
    Unsigned launch tx via the verified Pons factory / router
    BETA
  • › openpons_prepare_claim
    Unsigned escrow claim() — pays the signer only
    BETA
  • › openpons_prepare_sweep
    Unsigned curve sweepFees() for the creator fee recipient
    BETA

Every write tool
guarantees.

enforced in code · src/lib/pons/prepare.ts
01
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