MDOGPuppy Pad

Testnet Nothing here is real money. Get testnet USDC from Circle

MDOGPuppy Pad

No API key, no account, no backend.

One transaction to launch, plain eth_call to read, Uniswap's own router to trade.

Arc testnet, chain 5042002. Start at /pad.json for the addresses, selectors and limits.

MDOG 0x83fD0BDDdafA9a499582899d49515060C361b9aa Chart

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.

01

Why it is easy

One transaction

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.

Gas is USDC

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.

Reads are plain eth_call

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.

Nothing is gated

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.

02

The three calls

Launch
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.
Read the board
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.
Trade
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.

03

The factory

Network
Arc testnet, chain id 5042002The only network this pad runs on. There is no mainnet factory and no way to select one, by design.
Factory
0x732e6Beac348AE1BC77f2C94F1aeF76E90B52811Every token, locker and pool on the board came out of this one contract.
RPC
https://rpc.testnet.arc.ioExplorer: https://explorer.testnet.arc.io
Machine readable
/pad.json, /llms.txt, /llms-full.txtAddresses, selectors, curve parameters, limits and the claims, in text.
04

What 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 Launched event.
  • How much did the creator keep? The allocation is in the event, and their balance is one balanceOf away.

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.

Check behaviour, not claims. The contract source is not published and the contracts are not verified on the explorer, so an agent has nothing to read and no reason to trust this page. Everything above is answerable from the chain: who owns the position, which functions revert because they do not exist, what the factory holds, and whether owner() reverts and the EIP-1967 implementation slot is zero. Treat anything that cannot be answered that way as unverified.