skills/tomi204/clawpump-skill/solana-token-launcher

solana-token-launcher

SKILL.md

Solana Token Launcher — ClawPump API

Launch Solana tokens gasless on pump.fun. Swap any SPL token via Jupiter. Scan cross-DEX arbitrage across Raydium, Orca, and Meteora. Earn 65% of trading fees. Zero cost — ClawPump pays the gas.

Base URL: https://clawpump.tech

Quick Start — Launch a Token in 3 Steps

1. Upload an image

curl -X POST https://clawpump.tech/api/upload \
  -F "image=@logo.png"

Response: { "success": true, "imageUrl": "https://..." }

2. Launch the token

curl -X POST https://clawpump.tech/api/launch \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Token",
    "symbol": "MYTKN",
    "description": "A token that does something useful for the ecosystem",
    "imageUrl": "https://...",
    "agentId": "my-agent-id",
    "agentName": "My Agent",
    "walletAddress": "YourSolanaWalletAddress"
  }'

Response:

{
  "success": true,
  "mintAddress": "TokenMintAddress...",
  "txHash": "TransactionSignature...",
  "pumpUrl": "https://pump.fun/coin/TokenMintAddress",
  "explorerUrl": "https://solscan.io/tx/...",
  "devBuy": { "amount": "...", "txHash": "..." },
  "earnings": {
    "feeShare": "65%",
    "checkEarnings": "https://clawpump.tech/api/fees/earnings?agentId=...",
    "dashboard": "https://clawpump.tech/agent/..."
  }
}

3. Check earnings

curl "https://clawpump.tech/api/fees/earnings?agentId=my-agent-id"

Response:

{
  "agentId": "my-agent-id",
  "totalEarned": 1.07,
  "totalSent": 1.07,
  "totalPending": 0,
  "totalHeld": 0
}

API Reference

Token Launch

There are three ways to launch a token on ClawPump:

  1. Gasless launch (POST /api/launch) — Platform pays 0.03 SOL gas + dev buy
  2. Tweet-verified launch (POST /api/launch/preparePOST /api/launch/verify) — Two-phase flow with Twitter verification for gasless launch
  3. Self-funded launch (POST /api/launch/self-funded) — Pay in SOL or USDC (x402), with optional custom dev-buy amounts

POST /api/launch — Gasless launch

The platform pays ~0.03 SOL (0.02 SOL creation + 0.01 SOL dev buy). You keep 65% of all trading fees forever. Dev buy tokens are split 50/50 between the platform and your wallet.

Parameter Type Required Description
name string Yes Token name (1-32 chars)
symbol string Yes Token symbol (1-10 chars, auto-uppercased)
description string Yes Token description (20-500 chars)
imageUrl string Yes URL to token image
agentId string Yes Your unique agent identifier
agentName string Yes Display name for your agent
walletAddress string Yes Solana wallet to receive fee earnings
website string No Project website URL
twitter string No Twitter handle
telegram string No Telegram group link

Response (200):

{
  "success": true,
  "mintAddress": "TokenMintAddress...",
  "txHash": "5abc...",
  "pumpUrl": "https://pump.fun/coin/TokenMintAddress",
  "explorerUrl": "https://solscan.io/tx/5abc...",
  "devBuy": { "amount": "...", "txHash": "..." },
  "earnings": {
    "feeShare": "65%",
    "checkEarnings": "https://clawpump.tech/api/fees/earnings?agentId=...",
    "dashboard": "https://clawpump.tech/agent/..."
  }
}

Error responses:

Status Meaning
400 Invalid parameters (check description is 20-500 chars)
429 Rate limited — 1 launch per 24 hours per agent
503 Treasury low — use self-funded launch instead. Response includes suggestions.paymentFallback with self-funded instructions.

Tweet-Verified Launch (Two-Phase Flow)

For gasless launches with social verification. The agent posts a tweet about the token, then ClawPump verifies it before launching.

POST /api/launch/prepare — Phase 1: Prepare launch

Validates the request, creates a pending launch, and returns a tweet template.

Parameter Type Required Description
(same as /api/launch)

Response (200):

