Skip to main content
Glama

OpenFinance — Easy Trading: Crypto, Stocks, Perps & Prediction Markets

openfinance-launchpad-wrapper

OpenFinance launchpad (the "wrapper") — launch a token on Robinhood Chain (EVM, chain id 4663) with a FEE MODULE that decides, permanently, where its trading fees go. This is the "launch a token that burns its fees / splits them / runs a raffle / pays its holders" tool.

THIS IS THE DEFAULT LAUNCH TOOL FOR THE PONS CURVE ON ROBINHOOD CHAIN — a plain launch with nothing said about fees uses module='keep', which sends the fees to the creator's own wallet and is the only module that can be repointed later. Do NOT use openfinance-pons-launch for a new launch; this tool launches on the same Pons curve, with the fee router added, so it is a superset.

It is not the only launch venue on this chain. openfinance-launchpad-v4 is a separate product: a launch there IS a real Uniswap V4 position, paired against an approved quote token such as USDG, with a snipe tax and no fee modules. Route to it when the user names Uniswap or V4, names a pair asset like USDG, or wants the token tradable through the Uniswap router. If the user says only "launch a token on Robinhood Chain" with nothing about fee modules or Uniswap, ASK which venue — the pools are not interchangeable and the choice is permanent.

HOW IT RELATES TO openfinance-pons-launch: • Same chain, same Pons curve underneath, same Privy EVM wallet. The token still trades on Pons. • This adds a fee router, so fees can be kept, sent to one wallet, split, burned, raffled, or airdropped to holders. • openfinance-pons-launch remains only for READING Pons state (quote assets, launch terms) and for the fee-claim actions on tokens launched through it BEFORE the wrapper existed. Its launch action is legacy — do not route a new launch to it. • Module choices are FROZEN AT LAUNCH, with one exception: keep may be repointed later (FeeRouter.repointWallet). A burn, split, raffle or holders module cannot be changed afterwards — no admin key, no migration. Treat those like deploying an immutable contract. • Every launch keeps 5% of its fee bucket (500 bps) for the keeper's gas. This is not optional and not a platform fee: without it the launch could never have its fees moved, and the keeper refuses to service it. The module gets the other 95%.

MODULES (pick one, frozen): keep — fees to the creator's own wallet. wallet — fees to one named wallet (recipient). split — fees divided between 2-16 wallets (split), bps totalling exactly 10000. burn — fees buy the launched token back and burn it. raffle — fees fund a periodic prize draw among holders (raffle, required). holders — fees airdropped pro-rata to holders (airdrop, optional; defaults are sensible).

ROUTING: • A bare "launch a token" with no fee preference → this tool, module='keep'. Do not ask the user to choose a module they did not raise; keep is the plain behaviour and is repointable. • Call action='get_readiness' first for a raffle launch — it reports whether the keeper and randomness contracts are live, and lists the stock assets a stock-prize raffle may use. A raffle launched without a live keeper would never draw. • Call action='simulate_launch' before action='launch' for anything non-trivial. It builds and validates the exact transaction without sending it, so a bad split or an impossible raffle fails for free. • action='list_launches' is the public feed of every launch from this factory, newest first — the "what has been launched" question.

ACTIONS: launch — { module, name, symbol, description?, logo?, creatorTaxBps, pairToken?, developerBuy?, recipient?, split?, raffle?, airdrop? }: module — one of keep|wallet|split|burn|raffle|holders. Frozen. creatorTaxBps — the TOTAL trading tax in basis points, capped by Pons's live limit. The wrapper's own protocol surcharge is included in this number, not added to it. pairToken — optional; the asset the token trades against (a symbol or address — use openfinance-pons-launch's list_quote_assets to enumerate them, including Robinhood's tokenized stocks). Defaults to ETH. recipient — required for module='wallet'. split — required for module='split': [{ recipient, bps }], 2-16 entries, bps summing to EXACTLY 10000. They do not sum if each share is rounded independently — three equal shares floor to 9999 — so floor each and give the remainder to one recipient. raffle — required for module='raffle'. Frozen terms: cadence, prize pool share, winners per round, ticket size, prize bounds. DESTRUCTIVE AND IRREVERSIBLE — launches a real token on mainnet, commits real funds for the launch fee, and freezes the fee module forever. Show the user: module, resolved pair asset, creatorTaxBps, the 5% keeper slice, and every recipient/share. Require explicit confirmation.

simulate_launch — same arguments as launch: builds and validates the transaction WITHOUT sending it. Returns the resolved allocations, the launch fee and the would-be addresses. Free and safe — prefer it before any launch.

list_launches — { limit?, offset? } (PUBLIC — no auth): every launch from this factory, newest first. Returns { total, tokens: [{ token, curve, creator, name, symbol, router, adapter, raffle, pairToken, launchedAt, feesOwedWei, marketCapUsd }] }. launchedAt is a unix second from the launch's own block — a launch carries no timestamp on chain, so this comes from its Deployed event. feesOwedWei is what its buckets hold but have not yet delivered. marketCapUsd is null until a market-cap provider indexes the token, which is normal for a launch still on its bonding curve with no DEX pair.

