06Developers

Build on Pons,
agent-first.

Interfaces
base · https://openpons.xyz/api/v1
self-host · http://localhost:4663/api/v1
auth · none during beta
Any MCP client · stdio · build first: npm run build:mcp
{
  "mcpServers": {
    "openpons": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/openpons/packages/mcp/dist/index.js"],
      "env": {
        "OPENPONS_API_URL": "https://openpons.xyz/api/v1"
      }
    }
  }
}
02

REST API

Reference →
GET/healthLIVE
GET/contractsLIVE
GET/tokens?sort=new|active|graduated&q=&limit=&cursor=BETA
GET/tokens/:addressBETA
GET/tokens/:address/trades?limit=BETA
GET/quote?token=&side=buy|sell&amount=&slippageBps=&recipient=BETA
GET/launch/configBETA
GET/wallet/:addressLIVE
GET/wallet/:address/balance?token=LIVE
GET/wallet/:address/portfolio?depth=BETA
GET/wallet/:address/launchesBETA
GET/wallet/:address/feesBETA
GET/transactions/:hashLIVE
POST/prepare/buyBETA
POST/prepare/sellBETA
POST/prepare/launchBETA
POST/prepare/claimBETA
POST/prepare/sweepBETA
envelope
{ "ok": true,  "data": { … }, "meta": { "chainId": 4663, "version": "v1" } }
{ "ok": false, "error": { "code": "NOT_A_PONS_TOKEN", "message": "…" } }
PreparedTransaction
{
  "chainId": 4663,
  "from": "0xYourWallet",
  "to": "0x…",                 // verified Pons contract
  "data": "0x59a87bc1…",
  "value": "20000000000000000",
  "gas": "123885",
  "function": "buy(uint256 quoteIn, uint256 minTokensOut, address recipient) payable",
  "simulation": { "ok": true, "error": null },
  "quote": { "expectedOut": "…", "minOut": "…", "slippageBps": 100 },
  "expiresAt": "2026-…",       // 30s
  "requires": []               // e.g. approve(curve, exact) before a sell
}
Hosted API keys — designed, not active. Scopes will be read / prepare only; there will never be a signing scope.PREVIEW
03

TypeScript SDK

BETA

Zero dependencies. Workspace package at packages/sdk (not on npm yet). Signing stays with you.

openpons.tokens.search({ sort, q, limit })list / search
openpons.tokens.get(address)token detail
openpons.tokens.trades(address)curve trades
openpons.quote({ token, side, amount })on-chain quote
openpons.wallet.get(address)ETH, nonce
openpons.portfolio.get(address)holdings in ETH
openpons.launches.byCreator(address)launches + fees
openpons.fees.get(address)claimable
openpons.trade.prepareBuy({ … })unsigned buy
openpons.trade.prepareSell({ … })approve? + sell
openpons.launch.prepare({ … })unsigned launch
openpons.fees.prepareClaim({ from })unsigned claim
openpons.toEip1193Params(tx)guards → wallet params
openpons_search_tokensopenpons_get_tokenopenpons_get_tradesopenpons_get_quoteopenpons_get_walletopenpons_get_portfolioopenpons_get_launchesopenpons_get_creator_feesopenpons_get_transactionopenpons_prepare_buyopenpons_prepare_sellopenpons_prepare_launchopenpons_prepare_claimopenpons_prepare_sweep
05

Chain & contracts

Research →
networkRobinhood Chain
chainId4663 · 0x1237
gasETH
rpchttps://rpc.mainnet.chain.robinhood.com
explorerhttps://robinhoodchain.blockscout.com
block time≈0.1s measured
getLogs cap10,000 logs
Pons V2 Launch FactorySourcify exact match · selectors in bytecode
0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e
Pons V2 Launch & Buy routerSourcify exact match · selectors in bytecode
0xe33E9E479dF8802cb0866d5d05258bEc4cF62948
Pons V2 Fee EscrowSourcify match · claim simulated
0xd3AFEB2a57f70eF218Aa82451c51B2fb0416Ac9e
Pons V2 Launch DeployerSourcify exact match
0x3711ceA4feaDE896C913C68F01Eda97Cb06D1A42
Pons V2 Meme HookSourcify match
0xE5e702641Ea86F4ae6cC3cDaeD2B886f976Be044
TokenLaunched0x8d4aad4953d0ca70…
LaunchSwept0xcdb72f157fd36667…
PoolGraduated0x0a44ef75df69c534…
CurveBuy0xec36bf571f136799…
CurveSell0x8113d738abdcb6b3…
Transfer0xddf252ad1be2c89b…
Claimed0xd8138f8a3f377c52…
06

Errors & limits

120 req/min/IP
BAD_REQUEST400Missing/invalid parameter or JSON body
INVALID_ADDRESS400Not a 0x-prefixed 20-byte address
INVALID_AMOUNT400Not a positive decimal ≤18 dp, or exceeds balance
NOT_A_PONS_TOKEN404Address is not registered in the Pons V2 factory
UNSUPPORTED501Graduated curve, ERC-20 pair, or contracts changed since verification
RATE_LIMITED429More than 120 requests/minute from one IP
UPSTREAM_ERROR502Robinhood Chain RPC failed after retries
07

Security

Model →
  1. 01
    Non-custodial

    No keys, seeds or signers anywhere.

  2. 02
    Validated

    4663, verified target, registered token.

  3. 03
    Simulated

    eth_call from the user before signing.

  4. 04
    Exact approvals

    approve(curve, exact) — never unlimited.

  5. 05
    Re-checked

    Chain + account re-read right before signing.

  6. 06
    Verified

    Receipt tracked on our RPC; status checked.

08

Feature status

EIP-6963 wallet discoveryLIVEAny compatible injected EVM wallet + legacy window.ethereum fallback
Robinhood Chain network handlingLIVEDetect, switch, add network; chainId re-checked before every signature
Token reads & discoveryBETAFrom on-chain Pons events and view functions
QuotesBETAComputed on-chain at a specific block
Buy / sellBETAPrepared + simulated, signed in your wallet
LaunchBETALogo must be an existing ipfs:// or https:// URI
Creator fees: detect, sweep, claimBETAEscrow balanceOf + claim(); curve sweepFees() — simulated before every signature
Trading graduated tokens (Uniswap V4)COMING SOONV4 router path not yet verified; curve trading only
ERC-20-quoted curvesUNAVAILABLEOnly ETH-quoted Pons curves are supported
Holder countsUNAVAILABLEBlockscout API behind a bot challenge; not estimated
USD valuesUNAVAILABLENo verifiable on-chain USD oracle is used; values are shown in ETH
REST APIBETAhttps://openpons.xyz/api/v1 — public, no key during beta
TypeScript SDKBETApackages/sdk — defaults to the public API; not yet on npm
MCP serverBETApackages/mcp — local stdio, talks to the public API; not yet on npm
Hosted MCP endpointCOMING SOONRemote HTTP transport (no local install)
Logo upload / IPFS pinningCOMING SOONRequires server-side pinning credentials