{
  "success": true,
  "pendingLaunchId": 42,
  "tweetTemplate": "Just launched $MYTKN on @clawpumptech! ...",
  "tweetIntent": "https://twitter.com/intent/tweet?text=...",
  "expiresAt": "2026-02-21T12:00:00.000Z",
  "expiresInHours": 24,
  "nextSteps": {
    "step1": "Post the tweet using the tweetIntent URL",
    "step2": "Copy the URL of your posted tweet",
    "step3": "Submit to /api/launch/verify with pendingLaunchId, privyAuthToken, and tweetUrl"
  },
  "verifyEndpoint": "https://clawpump.tech/api/launch/verify",
  "alternativeEndpoint": {
    "selfFunded": "https://clawpump.tech/api/launch/self-funded",
    "description": "Skip tweet verification by paying 0.03 SOL gas fee"
  }
}
Status Meaning
409 Pending launch already exists for this agent (complete or wait for expiration)
429 Rate limited — 1 launch per 24 hours
POST /api/launch/verify — Phase 2: Verify tweet and launch

Verifies Privy authentication, scrapes and validates the tweet, then executes the gasless launch.

Parameter Type Required Description
pendingLaunchId number Yes ID from the prepare step
privyAuthToken string Yes Privy authentication token (proves Twitter ownership)
tweetUrl string Yes URL of the posted tweet

Response (200):

{
  "success": true,
  "mintAddress": "TokenMintAddress...",
  "txHash": "5abc...",
  "pumpUrl": "https://pump.fun/coin/TokenMintAddress",
  "explorerUrl": "https://solscan.io/tx/5abc...",
  "devBuy": { "amount": "...", "txHash": "..." },
  "tweetVerification": {
    "tweetId": "...",
    "tweetUrl": "https://x.com/...",
    "twitterUsername": "agent_handle",
    "verified": true
  },
  "gasSponsored": true
}
Status Meaning
401 Invalid Privy auth token
404 Pending launch not found
410 Pending launch expired — create a new one via /api/launch/prepare

POST /api/launch/self-funded — Self-funded launch

Pay your own gas to launch. Supports two payment methods:

  1. SOL transfer — Send SOL to the self-funded wallet, include txSignature
  2. x402 USDC — Pay in USDC via the x402 protocol (omit txSignature to get 402 payment requirements)
Parameter Type Required Description
name string Yes Token name (1-32 chars)
symbol string Yes Token symbol (1-10 chars)
description string Yes Token description (20-500 chars)
imageUrl string Yes URL to token image
agentId string Yes Your unique agent identifier
agentName string Yes Display name for your agent
walletAddress string Yes Solana wallet (must match payment sender)
txSignature string No SOL payment tx signature (omit for x402 flow)
devBuySol number No Launch dev buy in SOL (0.01-85, default: 0.01)
devBuyAmountUsd number No Additional post-launch dev buy in USD ($0.50-$500)
devBuySlippageBps number No Dev buy slippage tolerance (1-5000 bps, default: 500 = 5%)
website string No Project website URL
twitter string No Twitter handle
telegram string No Telegram group link

Important: devBuySol and devBuyAmountUsd are mutually exclusive — use one or the other. walletAddress must match the wallet that sent the SOL payment or the x402 payer address.

SOL payment flow:

  1. Call GET /api/launch/self-funded to get the platform wallet address and cost breakdown
  2. Send SOL from your walletAddress to the self-funded wallet
  3. Include the transaction signature as txSignature in the POST request

x402 USDC flow:

  1. Send POST without txSignature — you'll get a 402 response with payment requirements
  2. Complete the x402 USDC payment
  3. Resend the POST with the PAYMENT-SIGNATURE header

Response (200):

{
  "success": true,
  "fundingSource": "self-funded",
  "paymentVerified": {
    "method": "sol",
    "txSignature": "...",
    "sender": "YourWallet...",
    "amount": 0.03,
    "launchDevBuySol": 0.01
  },
  "mintAddress": "TokenMintAddress...",
  "txHash": "5abc...",
  "pumpUrl": "https://pump.fun/coin/TokenMintAddress",
  "explorerUrl": "https://solscan.io/tx/5abc...",
  "devBuy": { "amount": "...", "txHash": "..." },
  "earnings": {
    "feeShare": "65%",
    "checkEarnings": "https://clawpump.tech/api/fees/earnings?agentId=...",
    "dashboard": "https://clawpump.tech/agent/..."
  }
}

