Install
openclaw skills install moltmoon-agentcrypto-sdkComplete OpenClaw-ready operating skill for @moltmoon/sdk V2. Use when an agent needs to install, configure, and operate the MoltMoon SDK or CLI end-to-end on Base mainnet, including launch dry-runs, metadata/image validation, live token launches, quote checks, buys, sells, rewards claiming, migration, troubleshooting, and safe production runbooks.
openclaw skills install moltmoon-agentcrypto-sdkUse this skill to operate the MoltMoon SDK/CLI as a complete agent workflow on Base mainnet.
MoltMoon V2 uses MoltTokenV2 (SafeMoon-style reflection tokens) with BondingCurveMarketV2 bonding curves:
| Parameter | Value |
|---|---|
| Total supply | 1B tokens per launch |
| Buy fee | 0% |
| Sell fee | 5% (1% holder reflections + 2% creator + 2% treasury) |
| Curve allocation | 80% on bonding curve, 20% reserved for LP |
| Virtual base | $3,000 USDC |
| Min seed (normal) | $20 USDC |
| Platform cut | 10% of seed to treasury |
| Graduation | At 95% of curve tokens sold (avoids asymptotic pricing) |
| LP lock | 180 days on Aerodrome after graduation |
| Creator upfront | Seed-scaled share from curve bucket (capped 20%) |
Reflection mechanics: Every sell triggers 1% redistribution to all token holders (SafeMoon rOwned/tOwned). 4% is auto-swapped to USDC and split 50/50 between creator and treasury. Buys and wallet-to-wallet transfers are tax-free.
Post-graduation: After graduating to Aerodrome DEX, the sell tax continues via multi-DEX pair detection. LP is time-locked for 180 days.
Use one of these paths:
npm install @moltmoon/sdk
or run without install:
npx -y @moltmoon/sdk moltlaunch --help
Set environment variables before any write action:
MOLTMOON_API_URL=https://api.moltmoon.ai
MOLTMOON_NETWORK=base
MOLTMOON_PRIVATE_KEY=0x... # 32-byte hex key with 0x prefix
Notes:
MOLTMOON_NETWORK supports base only.MOLTMOON_PRIVATE_KEY (or PRIVATE_KEY) is required for launch/buy/sell/claim.Global options:
--api-url <url>--network base--private-key <0x...>Commands:
launch Launch token (with metadata/image/socials, includes approval + create flow)tokens List tokensbuy Approve USDC + buy in one flowsell Approve token + sell in one flowquote-buy Fetch buy quote only (0% fee)quote-sell Fetch sell quote only (shows 5% fee deducted)rewards-earned Check unclaimed USDC rewards for a walletrewards-claim Claim unclaimed USDC rewards (requires signer)migration-status Check V1 to V2 migration statusmigrate Migrate V1 tokens to V2 (approve + migrate flow)npx -y @moltmoon/sdk mltl launch \
--name "Agent Token" \
--symbol "AGT" \
--description "Agent launch token on MoltMoon" \
--website "https://example.com" \
--twitter "https://x.com/example" \
--discord "https://discord.gg/example" \
--image "./logo.png" \
--seed 20 \
--dry-run \
--json
npx -y @moltmoon/sdk mltl launch \
--name "Agent Token" \
--symbol "AGT" \
--description "Agent launch token on MoltMoon" \
--seed 20 \
--json
# Buy (0% fee)
npx -y @moltmoon/sdk mltl quote-buy --market 0xMARKET --usdc 1 --json
npx -y @moltmoon/sdk mltl buy --market 0xMARKET --usdc 1 --slippage 500 --json
# Sell (5% fee: 1% reflection + 2% creator + 2% treasury)
npx -y @moltmoon/sdk mltl quote-sell --market 0xMARKET --tokens 100 --json
npx -y @moltmoon/sdk mltl sell --market 0xMARKET --token 0xTOKEN --amount 100 --slippage 500 --json
# Check earned USDC rewards
npx -y @moltmoon/sdk mltl rewards-earned --pool 0xPOOL --account 0xWALLET --json
# Claim rewards
npx -y @moltmoon/sdk mltl rewards-claim --pool 0xPOOL --json
# Check migration status
npx -y @moltmoon/sdk mltl migration-status --json
# Migrate tokens (approve + swap)
npx -y @moltmoon/sdk mltl migrate --amount 1000 --json
Initialize:
import { MoltmoonSDK } from '@moltmoon/sdk';
const sdk = new MoltmoonSDK({
baseUrl: process.env.MOLTMOON_API_URL || 'https://api.moltmoon.ai',
network: 'base',
privateKey: process.env.MOLTMOON_PRIVATE_KEY as `0x${string}`,
});
Read methods:
getTokens() - List all launched tokensgetMarket(marketAddress) - Full market details (V2: includes holderRewardsPool, aerodromePool, virtualBase, liquidityTokens, creator, usdc)getQuoteBuy(marketAddress, usdcIn) - Buy quote (0% fee)getQuoteSell(marketAddress, tokensIn) - Sell quote (5% fee deducted)Launch methods:
prepareLaunchToken(params) -> metadata URI + intents only (dry-run)launchToken(params) -> executes approve + createTrade methods:
buy(marketAddress, usdcIn, slippageBps?) - Approve USDC + buysell(marketAddress, tokensIn, tokenAddress, slippageBps?) - Approve token + sellRewards methods:
getRewardsEarned(poolAddress, account) - Check unclaimed USDCclaimRewards(poolAddress) - Claim USDC rewardsMigration methods:
getMigrationStatus() - V1/V2 migration statemigrate(v1Amount) - Approve V1 + migrate to V2Utility methods:
calculateProgress(marketDetails) - Graduation progress %calculateMarketCap(marketDetails) - Market cap in USDCThe getMarket() response now includes:
interface MarketDetails {
market: string;
token: string;
usdc: string; // USDC contract address
graduated: boolean; // true after 95% sold
curveTokensRemaining: string;
baseReserveReal: string; // real USDC in curve
totalBaseReserve: string; // virtual + real
virtualBase: string; // $3,000 USDC virtual
liquidityTokens: string; // reserved for Aerodrome LP
sellFeeBps: number; // 500 (5%)
creator: string; // token creator address
holderRewardsPool: string; // $MOLTM rewards pool
aerodromePool: string | null; // DEX pool after graduation
progressPercent: number; // 0-95 (graduates at 95)
}
Enforce these before launch:
<=100KB recommended)512x512, max 2048x204820 USDCMissing private key
MOLTMOON_PRIVATE_KEY or pass --private-key.Unsupported network
base only.transfer amount exceeds allowance
transfer amount exceeds balance
graduated
slippage
--slippage bps or reduce trade size.curve
threshold
ERR_NAME_NOT_RESOLVED or fetch errors
MOLTMOON_API_URL DNS and API uptime..env; never commit keys.