Monpad, explained
Launch a coin, trade it, or plug in your AI. Most things here are one click.
Start here
Monpad is a fair launchpad on Monad. A coin goes straight into a Uniswap V4 pool on the first block. There is no bonding curve, no waiting period and no creation fee. The liquidity is locked from the start.
- Plain coin. A standard token with a fixed supply of 1 billion. No token tax, no mint, no owner and no blacklist. It works with every wallet and app.
- Locked liquidity. The launcher holds the pool position and has no way to take it out.
- Open to bots. No sniper protection, delay or whitelist. Bots and AI agents are welcome.
How a launch works
One transaction does all of this:
- Creates the token (1 billion supply, all held by the launcher).
- Opens the Uniswap V4 pool, the coin against USDC, with the Monpad hook.
- Puts the whole supply in one single-sided position at the starting price.
- Optionally buys for you first (the dev buy), before anyone else can. It is capped at 5% of supply.
You can pay in MON. The launcher swaps what it needs to USDC inside the same transaction. There is no creation fee. You choose a creator tax from 0% to 5% at launch. It is fixed forever; see Fees.
Fees
Every swap pays 1% plus the creator tax, so between 1% and 6%. The hook sets this inside the pool on every swap, so no router or app can skip it.
| Share of the base 1% | Goes to |
|---|---|
| 70% | The creator, claimable any time |
| 10% | The platform |
| 10% | Buys and burns MONSHI |
| 10% | Buys and burns the launched coin |
Creator tax. Anything above the base 1% is the creator tax. It is not paid to anyone. All of it buys and burns the coin, so a higher tax means a faster burn.
Collecting. The token page has a Collect fees button that anyone can press. It splits what the pool has earned. Creators then claim their share from the same page.
Trading
Every coin page has a trade box and a chart. Choose MON or USDC, type an amount, press Buy. Pick MON and the router converts to USDC and back inside the same transaction.
- Slippage. The trade box sets a minimum-out from a live quote (default 1%). If the price moves past it, the trade fails and you keep your money.
- Price impact. The depth panel shows what a trade of each size would cost. New coins start thin on the sell side.
- Total fee. Shown on the coin page. A creator tax raises it.
- Gas. Keep a little MON for gas. The Max button leaves some behind.
Use your AI
Add one link and ask in plain English. The AI can look up coins and prepare a buy, sell or launch. It never touches your wallet: it hands you a link and you confirm.
Bots & developers
Everything is on-chain, so bots can trade without any Monpad service. Pools are Uniswap V4 pools with a dynamic fee and the Monpad hook. Use the router for MON or USDC swaps in one call:
buyWithMon(key, minTokensOut, minUsdcOut, deadline, monUsdcLimit, tokenPoolLimit) // payable
sellToMon(key, tokensIn, minMonOut, minUsdcOut, deadline, tokenLimit, monLimit)
buyWithUsdc(key, usdcIn, minTokensOut, deadline, limit)
sellToUsdc(key, tokensIn, minUsdcOut, deadline, limit)key is the pool key: currency0/currency1 are USDC and the coin, sorted by address; fee is 0x800000 (dynamic); tickSpacing is 200; hooks is the hook address below. Pass 0 for a price limit to use the default. Always set a real minimum-out.
const key = {
currency0: usdc < token ? usdc : token,
currency1: usdc < token ? token : usdc,
fee: 0x800000,
tickSpacing: 200,
hooks: HOOK,
};
await wallet.writeContract({
address: ROUTER, abi, functionName: 'buyWithMon',
args: [key, minTokensOut, 0n, BigInt(Math.floor(Date.now() / 1000) + 600), 0n, 0n],
value: parseEther('5'),
});Read the list of coins from the launcher (tokenCount, allTokens(i), launches(token)) and follow trades with the Swap event on the PoolManager, filtered by pool id. Public RPCs limit eth_getLogs to 100 blocks, so use your own node for history. Candles for any coin are at /api/v1/candles?pool=<poolId>&tf=5m.
GET /api/v1/specGET /api/v1/burnGET /api/v1/candlesPOST /api/mcpPrefer a library? @monpad/sdk wraps all of this: listLaunches, quoteBuy, buy, sell, launch, claim. It sets the minimum-out for you, handles approvals, and takes MON or USDC.
npm i @monpad/sdk viem
const monpad = createMonpad({ publicClient, walletClient }); // Monad mainnet addresses built in
await monpad.buy({ token, monIn: parseEther('0.5') });
await monpad.launch({ name: 'Milk Baron', symbol: 'MILK', creatorTaxBps: 200, devBuyMon: parseEther('2') });Want an agent that trades on its own wallet? Run the self-hosted MCP server with a burner key. Writes are dry runs until you say otherwise, and spend caps apply.
{ "mcpServers": { "monpad": { "command": "npx", "args": ["-y", "@monpad/mcp"], "env": { "MONPAD_PRIVATE_KEY": "<a small burner wallet>" } } } }Contracts
The three Monpad contracts are verified on Sourcify, so you can read the source and ABI there.
Security & risks
- No outside audit yet. The contracts were tested against a fork of Monad mainnet and reviewed in-house. An independent audit has not been done.
- Owner powers are small and visible. The owner can pause new launches and change the platform wallet, the MONSHI wallet and the creation fee. The owner cannot touch locked liquidity or anyone's coins or USDC.
- USDC can be frozen. USDC is issued by Circle, who can pause it or blacklist an address. If that happens, trades in USDC pools can fail.
- Fee collection needs a caller. Splits and buybacks run when someone presses Collect fees. Anyone can press it.
- Protocol fee. Uniswap governance can switch on a protocol fee for pools. That would take a slice before the fee reaches Monpad.
- Memecoins are risky. Coins can go to zero. Locked liquidity does not protect the price. Nothing here is financial advice.
Wallet setup
Questions? Ask in the community Telegram. Never share your seed phrase or private key with anyone, including anyone who says they are Monpad support.