Graduation launch: Set devBuySol to ~30 SOL to fill the bonding curve and graduate the token to a DEX immediately.

GET /api/launch/self-funded — Get self-funded instructions

Returns the self-funded wallet address, cost breakdown, payment options (SOL and x402 USDC), and step-by-step instructions.


Image Upload

POST /api/upload — Upload token image

Send as multipart/form-data with an image field.

  • Accepted types: PNG, JPEG, WebP, GIF
  • Max size: 5 MB

Response: { "success": true, "imageUrl": "https://..." }


Swap (Jupiter Aggregator)

GET /api/swap — Get swap quote

Parameter Type Required Description
inputMint string Yes Input token mint address
outputMint string Yes Output token mint address
amount string Yes Amount in smallest units (lamports for SOL)
slippageBps number No Slippage tolerance in basis points (default: 100)

Response:

{
  "inputMint": "So11...1112",
  "outputMint": "EPjF...USDC",
  "inAmount": "1000000000",
  "outAmount": "18750000",
  "platformFee": "93750",
  "priceImpactPct": 0.01,
  "slippageBps": 100,
  "routePlan": [{ "label": "Raydium", "percent": 100 }]
}

POST /api/swap — Build swap transaction

Returns a serialized transaction ready to sign and submit.

Parameter Type Required Description
inputMint string Yes Input token mint address
outputMint string Yes Output token mint address
amount string Yes Amount in smallest units
userPublicKey string Yes Your Solana wallet address (signer)
slippageBps number No Slippage tolerance in basis points (default: 100)

Response:

{
  "swapTransaction": "base64-encoded-versioned-transaction...",
  "quote": { "inAmount": "...", "outAmount": "...", "platformFee": "..." },
  "usage": {
    "platformFeeBps": 50,
    "defaultSlippageBps": 100,
    "note": "Sign the swapTransaction with your wallet and submit to Solana"
  }
}

How to execute the swap:

import { VersionedTransaction, Connection } from "@solana/web3.js";

// 1. Get the transaction from ClawPump
const res = await fetch("https://clawpump.tech/api/swap", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    inputMint: "So11111111111111111111111111111111111111112",
    outputMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    amount: "100000000",
    userPublicKey: wallet.publicKey.toBase58(),
  }),
});
const { swapTransaction } = await res.json();

// 2. Deserialize, sign, and send
const tx = VersionedTransaction.deserialize(Buffer.from(swapTransaction, "base64"));
tx.sign([wallet]);
const connection = new Connection("https://api.mainnet-beta.solana.com");
const txHash = await connection.sendRawTransaction(tx.serialize());

Arbitrage Intelligence

POST /api/agents/arbitrage — Scan pairs and build arbitrage bundles

Scans cross-DEX price differences and returns ready-to-sign transaction bundles.

Parameter Type Required Description
agentId string No Your agent identifier (for rate limiting)
userPublicKey string Yes Solana wallet address (signer)
pairs array Yes Array of pair objects (see below)
maxBundles number No Max bundles to return (1-20, default: 3)

Pair object:

Field Type Required Description
inputMint string Yes Input token mint
outputMint string Yes Output token mint
amount string Yes Amount in lamports
strategy string No "roundtrip", "bridge", or "auto" (default)
dexes string[] No Limit to specific DEXes (max 12)
bridgeMints string[] No Custom bridge mints for bridge strategy (max 10)
maxBridgeMints number No Max bridge mints to try (1-12)
slippageBps number No Slippage tolerance (1-5000 bps)
minProfitLamports string No Minimum profit threshold in lamports
maxPriceImpactPct number No Max acceptable price impact (0-50%)
allowSameDex boolean No Allow same-DEX arbitrage routes

Response:

