# Ask CLAWD to launch on Pump.fun

Email an enabled CLAWD inbox with the exact coin name, symbol, description and a PNG, JPEG or WebP coin image (up to 3 MB). You can provide a published HTTPS/IPFS metadata JSON URI instead. CLAWD asks for missing details and returns an owner review link. A requested generated image can also become the coin image.

The signed-in, approved mailbox owner opens **Account → Launch on Pump.fun**, creates their Privy launch wallet, funds it with SOL, and selects the request. **Review transaction** simulates the official Pump SDK `create_v2` transaction and shows the mint, creator fee wallet and estimated cost. The owner checks the approval box and chooses **Approve and launch** within the 45-second review window. An expired review requires a new transaction and new approval.

This flow creates a standard SOL-paired Token-2022 coin. No initial buy, mayhem, cashback or holder rewards are enabled. The wallet is server-managed by this installation through Privy's authorization key; it is not the user's existing external wallet. The creator fee recipient is the launch wallet. Every launch has a 0.05 SOL cost ceiling, including rent/network costs; the exact transaction is simulated again before signing.

Email cannot authorize wallet spending. Any human sender can request a draft, while only the signed-in owner of the receiving inbox can approve it. Preparation publishes image/description metadata to Pump.fun's IPFS upload service. Drafts and receipts remain private in PostgreSQL. No mint secret is persisted: only the mint-signed transaction is saved. Privy signs the payer after the atomic approval claim; all signatures and the unchanged transaction message are verified before broadcast.

The signed wire and public signature are saved before broadcast. Concurrent approvals can claim a launch once. Network uncertainty stays `submitted`; refresh checks the same signature without making another coin. Confirmed success and error outcomes remain submitted until finalized. The UI shows a Pump.fun coin link only after a successful finalized transaction matching the exact reviewed message and saved signature, with finalized Token-2022 mint/Pump bonding-curve accounts. Successful receipts have `state: confirmed` and `confirmationStatus: finalized`. A fresh approval also rejects costs above the displayed review estimate.

After finalized block height passes the transaction expiry, refresh atomically fences an interrupted signer. An unconfirmed submission can expire only after repeated empty status-history reads and an empty transaction-history read; its saved signature stays available for inspection. Neither recovery path rebroadcasts. Requests with a stable request ID reject different coin details or image contents under that same ID.

Launch, fee, agent research, and public wallet RPC calls share a bounded transport for each configured endpoint per process: eight active requests, at most 64 queued requests, a five-second queue deadline, a 20-second provider deadline, and a 4 MB response limit. Individual research tools also retain their shorter deadlines and 2 MB JSON limit. Provider rate limits retain a bounded Retry-After cooldown without automatic retries. A primary endpoint cooldown does not block a separately configured read-only fallback. Approved account identities receive separate launch/claim request budgets, allowing people behind the same network address to use their own allowance. Multiple replicas require sizing the aggregate RPC concurrency to the purchased provider plan.

Launch owners can collect earned fees in **Account → Claim creator fees**. The page includes wallet-wide vault balances plus retained curve/pool fees before and after PumpSwap migration, with a separate owner-approved claim transaction. See [creator fee claims](CREATOR-FEES.md).

## Server setup

Use ignored `backend/.env.launch.local` with mode `0600`, or private Railway service variables:

```dotenv
PRIVY_APP_ID=
PRIVY_APP_SECRET=
PRIVY_KEY_ID=
PRIVY_PRIVATE_KEY=wallet-auth:...
```

The authorization key must be P-256 and match the configured one-key Privy quorum. Configure the server-only default Solana RPC with `HELIUS_RPC_URL`, or `HELIUS_API_KEY` when the URL is absent; launch and creator-fee connections use this resolved default. `SOLANA_RPC_URL` and `SOLANA_BACKUP_RPC_URL` remain configured fallbacks for read-only research. `DATABASE_URL` and `APP_ORIGIN` are also required. The web service and mail worker share the same values and database. Run `npm run db:setup`; both processes also apply the idempotent launch migration at startup. Do not copy these credentials into OpenDots or browser variables. OpenDots keeps its own existing Privy sign-in app.

## OpenDots connection

In the launch panel, choose your inbox and open **Ask CLAWD from OpenDots**. Generate a connection key and copy it once. In your OpenDots Dot settings, add a connection named **CLAWD Mail Launch** with the displayed MCP URL and bearer token. The endpoint is `/api/launch-mcp`. It exposes `prepare_pump_launch`, `get_pump_launch`, and `list_pump_launches`; it has no wallet signing or approval tools. `prepare_pump_launch` requires a published metadata URI. Use a stable UUID `requestId` for idempotent retries. Revoking launch connection keys or account/inbox access invalidates the connector.

The existing OpenDots Connections review card approves draft creation; the subsequent CLAWD Mail review approves the actual launch transaction. The connector is scoped to one inbox and cannot select an arbitrary owner or wallet.

## Verification

`npm run mail:test` covers input limits, exact real-SDK instruction generation, account/inbox isolation, review hashes and expiry, cost ceilings, changed signatures, concurrent approvals, network ambiguity, chain errors, and preparation-only MCP/email tools. `node scripts/verify-pump-launch.cjs` checks the actual Vue flow at desktop and mobile sizes using isolated endpoints. These fixture checks do not prove a funded mainnet launch.

Use [owner onchain acceptance](ONCHAIN-ACCEPTANCE.md) for the funded launch/payout review and required saved finalized evidence.

Primary references: [supplied coin creation documentation](../../../pump-public-docs-main/docs/instructions/COIN_CREATION.md), [official Pump.fun instructions](https://github.com/pump-fun/pump-public-docs/blob/main/docs/instructions/COIN_CREATION.md), [Privy wallet creation](https://docs.privy.io/api-reference/wallets/create), and [Solana transaction signing](https://docs.privy.io/wallets/using-wallets/solana/sign-a-transaction).
