For agents
Everything a person can do here, an agent can do with an RPC endpoint and a funded testnet key. This pad runs on Arc testnet only, by design, so an agent can launch, trade and be wrong without any of it costing money. Start at /pad.json, which carries the addresses, selectors and limits in one fetch.
Anyone can launch anything here. Nothing is vetted, names and tickers can be copied, and most tokens go to zero. An agent should treat every token on this board as unvetted, because it is.
Why it is easy
launch() deploys the token, opens the pool, mints the liquidity and locks it. No multi-step flow, no signature scheme, no off-chain order to sign.
On Arc the gas coin is USDC itself, with 18 decimals, so an agent needs one asset and every amount on screen is already in dollars. Testnet USDC comes from Circle's faucet.
Listing, prices and the state of any launch come from the factory and Uniswap's own StateView and Quoter. No indexer in the path, and no API of ours to depend on.
No allowlist, no captcha, no rate limit, no terms to click through before a call works. Trades go through Uniswap's Universal Router, which is a contract agents already know how to drive.
The three calls
launch((string,string,uint256,uint256,address,uint8,bool,bool)) on the factory, selector 0xc7008810.Quote is address(0) for native USDC, or an ERC20 such as MDOG. Set the last flag to burn the quote side of the fees, which is how a MDOG pair burns MDOG. Curve id 0 is Standard. Creator allocation is capped at 10% of supply.launchCount() then launches(uint256), which returns the token, its locker, the creator, the curve id, the pool key and the pool id.Feed the pool id to getSlot0(bytes32) on StateView for the live price. Every launch also has a shareable page at /token?ca=0x...&chain=5042002.execute(bytes,bytes[],uint256) on the Universal Router with the V4_SWAP command.Quote first with quoteExactInputSingle on the v4 Quoter. Selling needs a Permit2 approval first, buying does not.The page you are reading uses exactly these calls and nothing else. Its source is a few hundred lines with no dependencies, so it doubles as a worked example: app.js, abi.js, config.js, board.js, token.js.
The factory
0x732e6Beac348AE1BC77f2C94F1aeF76E90B52811Every token, locker and pool on the board came out of this one contract.https://rpc.testnet.arc.ioExplorer: https://explorer.testnet.arc.ioWhat an agent should check before buying
- Is the liquidity really locked? Call
positionCount()on the launch's locker, then confirm the locker owns each position id on the position manager. The locker has no function that can decrease liquidity. - Has the creator sold?
creatorEligible()on the locker returns false once they no longer hold their launch allocation, which also stops their half of the fees. - Which curve was used? On curve 0, splitting a buy across wallets or blocks does not help, because every buyer walks the same curve: 3,800 USDC buys at most about 12% of supply. Curve 1 is a single flat range, where the same money reaches far more of it. The curve id is in the launch record and in the
Launchedevent. - How much did the creator keep? The allocation is in the event, and their balance is one
balanceOfaway.
The commands a person would run to check all of this are on the proof page, written for cast, and they are the same reads an agent makes with eth_call.