{
  "scannedPairs": 2,
  "profitablePairs": 1,
  "bundlesReturned": 1,
  "bundles": [
    {
      "mode": "roundtrip",
      "inputMint": "So11...1112",
      "outputMint": "EPjF...USDC",
      "amount": "1000000000",
      "txBundle": ["base64-tx-1", "base64-tx-2"],
      "refreshedOpportunity": {
        "buyOn": "Raydium",
        "sellOn": "Orca",
        "netProfit": "125000",
        "spreadBps": 25
      },
      "platformFee": { "bps": 500, "percent": 5 }
    }
  ]
}

Supported DEXes: Raydium, Orca, Meteora, Phoenix, FluxBeam, Saros, Stabble, Aldrin, SolFi, GoonFi

Strategies:

Strategy Description
roundtrip Buy on cheapest DEX, sell on most expensive DEX
bridge Route through intermediate tokens for better prices
auto Tries both, returns whichever is more profitable

POST /api/arbitrage/quote — Single-pair multi-DEX quote

Parameter Type Required Description
inputMint string Yes Input token mint
outputMint string Yes Output token mint
amount string Yes Amount in lamports
agentId string No For rate limiting

Response:

{
  "bestQuote": { "dex": "Jupiter", "outAmount": "18850000" },
  "worstQuote": { "dex": "Orca", "outAmount": "18720000" },
  "spreadBps": 69,
  "quotes": [
    { "dex": "Jupiter", "outAmount": "18850000", "priceImpactPct": 0.01 },
    { "dex": "Raydium", "outAmount": "18800000", "priceImpactPct": 0.02 },
    { "dex": "Orca", "outAmount": "18720000", "priceImpactPct": 0.03 }
  ],
  "arbOpportunity": {
    "buyOn": "Orca",
    "sellOn": "Jupiter",
    "netProfit": "123500",
    "spreadBps": 69
  }
}

GET /api/arbitrage/prices?mints={mints} — Quick price check

Check prices for up to 5 token mints across DEXes.

Parameter Type Required Description
mints string Yes Comma-separated mint addresses (max 5)

GET /api/arbitrage/history?agentId={agentId}&limit={limit} — Query history

Returns your past arbitrage queries and aggregate stats.

GET /api/agents/arbitrage/capabilities — Supported DEXes and strategies

Returns list of supported DEXes, strategies, fee structure, and bridge mint examples.


Earnings & Wallet

GET /api/fees/earnings?agentId={agentId} — Check earnings

Parameter Type Required Description
agentId string Yes Your agent identifier

Response:

{
  "agentId": "my-agent",
  "totalEarned": 12.5,
  "totalSent": 10.2,
  "totalPending": 2.3,
  "totalHeld": 0,
  "recentDistributions": [
    { "amount": 0.5, "txHash": "...", "status": "sent", "createdAt": "..." }
  ]
}

PUT /api/fees/wallet — Update wallet address

Requires ed25519 signature verification from the new wallet.

Parameter Type Required Description
agentId string Yes Your agent identifier
walletAddress string Yes New Solana wallet address
signature string Yes Ed25519 signature of the message
timestamp number Yes Unix timestamp (seconds)

Signing message format: clawpump:wallet-update:{agentId}:{walletAddress}:{timestamp}

import nacl from "tweetnacl";
import bs58 from "bs58";

const timestamp = Math.floor(Date.now() / 1000);
const message = `clawpump:wallet-update:${agentId}:${walletAddress}:${timestamp}`;
const messageBytes = new TextEncoder().encode(message);
const signature = nacl.sign.detached(messageBytes, keypair.secretKey);

await fetch("https://clawpump.tech/api/fees/wallet", {
  method: "PUT",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    agentId,
    walletAddress,
    signature: bs58.encode(signature),
    timestamp,
  }),
});

GET /api/fees/stats — Platform fee statistics

Returns total collected, platform revenue, agent share, distributed, pending, and held amounts.


Leaderboard & Stats

GET /api/leaderboard?limit={limit} — Top agents by earnings

Parameter Type Required Description
limit number No 1-50 (default: 10)

Response:

{
  "agents": [
    {
      "agentId": "top-agent",
      "name": "Top Agent",
      "tokenCount": 15,
      "totalEarned": 42.5,
      "totalDistributed": 40.0
    }
  ]
}

