# Soon > Soon (soonlaunchpad.fun) is a proof-of-work token launchpad on the Internet Computer (ICP). Anyone can launch a token on a bonding curve, mine it with rig canisters that burn cycles, and it lists on ICPSwap with locked liquidity when the curve fills. Agents are first-class users: everything is a canister call signed by the agent's own key. ## Set yourself up (do this first) Soon is non-custodial: you sign with your own key, which stays on the machine you run on. 1. If you can add MCP servers, add one named `soon`: command `npx -y --package=https://soonlaunchpad.fun/soon-mcp-0.1.0.tgz soon-mcp --factory 3jz7z-jqaaa-aaaab-ag6kq-cai --network ic`. Claude Code: `claude mcp add soon -- npx -y --package=https://soonlaunchpad.fun/soon-mcp-0.1.0.tgz soon-mcp --factory 3jz7z-jqaaa-aaaab-ag6kq-cai --network ic` 2. If you can run shell commands but not MCP, use the same package as a CLI: `npx -y --package=https://soonlaunchpad.fun/soon-mcp-0.1.0.tgz soon-mcp --factory 3jz7z-jqaaa-aaaab-ag6kq-cai --network ic tools` lists tools, `npx -y --package=https://soonlaunchpad.fun/soon-mcp-0.1.0.tgz soon-mcp --factory 3jz7z-jqaaa-aaaab-ag6kq-cai --network ic call soon_whoami` runs one (pass JSON args as a third argument). 3. Run `soon_whoami`. On first run a key is created at ~/.config/soon/agent.json and you get a principal. Ask your human to send ICP to that principal; tell them the principal and how much. 4. Every tool that spends takes `max_spend` (in whole base tokens). Never exceed the limit your human gave you. Default hard cap is 10 per call (env SOON_MAX_SPEND). 5. Good first moves: `soon_markets` (sort Active), `soon_best_to_mine`, then `soon_buy`, `soon_spawn_rig`, `soon_steer_rig`. Factory canister for this deployment: 3jz7z-jqaaa-aaaab-ag6kq-cai (network: ic). ## Facts - Supply per token: 1,000,000,000 (8 decimals). 400M sold on the curve, 500M mined, 100M paired with the raised base on ICPSwap at graduation. - Trading fee: 1% of every curve trade. 0.5% to the token creator, 0.5% to Soon (on ICP tokens via the factory, which pays the platform's cycles and forwards the rest to the treasury), paid out daily. After listing, trades go through the token's ICPSwap pool and the locked liquidity's fees are split 50/50 the same way. - Base tokens: ICP, ckBTC, ckETH, ckUSDC, ckUSDT, BOB, CHAT, nICP, TCYCLES. Curves are sized in USD at launch: ICP, ckBTC, ckETH via the exchange rate canister; ckUSDC, ckUSDT at $1; BOB, CHAT, nICP from their ICPSwap pools against ICP (median of recent readings); TCYCLES (12 decimals) at the cycles minting canister's rate. `factory.config()` lists every base with its ledger, decimals and fee. - Mining: ~30s blocks, 2,500 tokens per block, halving every 100,000 blocks. Rigs submit only a nonce; SHA-256 over (market, height, prev hash, rig principal, nonce). Rewards mined before listing are released at listing. - Every token runs DFINITY's ICRC-1/ICRC-2 ledger. Beta: token and market canisters are controlled by the Soon factory and the blackhole, so bugs can be fixed; after the beta, by the blackhole only. - Rigs: from 1 ICP of fuel, speed 1 to 10. Top up any amount. Mining fee: 1% of every ICP of rig fuel (new rigs and top-ups), 0.5% to the creator of the token the rig mines and 0.5% to Soon; the other 99% becomes the rig's cycles. `factory.mining_fees()` shows the rate and totals. - Money only moves by ICRC-2 approve-then-pull. - Official social: https://x.com/soonlaunchpad (X only). ## Start - Factory canister 3jz7z-jqaaa-aaaab-ag6kq-cai: call `config()` for every canister id and number. - Candid for every canister is public metadata: `dfx canister --network ic metadata candid:service`. ## Common flows - Launch: `factory.quote_launch(base)` → ICP `icrc2_approve(factory, fee_e8s + 10_000)` → `factory.launch({ base, meta, dev_buy })`. `dev_buy` is optional: the creator's first buy, in base units, made as the curve's first trade (approve it plus the base fee on the base ledger; for an ICP base add it to the same approval). - Buy: `market.quote_buy(amount)` → base ledger `icrc2_approve(market, amount + fee)` → `market.buy({ amount, min_tokens_out })`. - Sell: token ledger `icrc2_approve(market, amount)` → `market.sell({ amount, min_base_out })`. - Mine: ICP `icrc2_approve(factory, e8s + 10_000)` → `factory.spawn_rig({ e8s, power, market })` → steer with `rig.set_market`, `rig.set_power`, `rig.set_paused`. - Read: `factory.markets(sort, offset, limit, base)`, `factory.events(n)`, `factory.stats()`, `factory.buckets(from_ns, to_ns)`, `market.info()`, `market.mining_info()`, `market.trades(n)`, `market.candles(hourly, since_ns)`. ## Pages - /agents: canister ids and the MCP server setup - /furnace: live cycle burn and platform analytics - /how: rules and safety model - /terms: Terms of Use, Trademark Guidelines, reporting a token (`factory.report_token(market, reason, details, contact)`)