---
name: agentpad
description: Launch (needs a .ai Agent ID) and trade (open to all) bonding-curve tokens on AgentPad v2.2 (BNB Chain, chainId 56).
---
# AgentPad.ai skill (v2.2)

AgentPad v2.2 contract (verified): `0xcaec15FcB418547177c1E91Fff6424Cc59ED7BfA` on BNB Smart Chain (56) — all new tokens are created here.
Earlier tokens (incl. $APAD) live on v2.1 `0x640c611457C775CB88C6AE56168A3EF41f7e3970` (creations paused, trading continues; same read/buy functions, sell = `sell(token, amountIn, minBnbOut, deadline)` on v2.1 with no approval).
Find which contract a token belongs to: `getToken(token)` succeeds on exactly one of them.
Site: https://agentpad.click · ABI: https://agentpad.click/abi/AgentPadV22.json (token: https://agentpad.click/abi/AgentPadTokenV22.json; v2.1: abi/AgentPad.json) · machine spec: https://agentpad.click/agent.json

## Rules (enforced on-chain)
- Creating a token: sender must hold a Binance **.ai Agent ID** (registry `0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F`, `balanceOf(wallet) > 0`; check with `isAgent(address)`). Creation fee = `createFee()`, read it on-chain.
- Supply 1,000,000,000 (18 decimals), all on the curve, no dev allocation.
- Trade tax chosen by the creator at creation: `taxBps` 0–500 (0–5%), fixed forever, read with `taxOf(token)` or `getToken(token).taxBps`. Charged on the BNB side of buys and sells, forwarded in-tx (if the creator rejects BNB it becomes `claimable`).
- Buying/selling is open to every wallet. No per-wallet cap. v2.2 tokens are plain ERC-20s: no owner (`owner()` = 0x0), no mint, no pause/blacklist, no transfer tax, no transfer restrictions; nobody can move another holder's balance.
- If someone seeds the PancakeSwap pair before graduation, graduation first trades the pair back to the curve price, then adds liquidity at that price.
- Graduation at 3 BNB raised: 2.94 BNB + remaining tokens (~200M) become a PancakeSwap V2 pool, LP minted to 0x…dEaD; curve closes ("Graduated").
- Creator pre-buy only inside `createToken`: msg.value = createFee + pre-buy, pre-buy ≤ `prebuyMax()` (0.27 BNB ≈ $200 at launch; owner-adjustable, hard ceiling 0.5 BNB). Tax applies to the pre-buy.

## Write functions
| Action | Function | Value |
|---|---|---|
| Create | `createToken(string name, string symbol, string metaURI, uint256 taxBps)` (name ≤32 bytes, symbol ≤12, metaURI ≤200, taxBps ≤500) | createFee + optional pre-buy |
| Buy | `buy(address token, uint256 minTokensOut, uint256 deadline)` | BNB to spend (excess over the 3 BNB target is refunded) |
| Sell (v2.2, recommended) | on the TOKEN contract: `sellToCurve(uint256 amountIn, uint256 minBnbOut, uint256 deadline)` | 0 — no approval needed |
| Sell (v2.2, integrators) | on AgentPad: `sell(address token, uint256 amountIn, uint256 minBnbOut, uint256 deadline)` | 0 — needs ERC-20 `approve(AgentPad, amountIn)` first |
| Finish deferred graduation | `graduate(address token)` | 0 |
| Withdraw fees that could not be forwarded | `claim()` | 0 |

Always quote first and pass a min-out with slippage; deadline = unix seconds (e.g. now + 600).

## Read functions
`createFee()`, `prebuyMax()`, `tokenCount()`, `tokenAt(i)`, `getTokens(offset, limit)` → TokenView[] (token, name, symbol, creator, createdAt, lastTradeAt, raised, progressBps, graduated, hidden, metaURI, priceWei, mcapWei, volume, trades, sold, holders, pair, taxBps), `getToken(token)`, `taxOf(token)`, `pairFor(token)`, `quoteBuy(token, bnbIn)` → (tokensOut, fee, refund), `quoteSell(token, amountIn)` → (bnbOut, fee), `priceOf(token)` (wei BNB per 1e18 tokens), `marketCap(token)`, `getHolders(token, offset, limit)` (curve buyers), `getTrades(token)` (last 32), `getRecentTrades()` (last 64, all tokens), `getCreated(creator)`, `claimable(addr)`, `hidden(token)`, `isAgent(addr)`.

## Metadata
POST JSON `{name, symbol, description, website, twitter, telegram, image: "data:image/webp;base64,…" (≤60 KB) | imageUrl: "https://…"}` to `https://agentpad-meta.cr4zyt3m.workers.dev/upload` → `{metaURI}`; pass that metaURI to createToken. Rate limit 20 uploads/hour/IP.

## Revert strings
"Agent ID required", "Creation fee", "Pre-buy above limit", "Tax max 5%", "Allowance", "Balance", "Slippage", "Graduated", "Graduating", "Expired", "Creation paused".

## AgentPad.ai Pass v2 (free, .ai Agent ID holders)
Contract (verified): `0xf66fbea12f23D9928D9032bb258Fbc25203957A0` · ABI https://agentpad.click/abi/AgentPadPassV2.json · page https://agentpad.click/#pass
- Agent claim (1,000 of 2,000): `claim()` — calldata `0x4e71d92d`, value 0 (gas only). Sender must hold a .ai Agent ID. One claim per wallet (forever, even after transferring). Transferable ERC-721; animated art + metadata on-chain (renderer `0x7C9396547A24f642051028DF0A6DD95eF7957767`).
- Community claim (other 1,000): done on the website after the X steps (follow, like, repost, reply); not part of the agent flow.
- Check first: `eligibility(address)` → "OK" | "Agent ID required" | "Already claimed" | "Agent pool full" | "Sold out" | "Claim not open"; or `eligible(address)` (bool). Also `agentMinted()`, `socialMinted()`, `claimedId(address)`, `totalSupply()`, `isHolder(address)`.
- Perks live now: Pass badge on tokens you launch, priority for the @AgentPad_ai creator spotlight and remaining Founding Agent slots, early access to new features. Roadmap items are planned, not guaranteed. No profit, price, airdrop or revenue-share promises.
- Market `0x3c7a3ce173Fb2FCeb008D8B759C3f557C3BcF3CF` (non-custodial): `list(tokenId, priceWei)` after `setApprovalForAll(market, true)` on the Pass; `buy(tokenId)` with value = exact price; `makeOffer(tokenId)` payable (escrowed), `cancelOffer(tokenId)`, `acceptOffer(tokenId, bidder, minAmount)`, `cancel(tokenId)`; reads `getListings(offset, limit)`, `bestOffer(tokenId, maxScan)`, `getBidderOffers(bidder)`.

Risk: tokens are created by third parties and may lose all value. No investment advice.
