with one click
one-click-token-launch
// One-click multi-launchpad token creation with bundled buy, IPFS metadata, MEV protection across 6 launchpads on Solana and BSC
// One-click multi-launchpad token creation with bundled buy, IPFS metadata, MEV protection across 6 launchpads on Solana and BSC
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | one-click-token-launch |
| version | 1.0.0 |
| description | One-click multi-launchpad token creation with bundled buy, IPFS metadata, MEV protection across 6 launchpads on Solana and BSC |
| updated | "2026-04-13T00:00:00.000Z" |
| triggers | 一键发币、发币、创建代币、launch token、create token、deploy token、mint token、 launch meme coin、pump.fun launch、create a new token on Solana or BSC |
One-click token creation with optional bundled initial buy across 6+ launchpads.
This skill is for educational and research purposes only. It does NOT constitute investment advice.
All on-chain write operations (token creation, buys, transfers) are signed via the onchainos Agentic Wallet running inside a Trusted Execution Environment (TEE). No private keys are stored in code or environment variables. The signing flow is:
onchainos wallet contract-call --unsigned-tx (Solana) or --input-data (EVM)onchainos wallet history --tx-hashExternal data enters the system at these points:
| Source | Data | Validation |
|---|---|---|
| PumpPortal API | Unsigned transaction bytes | Deserialized and verified before TEE signing |
| Bags.fm API | Token mint, metadata URL, serialized TX | Token mint checked, TX passed to TEE |
| Moonit API | Serialized TX, token mint | TX passed to TEE for signing |
| User input | Token name, symbol, description, image | Length limits enforced, image format validated |
| IPFS upload | CID hash | Immutable content-addressed -- no validation needed |
| Pinata API | Upload response (CID) | CID format validated |
User-supplied strings (name, symbol, description) are passed to launchpad APIs and on-chain metadata. They are NOT used in shell commands or SQL queries. Image files are validated for format and size before IPFS upload.
Live mode (DRY_RUN=False) always requires explicit user confirmation (typing "confirm") before any on-chain transaction. The auto_confirm parameter only applies in DRY_RUN mode. This prevents accidental irreversible token creation.
Token Launch/
├── SKILL.md ← This file (strategy spec)
├── config.py ← All configurable parameters
├── token_launch.py ← Main program
├── launchpads/ ← Per-launchpad adapters
│ ├── __init__.py
│ ├── base.py ← Abstract base class
│ ├── pumpfun.py ← pump.fun via PumpPortal API
│ ├── bags.py ← Bags.fm via REST SDK
│ ├── letsbonk.py ← LetsBonk via API
│ ├── moonit.py ← Moonit via SDK
│ ├── fourmeme.py ← Four.Meme (BSC) via contract
│ └── flap.py ← Flap.sh (BSC) via contract
├── ipfs.py ← IPFS upload (pump.fun free endpoint + Pinata fallback)
├── post_launch.py ← Post-launch monitor
├── dashboard.html ← Web Dashboard UI
├── requirements.txt ← Python dependencies
└── state/ ← [Auto-generated]
└── launches.json ← Launch history
onchainos --version
# If not installed, follow onchainos official docs
onchainos wallet login <your-email>
onchainos wallet status
# → loggedIn: true
# Confirm Solana address
onchainos wallet balance --chain solana
# → address: 2HNq...ErwW
# Confirm BSC address (if using BSC launchpads)
onchainos wallet balance --chain bsc
IPFS upload uses pump.fun's free /api/ipfs endpoint by default — no API key required.
Optional fallback: Pinata (set export PINATA_JWT="your_jwt" if you want redundancy).
pip install -r requirements.txt
# or manually:
pip install httpx base58 solders
| Launchpad | Protocol | Migration Target | Bundled Buy | MEV Protection | API Type |
|---|---|---|---|---|---|
| pump.fun | pump.fun bonding curve | Raydium | Yes (Jito bundle) | Jito bundle | PumpPortal REST |
| Bags.fm | Meteora DBC | Meteora | Yes (atomic) | Built-in | Official REST SDK |
| LetsBonk | Bonk bonding curve | Raydium | Yes | Built-in | MCP / REST |
| Moonit | Moonit bonding curve | Raydium/Meteora | Yes | Built-in | Official SDK |
| Launchpad | Protocol | Migration Target | Bundled Buy | Tax Token | API Type |
|---|---|---|---|---|---|
| Four.Meme | Four.Meme bonding curve | PancakeSwap | Yes | No | Contract call |
| Flap.sh | Flap bonding curve | PancakeSwap V2/V3 | Yes | Yes (buy/sell tax) | Contract call |
┌──────────────────────────────────────────────────────────────────────┐
│ USER: "发币" / "launch token" / "create a meme coin" │
└────────────────────────────┬─────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ STEP 1: BASIC INFO │
│ │
│ ┌──────────────┬───────────────────────────────────────────────┐ │
│ │ Token Name │ "DogWifHat" [Required] │ │
│ │ Ticker │ "WIF" [Required] │ │
│ │ Description │ "The dog with the hat" [Required] │ │
│ │ Image │ ./wif.png or URL [Required] │ │
│ └──────────────┴───────────────────────────────────────────────┘ │
└────────────────────────────┬─────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ STEP 2: SOCIAL LINKS (Optional) │
│ │
│ ┌──────────────┬───────────────────────────────────────────────┐ │
│ │ Website │ <your-website-url> [Optional] │ │
│ │ Twitter / X │ <your-twitter-url> [Optional] │ │
│ │ Telegram │ <your-telegram-url> [Optional] │ │
│ └──────────────┴───────────────────────────────────────────────┘ │
└────────────────────────────┬─────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ STEP 3: CHOOSE LAUNCHPAD │
│ │
│ Solana: │
│ ┌─────┬──────────────────────────────────────────────────────────┐ │
│ │ 1 │ 🟢 pump.fun — Largest SOL launchpad, Raydium migrate │ │
│ │ 2 │ 🔵 Bags.fm — Fee sharing, Meteora DBC │ │
│ │ 3 │ 🟡 LetsBonk — BONK ecosystem, Raydium migrate │ │
│ │ 4 │ 🟠 Moonit — Creator rewards, 80% fee share │ │
│ └─────┴──────────────────────────────────────────────────────────┘ │
│ │
│ BSC: │
│ ┌─────┬──────────────────────────────────────────────────────────┐ │
│ │ 5 │ 🔴 Four.Meme — Largest BSC launchpad, PCS migrate │ │
│ │ 6 │ 🟣 Flap.sh — Tax tokens, vanity addr, PCS V3 │ │
│ └─────┴──────────────────────────────────────────────────────────┘ │
│ │
│ Default: pump.fun (if user doesn't specify) │
└────────────────────────────┬─────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ STEP 4: LAUNCHPAD-SPECIFIC CONFIG │
│ │
│ ┌─── pump.fun ────────────────────────────────────────────────────┐ │
│ │ Category: (not applicable — pump.fun has no categories) │ │
│ │ Priority Fee: 0.0005 SOL (default) │ │
│ │ Tip Fee: 0.0001 SOL (default) │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─── Bags.fm ─────────────────────────────────────────────────────┐ │
│ │ Fee Sharing: Creator 100% (default) or split with others │ │
│ │ Fee Claimers: [{address, bps}] — must total 10,000 bps │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─── Four.Meme ───────────────────────────────────────────────────┐ │
│ │ Category: Meme/AI/DeFi/Games/Infra/De-Sci/Social/... │ │
│ │ Gas Price: auto (default) or custom wei │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─── Flap.sh ─────────────────────────────────────────────────────┐ │
│ │ Category: (via extensionData) │ │
│ │ Buy Tax: 0-10000 bps │ │
│ │ Sell Tax: 0-10000 bps │ │
│ │ Tax Duration: seconds │ │
│ │ Tax Split: mktBps + deflationBps + dividendBps + lpBps │ │
│ │ DEX Target: PancakeSwap V2 or V3 │ │
│ │ LP Fee Tier: (if V3) │ │
│ │ Vanity Salt: bytes32 (optional, for custom token address) │ │
│ └─────────────────────────────────────────────────────────────────┘ │
└────────────────────────────┬─────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ STEP 5: BUNDLED INITIAL BUY (捆绑买入) │
│ │
│ "Buy your own token at launch?" │
│ │
│ ┌──────────────────┬────────────────────────────────────────────┐ │
│ │ Buy Amount │ 0 = create only │ │
│ │ │ 0.5 SOL = buy at launch (bundled) │ │
│ │ MEV Protection │ ON (Jito bundle) — default, recommended │ │
│ │ Slippage │ 10% (default for bonding curve buys) │ │
│ └──────────────────┴────────────────────────────────────────────┘ │
│ │
│ How it works: │
│ • buyAmount = 0 → Token creation TX only │
│ • buyAmount > 0 → Create + Buy in ONE atomic Jito bundle │
│ • No one can front-run your initial purchase │
│ • Platform fees are deducted from buyAmount automatically │
│ │
│ Balance check: │
│ • SOL: need buyAmount + 0.02 SOL (fees + rent) │
│ • BSC: need buyAmount + 0.015 BNB (gas) │
└────────────────────────────┬─────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ STEP 6: CONFIRMATION TABLE │
│ │
│ ┌────────────────┬──────────────────────────────────────────────┐ │
│ │ Launchpad │ pump.fun │ │
│ │ Chain │ Solana │ │
│ │ Token Name │ DogWifHat │ │
│ │ Ticker │ WIF │ │
│ │ Description │ The dog with the hat │ │
│ │ Image │ wif.png (420x420, 85KB) │ │
│ │ Website │ <your-website-url> │ │
│ │ Twitter │ <your-twitter-url> │ │
│ │ Telegram │ <your-telegram-url> │ │
│ │ ───────────── │ ────────────────────────── │ │
│ │ Wallet │ 2HNq...ErwW (1.23 SOL) │ │
│ │ Initial Buy │ 0.5 SOL │ │
│ │ MEV Protection │ ON (Jito bundle) │ │
│ │ Slippage │ 10% │ │
│ │ Priority Fee │ 0.0001 SOL │ │
│ │ Est. Cost │ ~0.52 SOL (buy + fees + rent) │ │
│ └────────────────┴──────────────────────────────────────────────┘ │
│ │
│ ⚡ Type "confirm" to launch. Type "cancel" to abort. │
│ │
│ ⚠️ This is IRREVERSIBLE. The token will be created on-chain. │
└────────────────────────────┬─────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ STEP 7: EXECUTION (what happens under the hood) │
│ │
│ 7a. Upload image to IPFS (pump.fun free endpoint, Pinata fallback) │
│ → ipfs://QmXxx... │
│ │
│ 7b. Create metadata JSON, upload to IPFS │
│ { │
│ "name": "DogWifHat", │
│ "symbol": "WIF", │
│ "description": "The dog with the hat", │
│ "image": "ipfs://QmXxx...", │
│ "twitter": "<your-twitter-url>", │
│ "telegram": "<your-telegram-url>", │
│ "website": "<your-website-url>" │
│ } │
│ → ipfs://QmYyy... (metadata URI) │
│ │
│ 7c. Call launchpad adapter: │
│ pump.fun → PumpPortal /api/trade-local (action: create) │
│ Bags → SDK createLaunchTransaction() │
│ Moonit → SDK prepareMintTx() │
│ LetsBonk → REST API │
│ Four.Meme → onchainos wallet contract-call (user confirms first) │
│ Flap → onchainos wallet contract-call (user confirms first) │
│ │
│ 7d. If buyAmount > 0: │
│ • Bundle: [CreateToken IX, Buy IX] → Jito bundle (SOL) │
│ • Or atomic contract call with value (BSC) │
│ │
│ 7e. Sign via onchainos wallet (TEE) │
│ │
│ 7f. Submit to chain │
│ • SOL: submit Jito bundle → wait ~25s │
│ • BSC: broadcast tx → wait ~3-5s │
└────────────────────────────┬─────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ STEP 8: RESULT │
│ │
│ ✅ Token Launched Successfully! │
│ │
│ ┌────────────────┬──────────────────────────────────────────────┐ │
│ │ Token Name │ DogWifHat (WIF) │ │
│ │ Token Address │ 7xKXtg2CW87d97TXJSDpbD5jBkhT...pump │ │
│ │ TX Hash │ 4nF8kJ... │ │
│ │ Initial Buy │ 0.5 SOL → 12,500,000 WIF │ │
│ │ Launchpad │ pump.fun │ │
│ │ Explorer │ https://solscan.io/tx/4nF8kJ... │ │
│ │ Trade Page │ https://pump.fun/7xKXtg2CW87d... │ │
│ └────────────────┴──────────────────────────────────────────────┘ │
│ │
│ Next steps: │
│ • "sell 50% WIF" — sell via onchainos swap │
│ • "buy more WIF" — buy more via onchainos swap │
│ • "check WIF" — view token info, holders, liquidity │
│ • Share the trade page link to promote your token │
└──────────────────────────────────────────────────────────────────────┘
When a user requests to launch a token, the AI Agent must follow the procedure below. Do not skip directly to launch.
Show the user the following:
一键发币 v1.0 — Multi-Launchpad Token Launch
This skill creates tokens on bonding curve launchpads with optional bundled initial buy.
Supports 6 launchpads: pump.fun, Bags.fm, LetsBonk, Moonit (Solana) + Four.Meme, Flap.sh (BSC).
IPFS metadata upload is handled automatically (pump.fun free endpoint, no API key needed).
Bundled buy creates token + initial buy in ONE atomic Jito bundle — no front-running.
All signing via onchainos Agentic Wallet (TEE) — no private keys in code.
Current: Paper Mode (DRY_RUN=True) — no real on-chain transactions.
Risk Notice: Token creation is IRREVERSIBLE. You may lose all invested capital.
| # | Launchpad | Chain | Notes |
|---|---|---|---|
| 1 | pump.fun | Solana | Largest SOL launchpad, Raydium migration, Jito MEV protection |
| 2 | Bags.fm | Solana | Fee sharing, Meteora DBC |
| 3 | LetsBonk | Solana | BONK ecosystem, Raydium migration |
| 4 | Moonit | Solana | 80% creator fee share |
| 5 | Four.Meme | BSC | Largest BSC launchpad, PancakeSwap migration |
| 6 | Flap.sh | BSC | Tax tokens, vanity addresses, PCS V3 |
If user doesn't specify → default to pump.fun.
Collect from user:
If user provides all in one message (e.g., "launch MoonDog MDOG on pump.fun, image is /tmp/dog.png"), extract directly — don't re-ask.
DRY_RUN = True
DRY_RUN = False
DRY_RUN = False in config.pyconfig.py based on user responses (launchpad, DRY_RUN mode)onchainos --version, onchainos wallet statuspip install -r requirements.txtpython3 token_launch.py (runs in background, serves at http://localhost:3245)quick_launch() — one call handles everythinghttp://localhost:3245quick_launch()One call does everything — wallet, IPFS, signing, broadcast, record-keeping:
# token_launch.py auto-adds its directory to sys.path, so just point to the skill folder:
import sys, os
sys.path.insert(0, os.path.expanduser("~/path/to/Token Launch"))
from token_launch import quick_launch
# Minimal — just name, symbol, description, image:
result = await quick_launch("MoonDog", "MDOG", "a good boy", "/path/to/dog.png")
# Full options:
result = await quick_launch(
"MoonDog", "MDOG", "a good boy", "<your-website-url>/dog.png",
launchpad="pumpfun", # pumpfun | bags | letsbonk | moonit | fourmeme | flap
buy_amount=0.1, # SOL/BNB — 0 = create only
website="https://moondog.xyz",
twitter="https://twitter.com/moondog",
telegram="https://t.me/moondog",
)
# result.success, result.token_address, result.tx_hash, result.explorer_url
Image input — accepts any of:
"/tmp/dog.png""<your-website-url>/dog.png""data:image/png;base64,iVBOR…"quick_launch() handles everything automatically:
state/launches.jsonLARK_WEBHOOK set)config.py controls all defaults:
DRY_RUN = True → simulate (no on-chain TX). Set False for real launches.DEFAULT_LAUNCHPAD = "pumpfun" → default when user doesn't specifyCONFIRM_REQUIRED = True → show confirmation before launch/api/ipfs — free, no API key needed, one call uploads image + creates Metaplex metadataPINATA_JWT env varstate/launches.jsonLARK_WEBHOOK env is set)python3 post_launch.py <token_address> --refresh 10API Base: https://pumpportal.fun
Token Creation + Buy (bundled):
POST /api/trade-local
{
"action": "create",
"tokenMetadata": {
"name": "DogWifHat",
"symbol": "WIF",
"uri": "https://gateway.pinata.cloud/ipfs/QmYyy..."
},
"mint": "<base58_mint_keypair>",
"denominatedInSol": "true",
"amount": 0.5,
"slippage": 10,
"priorityFee": 0.0001,
"pool": "pump"
}
Response: unsigned transaction bytes (with mint keypair signature embedded by PumpPortal)
Signing flow:
onchainos wallet contract-call --unsigned-tx--mev-protection uses Jito bundle for front-run protectionNotes:
/api/ipfs (free, no API key) with Pinata fallbackSDK: @bags-fm/sdk (TypeScript) — we call via REST endpoints
Flow:
POST /token-launch/create-token-info — upload metadata (name, symbol, desc, image, socials)POST /fee-share/config — create fee share config (creator BPS, optional co-earners)POST /token-launch/create-launch-transaction — create launch TX with initialBuyLamportsFee Sharing:
Notes:
SDK: @moonit/sdk (TypeScript) — Python wrapper calls SDK methods
Flow:
prepareMintTx() — builds mint transaction with token metadatasubmitMintTx() — submit signed transactionNotes:
MCP Server: bonk-mcp — or direct REST API
Flow:
Notes:
pool: "bonk" also available via PumpPortalMethod: Direct contract interaction via onchainos wallet contract-call
IMPORTANT: The agent MUST display all transaction parameters and receive explicit user confirmation (typing "confirm") BEFORE executing any contract call. Never auto-execute.
Flow:
createToken(name, symbol, metadataURI, ...)msg.value for initial buy (if buyAmount > 0)Notes:
Method: Direct contract interaction via onchainos wallet contract-call
IMPORTANT: The agent MUST display all transaction parameters and receive explicit user confirmation (typing "confirm") BEFORE executing any contract call. Never auto-execute.
Portal Contract: 0xe2cE6ab80874Fa9Fa2aAE65D277Dd6B8e65C9De0 (BNB Mainnet)
Function: newTokenV6(NewTokenV6Params)
Parameters:
name: string — Token name
symbol: string — Token symbol
meta: string — IPFS CID of metadata
dexThresh: uint8 — DEX listing threshold type
salt: bytes32 — Vanity salt (0x0 for random)
migratorType: uint8 — V2_MIGRATOR or V3_MIGRATOR
quoteToken: address — address(0) for native BNB
quoteAmt: uint256 — Initial buy amount
beneficiary: address — Tax recipient
buyTaxRate: uint16 — Buy tax (basis points)
sellTaxRate: uint16 — Sell tax (basis points)
taxDuration: uint256 — How long tax applies (seconds)
antiFarmerDuration: uint256 — Anti-dump duration (seconds)
mktBps: uint16 — Marketing allocation from tax
deflationBps: uint16 — Burn allocation from tax
dividendBps: uint16 — Dividend allocation from tax
lpBps: uint16 — LP allocation from tax
tokenVersion: uint8 — 6 (TOKEN_TAXED_V3, recommended)
Notes:
salt parameterPort: 3245
Features:
See config.py for all configurable parameters with descriptions.
User: "Launch a token called MoonCat, ticker MCAT, on pump.fun"
→ Skill collects: description, image
→ Uploads to IPFS
→ Calls PumpPortal create (buyAmount = 0)
→ Returns token address
User: "发币 CoolDog, ticker CDOG, buy 0.5 SOL"
→ Skill collects: description, image
→ Uploads to IPFS
→ Bundles: create TX + buy 0.5 SOL TX → Jito bundle
→ Returns token address + initial position
User: "Create a tax token on BSC via Flap, 5% buy tax, 3% sell tax"
→ Skill collects: name, ticker, desc, image, tax config
→ Uploads metadata to IPFS
→ Calls Flap portal newTokenV6() with tax params
→ Returns token address on BSC
User: "Launch on Bags, share 50% fees with my partner"
→ Skill collects: name, ticker, desc, image, partner address
→ Creates fee share config (creator 5000 bps, partner 5000 bps)
→ Creates launch TX
→ Returns token address + fee share config