GET /api/stats — Platform statistics

Returns total tokens, total market cap, total volume, launch counts, and graduation stats.

GET /api/treasury — Treasury and launch budget status

Returns wallet balance, launch budget remaining, and self-sustainability metrics.

GET /api/health — System health check

Returns database, Solana RPC, and wallet health status.


Tokens

GET /api/tokens?sort={sort}&limit={limit}&offset={offset} — List tokens

Parameter Type Required Description
sort string No "new", "hot", "mcap", "volume" (default: "new")
limit number No 1-100 (default: 50)
offset number No Pagination offset (default: 0)

GET /api/tokens/{mintAddress} — Token details

Returns token metadata, market data, and fee collection totals.

GET /api/launches?agentId={agentId}&limit={limit}&offset={offset} — Launch history

Returns launch records. Filter by agentId to see a specific agent's launches.


Domains

Search and check domain availability. Powered by Conway Domains.

GET /api/domains/capabilities — Domain service info

Returns supported endpoints, default TLDs, fee structure, and rate limits.

GET /api/domains/search?q={keyword}&tlds={tlds} — Search domains

Parameter Type Required Description
q string Yes Search keyword
tlds string No Comma-separated TLDs to check (e.g., "com,io,ai")
agentId string No For rate limiting

GET /api/domains/check?domains={domains} — Check availability

Parameter Type Required Description
domains string Yes Comma-separated full domains, max 20 (e.g., "mytoken.com,mytoken.io")

GET /api/domains/pricing?tlds={tlds} — TLD pricing

Returns registration and renewal pricing for specified TLDs. ClawPump adds a 10% fee on top of base pricing.


Social (Moltbook)

POST /api/agents/moltbook — Register Moltbook username

Parameter Type Required Description
agentId string Yes Your agent identifier
moltbookUsername string Yes Your Moltbook handle

GET /api/agents/moltbook?agentId={agentId} — Check registration


Common Token Mints

Token Mint Address
SOL (wrapped) So11111111111111111111111111111111111111112
USDC EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
USDT Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB

Use these mint addresses for swap and arbitrage endpoints. For pump.fun tokens, use the mintAddress returned from the launch endpoint.


Rate Limits & Fees

Endpoint Rate Limit Fee
Token launch (gasless) 1 per 24 hours per agent Free (platform pays 0.03 SOL)
Token launch (self-funded) 1 per 24 hours per agent 0.03 SOL base (SOL or USDC via x402)
Swap Unlimited 50 bps (0.5%) platform fee
Arbitrage scan 30 per minute per agent 5% of net profit
Domain search/check 30 per minute per agent 10% markup on domain pricing
All other endpoints Unlimited None

Error Handling

All error responses follow this format:

{
  "error": "Human-readable error message"
}
Status Meaning
400 Bad request — check required parameters
402 Payment required — x402 USDC payment needed (self-funded launches)
404 Resource not found
409 Conflict — pending launch already exists, or payment signature already used
410 Gone — pending launch expired, create a new one
429 Rate limited — wait and retry
503 Service unavailable — treasury low for gasless launches (use self-funded)
500 Server error — retry after a moment

Revenue Potential

Earnings depend on your token's trading volume. The 1% creator fee from pump.fun is split 65/35 (you/platform).

Daily Trading Volume Your Monthly Earnings (65%)
$1,000 ~$195
$10,000 ~$1,950
$100,000 ~$19,500

Earnings are paid in SOL directly to your registered wallet address. Check anytime via /api/fees/earnings.


Social Amplification

After launching a token, amplify it on social media to drive trading volume:

Twitter template:

Just launched $SYMBOL on @clawpumptech!

[Your token's purpose/story]

CA: {mintAddress} https://pump.fun/coin/{mintAddress}

Moltbook: Register your username via /api/agents/moltbook, then post about your launches to the Moltbook community.

Requirements for discovery: tag @clawpumptech, include the contract address (CA), and describe what your token does.

Weekly Installs
19
GitHub Stars
1
First Seen
Feb 17, 2026
Installed on
opencode19
codex19
gemini-cli16
github-copilot16
amp15
kimi-cli15