get_launch — { token } (0x… address): one launch's fee module and routing, read from the contracts. Returns its module, buckets, allocations, router, adapter and raffle.

get_funding — { token } (0x… address): why a launch's fees have or have not moved. Returns { paidWei, spentWei, fundingWei, ledger }. paid is on chain (what the router has sent the keeper hub); spent comes from the keeper's own ledger. The keeper cranks a launch only when the fee covers the gas, so fundingWei is the number that explains a launch whose fees appear stuck. ledger: null means the keeper has never worked this launch, so spend is zero.

list_creator_launches — { creator } (0x… address) (PUBLIC — no auth): every launch by one creator, with the same enrichment as list_launches.

get_raffle — { raffle } (0x… address): a raffle's live state — current round, cadence, prize terms, and whether a round is drawable.

get_raffle_claims — { raffle, wallet, round? }: a holder's claimable prizes with their Merkle proofs. The proofs come from the keeper's database; whether a slot is already PAID comes from the contract, which is authoritative.

list_raffle_stocks — {} (PUBLIC — no auth): the tokenized-stock assets a stock-prize raffle may pay out in.

get_readiness — {} (PUBLIC — no auth): whether a raffle can be launched at all in this environment — keeper hub, randomness contract, and whether the hub owner has paused launches. Call before offering a raffle launch.

get_keeper_status — {} (PUBLIC — no auth): a deployment check, not launch data. Reports whether this host can reach the keeper's database and whether the keeper is alive. An unreachable database is a SUPPORTED state — proofs fall back to a slower rebuild from transfer history — so configured: true with reachable: false means proofs still work but the indexed path is not in use.

⚠️ SAFETY — launch is irreversible, commits real funds, and freezes the fee module permanently. Always simulate_launch first, show the resolved allocations including the 5% keeper slice, and get explicit confirmation.

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-wrapper"
  }
}

Input Schema

NameRequiredDescriptionDefault
logoNoArtwork: a public https URL, or base64 for the backend to pin to IPFS.
nameNoToken name.
limitNoPage size (list_launches). Default 50, max 100.
roundNoA specific round id (get_raffle_claims); defaults to all claimable.
splitNomodule=split: 2-16 recipients whose bps total EXACTLY 10000.
tokenNoA launched token address (get_launch, get_funding).
actionYesWhich action to perform — see tool description.
moduleNoThe fee module. FROZEN at launch.
offsetNoPage offset, counting back from the newest (list_launches).
raffleNomodule=raffle: the frozen raffle terms. Call get_readiness first.
symbolNoToken ticker.
walletNoA holder address (get_raffle_claims).
airdropNomodule=holders: optional cadence overrides; defaults are sensible.
creatorNoA creator address (list_creator_launches).
pairTokenNoPair asset symbol or address (e.g. "ETH", "TSLA"). Defaults to ETH.
recipientNomodule=wallet: the wallet that receives the fees.
descriptionNoShort description.
developerBuyNoOptional dev buy in the pair asset's human units, executed with the launch.
creatorTaxBpsNoTOTAL trading tax in bps, including the wrapper surcharge. Capped by Pons.
raffleAddressNoA raffle contract address (get_raffle, get_raffle_claims).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden and does so thoroughly: launch is irreversible, commits real funds, and freezes the fee module permanently (except repointable keep); the 5% keeper slice is mandatory and its purpose explained; module terms are frozen; auth/visibility is stated per action (PUBLIC — no auth); and it mandates simulate-then-confirm before the destructive call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Long but justified for an 11-action, 20-parameter tool, and it is front-loaded with the routing decision before the reference detail. There is mild redundancy: the destructive/irreversible warning and the 5% keeper slice are each stated twice, and the final ⚠️ SAFETY block restates what the launch section already said.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a high-complexity multi-action tool with no output schema: every action is enumerated with its arguments, several return shapes are described inline (list_launches fields and the meaning of feesOwedWei/marketCapUsd, get_funding's paid/spent/funding/ledger), edge cases are covered, and the safety/confirmation flow is spelled out.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents every parameter and the baseline is 3. The description goes well beyond it by adding cross-parameter semantics the schema cannot express: split bps must total exactly 10000 with an explicit rounding warning (three equal shares floor to 9999), creatorTaxBps already includes the surcharge, recipient/raffle are conditional-required by module, and keeper-vs-module fee split. It stops short of documenting all read-action params, but adds substantial value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (launch a token on Robinhood Chain via the OpenFinance launchpad wrapper with a fee module) and explicitly positions itself against siblings: it names openfinance-pons-launch (legacy launch) and openfinance-launchpad-v4 (Uniswap V4 venue) and explains why this is the default. An agent can distinguish it from every sibling without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use rules ('bare launch with no fee preference → this tool, module=keep'), when to ask the user (only 'launch a token' with nothing about fee modules or Uniswap), when NOT to use it, plus action-sequencing guidance (get_readiness before raffle, simulate_launch before launch) and routing away to V4 by keyword.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.