openfinance-launchpad-v4
OpenFinance launchpad on Uniswap V4 (Robinhood Chain, EVM chain id 4663) — launch a token whose bonding curve IS a real Uniswap V4 position, trade it through the Universal Router, and graduate it into locked full-range liquidity.
WHICH LAUNCH TOOL TO USE ON ROBINHOOD CHAIN. There are three, and they are different venues — not alternative spellings of one:
• openfinance-launchpad-v4 (this tool) — Uniswap V4 pools, paired against an APPROVED QUOTE TOKEN (e.g. USDG), with a snipe tax and a creator tax. Use when the user names Uniswap/V4, names a quote asset such as USDG, or wants the token tradable through the Uniswap router.
• openfinance-launchpad-wrapper — the Pons curve plus a permanent FEE MODULE (burn / split / raffle / holders). Use when the ask is about where the fees go.
• openfinance-pons-launch — legacy Pons reads only.
If the user just says "launch a token on Robinhood Chain" with nothing about fee modules or Uniswap, ASK which venue rather than guessing: the choice is permanent and the pools are not interchangeable.
For SOLANA launches use openfinance-launchpad (Meteora DBC) — a different chain entirely.
HOW A LAUNCH WORKS HERE
launchdeploys the token and opens a V4 pool againstpairToken(an approved quote asset — calllist_quote_assetsfirst; passing anything else is rejected on chain).The curve is a V4 position, so the token is tradable through the Universal Router immediately.
buy/sellgo throughget_quote→ router.When the curve fills, the launch graduates: reserves become locked full-range liquidity.
buymay graduate as a side effect when the buy consumes the rest of the curve — the response saysside: 'graduate'when that happened.
AMOUNTS ARE BASE UNITS. amount on buy/sell/quote is a raw integer string in the token's smallest unit, never a decimal. The pair asset's decimals are NOT always 18 — USDG is 6, so 1 USDG is "1000000". Read decimals from list_quote_assets and convert; a 10^12 error here spends a million times the intended amount.
TAXES, AND WHY A QUOTE IS CALLER-SPECIFIC
• A snipe tax of 99% applies for the first 3 seconds after launch, decaying to 0. It depends on WHO is swapping, so get_quote simulates from the trader's own address. A quote taken for someone else misprices that window and the swap then fails its minimum output.
• A creator tax (0-10%, creatorTaxBps) is fixed at launch and cannot be changed afterwards.
• The hook takes 1% of each swap; 30% of that is the protocol's share.
DEV BUY. devBuy is an amount of the PAIR token (a decimal string here, e.g. "1" for 1 USDG — the server converts using that asset's decimals) bought for the creator in the same transaction. It needs that balance in the user's server wallet; the server sends the ERC20 approval itself.
IRREVERSIBLE. A launch deploys a contract and opens a real pool with real liquidity. Name, symbol, pair token, and creator tax are frozen at launch. Confirm the parameters with the user before calling launch, and never launch to "test" the tool.
ACTIONS: Reads (no key needed): get_readiness, list_quote_assets, get_pair_terms, list_launches, get_pool, get_market, get_candles Reads (key): get_quote, get_fees Writes (key, real money): launch, buy, sell, graduate, claim_fees
Prerequisite: openfin-setup — the user needs a server-authorized Privy EVM wallet (POST /agent/auth/authorize-server), funded with the pair token for a buy or a dev buy.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"action": "<action>"
},
"name": "openfinance-launchpad-v4"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tf | No | Candle timeframe (get_candles, get_market). Default 1h. | |
| logo | No | An already-hosted logo URL, instead of `image` (launch). | |
| name | No | Token name (launch). | |
| side | No | Quote direction (get_quote). Default buy. | |
| image | No | Base64 or data-URL artwork, pinned to IPFS server-side (launch). | |
| limit | No | Page size (list_launches). Default 50. | |
| token | No | A launched token address (buy, sell, graduate, get_quote, get_pool, get_market, get_candles). | |
| action | Yes | Which launchpad operation to run. | |
| amount | No | BASE UNITS as an integer string. buy: pair-token in. sell: tokens in. Never a decimal. | |
| devBuy | No | Pair-token amount to buy for the creator in the launch tx, as a DECIMAL string (e.g. "1" = 1 USDG). | |
| offset | No | Page offset (list_launches). Default 0. | |
| symbol | No | Token symbol (launch). | |
| trader | No | Address to simulate the quote from (get_quote); defaults to the caller. | |
| creator | No | Filter launches by creator address (list_launches). | |
| discord | No | Discord URL (launch). | |
| include | No | Comma list for get_market: candles,trades,holders. Default all three. | |
| No | Twitter/X URL (launch). | ||
| website | No | Website URL (launch). | |
| currency | No | Fee currency to read or claim (get_fees, claim_fees). | |
| telegram | No | Telegram URL (launch). | |
| farcaster | No | Farcaster URL (launch). | |
| pairToken | No | The approved quote token to pair against, as an ADDRESS (launch, get_pair_terms). Must come from list_quote_assets. | |
| recipient | No | Fee recipient address; defaults to the creator (launch). | |
| description | No | Token description (launch). | |
| slippageBps | No | Slippage tolerance in bps (buy, sell). Default is the server’s. | |
| minDevTokens | No | Minimum tokens the dev buy must return, base units (launch, slippage guard). | |
| creatorTaxBps | No | Creator tax in basis points, 0-1000 (0-10%). FROZEN at launch — cannot be changed later. Default 0. | |
| snipeTaxExemptions | No | Addresses exempt from the 3-second snipe tax (launch). |