{
  "schemaVersion": "1.0",
  "item": {
    "slug": "sur-pub",
    "name": "Sur",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/nkhromovweway/sur-pub",
    "canonicalUrl": "https://clawhub.ai/nkhromovweway/sur-pub",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/sur-pub",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=sur-pub",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/sur-pub"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/sur-pub",
    "agentPageUrl": "https://openagent3.xyz/skills/sur-pub/agent",
    "manifestUrl": "https://openagent3.xyz/skills/sur-pub/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/sur-pub/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "SURGE OpenClaw — AI Agent Skill (Dev)",
        "body": "This is the DEV skill. API base URL: https://back.surgedevs.xyz. Use this for development and testing.\n\nYou are helping the user create and trade tokens on the SURGE launchpad. This document tells you everything you need to know. Follow it step by step."
      },
      {
        "title": "TL;DR — What This Skill Does",
        "body": "User can create a token on EVM (Base) or Solana — for free (one time)\nAfter creation, user can buy and sell tokens — both pre-DEX (bonding curve / launchpad) and post-DEX (Aerodrome on Base / Raydium CPMM on Solana)\nTrading auto-routes by token phase — same endpoints work for both pre-DEX and post-DEX\nAll wallets are server-managed — no private keys needed from user\nYou (the AI agent) handle the entire process through API calls"
      },
      {
        "title": "Before You Start — Checklist",
        "body": "Before doing anything, make sure you have:\n\n#WhatHow to check1API KeyUser gives you a key starting with sk-surge-.... If they don't have one — see \"How to Get an API Key\" below.2Working APICall GET /openclaw/launch-info. If 401 — key is bad. If 200 — you're good."
      },
      {
        "title": "How to Get an API Key",
        "body": "If the user doesn't have an API key yet, tell them exactly this:\n\nTo get your API key (DEV):\n\nGo to app.surgedevs.xyz\nSign up / log in (you can use your wallet, email, or social login)\nGo to Settings → API Keys\nClick Generate and give it a name (e.g. \"My Agent\")\nCopy the key immediately — it's shown only once!\nGive the key to me and I'll handle everything from here\n\nYou can have up to 5 active keys. If you lose one, revoke it and create a new one.\n\nOnce you have the key, proceed to Step 0."
      },
      {
        "title": "Step 0: Load Configuration (do this silently)",
        "body": "Call this before talking to the user about tokens:\n\nGET /openclaw/launch-info\nHeader: X-API-Key: {key}\nBase URL: https://back.surgedevs.xyz\n\nThis gives you live data — fees, chains, categories. Never hardcode these values.\n\nYou now know:\n\nWhich chains are available and their fees\nminBalance — how much the wallet needs\nAvailable categories for tokens\nFile size limits\n\nIf this fails with 401 — tell the user their API key is invalid and point them to app.surgedevs.xyz → Settings → API Keys."
      },
      {
        "title": "Step 1: Create a Wallet",
        "body": "The user needs a server-managed wallet. One wallet per chain type (EVM or Solana).\n\nFor EVM (Base, BNB):\n\nPOST /openclaw/wallet/create\nHeader: X-API-Key: {key}\n\nFor Solana:\n\nPOST /openclaw/wallet/create-solana\nHeader: X-API-Key: {key}\n\nResponse:\n\n{\n  \"walletId\": \"vun3srwayi6z1h8momm83tdr\",\n  \"address\": \"0xD29c...Be2E\",\n  \"chainType\": \"EVM\",\n  \"needsFunding\": true,\n  \"isNew\": true\n}\n\nSave walletId — you'll need it for everything\nIf isNew: false — wallet already existed, that's fine\nThe wallet is linked to the user's account\n\nTell the user:\n\nI've created a server-managed wallet for you. No private keys to worry about — everything is handled securely on our side."
      },
      {
        "title": "Step 2: Fund the Wallet (ONE TIME FREE)",
        "body": "Important rule: The platform funds each wallet exactly ONCE for free. This covers the gas + minimum buy for the first token launch. After that, the user pays for everything themselves.\n\nPOST /openclaw/wallet/{walletId}/fund\nHeader: X-API-Key: {key}\n\nIf successful (needsFunding: false):\n\nYour wallet has been funded! You get one free token launch from SURGE — gas and fees are covered.\n\nIf already funded (second call):\n\nThis wallet was already funded. The free launch is a one-time gift. If you need more funds (for trading, etc.), send ETH/SOL directly to your wallet address: {address}\n\nIf funding fails (e.g. platform funder is low):\n\nAutomatic funding didn't go through right now. You can either:\n\nTry again in a few minutes\nSend funds manually to your wallet address: {address} on the Base network\n\nThe minimum balance needed is {minBalance} (from launch-info)."
      },
      {
        "title": "Step 3: Check Balance",
        "body": "GET /openclaw/wallet/{walletId}/balance\nHeader: X-API-Key: {key}\n\nResponse includes sufficient: true/false and minRequired per chain.\n\nIf sufficient: true — proceed to token creation.\n\nIf sufficient: false — tell the user:\n\nYour wallet balance is {balance} but you need at least {minRequired}. Please send {minRequired - balance} to your wallet address: {address} on {chain}."
      },
      {
        "title": "Step 4: Collect Token Information",
        "body": "Now collect what's needed to launch the token. Ask one group at a time. Don't dump everything at once."
      },
      {
        "title": "4a. Name, Ticker, Description (REQUIRED)",
        "body": "Ask:\n\nLet's create your token! I need three things to start:\n\nToken name — the full name (e.g. \"NeuralNet Token\")\nTicker — short symbol, 3-5 letters (e.g. \"NNET\")\nDescription — one sentence about what the token is for (e.g. \"Decentralized AI compute marketplace\")\n\nRules:\n\nIf user gives only a ticker — ask for the full name\nIf user gives a paragraph as description — say: \"Great, I'll use that as the detailed description. Can you give me a one-liner tagline too?\"\nNever make up names, tickers, or descriptions yourself"
      },
      {
        "title": "4b. Logo Image (REQUIRED)",
        "body": "Ask:\n\nNow I need a logo for your token. Send me a direct link to an image file (PNG, JPG, or WEBP, max 5MB).\n\nHow to get a direct image link:\n\nIf the user has a file on their computer, tell them:\n\nUpload your image to get a direct link. The easiest way:\ncurl -F \"file=@your-logo.png\" https://file.io\n\nThis will give you a direct URL. Send it to me!\nOther options:\n\nimgur.com → upload → right-click image → \"Copy image address\" (must start with i.imgur.com)\npostimages.org → upload → copy \"Direct link\"\nAny public URL that ends in .png / .jpg / .webp\n\nValidate before accepting:\n\nURL must start with http:// or https://\nMust be a direct file link, not a gallery page\n\nGOOD: https://i.imgur.com/abc123.png, https://file.io/abc123\nBAD: https://imgur.com/abc123 (gallery page)\nBAD: https://drive.google.com/file/d/... (preview page, not direct)"
      },
      {
        "title": "4c. Chain (REQUIRED)",
        "body": "Build this question from launch-info data:\n\nWhich blockchain do you want to launch on?\nAvailable:\n\nBase (EVM) — fee: {fee} ETH\nSolana — fee: {fee} SOL\n\nBase is recommended for most projects. Solana is great for high-speed, low-cost trading.\n\nMap the user's choice to the correct chainId from launch-info. The user should never see raw IDs.\n\nThis determines everything else:\n\nEVM → use /launch, needs ethAmount\nSolana → use /launch-solana, needs preBuyAmount"
      },
      {
        "title": "4d. Initial Buy Amount (REQUIRED)",
        "body": "If EVM chain:\n\nAsk:\n\nHow much ETH do you want for the initial buy? This buys the very first tokens when your contract launches.\n\nMinimum: slightly more than {fee} ETH (the contract fee)\nRecommended: {fee × 2} ETH for a good start\nThis determines the starting price — bigger amount = higher starting price\n\nUser saysWhat to doLess than or equal to fee\"The contract fee is {fee} ETH. Your amount must be higher. I'd recommend {fee × 2}.\"Reasonable (0.01–1 ETH)AcceptVery large (10+ ETH)\"That's {amount} ETH — are you sure?\"\n\nIf Solana chain:\n\nFirst ask which currency:\n\nWhich currency do you want for your token's fundraising pool?\n\nSOL (default) — fundraising goal: 85 SOL. Your initial buy is in SOL.\nUSD1 (stablecoin) — fundraising goal: 12,500 USD1. Your initial buy is in USD1.\n\nMost projects use SOL. USD1 is for stablecoin-based pools.\n\nThen ask for the amount:\n\nHow much {SOL/USD1} for the initial buy? Even a small amount like 0.01 works.\n\nImportant about funding:\n\nIf user picks SOL — the one-time free funding covers platform fee + gas + min preBuy. They're ready to go.\nIf user picks USD1 — the free funding only covers SOL (for platform fee + gas). The user must have USD1 tokens in their wallet for the initial buy. Tell them:\n\nSince you chose USD1, you'll need USD1 tokens in your Solana wallet for the initial buy. The platform covers SOL fees, but USD1 you provide yourself. Send USD1 to your wallet address: {address}"
      },
      {
        "title": "4e. Category (OPTIONAL — but suggest it)",
        "body": "Based on what the user already told you, suggest 2-3 matching categories:\n\nBased on your description, this sounds like an AI project. Should I set the category to ai? Or is it more defi / infrastructure?\n\nAvailable categories: ai, infrastructure, meme, rwa, defi, privacy, derivatives, gamefi, robotics, depin, desci, healthcare, education, socialfi\n\nDon't list all 14. Just suggest the best 2-3 matches."
      },
      {
        "title": "4f. Optional Extras",
        "body": "Ask once:\n\nWant to add any extras? All optional — you can add them later on app.surgedevs.xyz:\n\nBanner image (wide header, 1200×400 ideal)\nDetailed description (markdown supported)\nPitch deck or whitepaper (PDF, up to 100MB)\nSocial links (website, Twitter/X, Telegram, Discord, GitHub)\nTeam description\n\nIf user says \"no\" / \"skip\" — move to confirmation.\n\nFor files (banner, pitch deck, whitepaper) — same upload process:\n\nUpload your file to get a link:\ncurl -F \"file=@your-file.pdf\" https://file.io\n\nConvert social handles automatically:\n\n@neuralnet → https://x.com/neuralnet\nt.me/neuralnet → https://t.me/neuralnet\ndiscord.gg/abc → https://discord.gg/abc"
      },
      {
        "title": "Step 5: Confirm Before Launch",
        "body": "ALWAYS show a summary. ALWAYS wait for explicit \"yes\".\n\nHere's your token ready to launch:\nToken: {name} ({ticker})\nDescription: {description}\nCategory: {category or \"not set\"}\nChain: {chainName}\nInitial buy: {ethAmount} ETH (chain fee: {fee} ETH)\nLogo: {logoUrl}\nWallet: {walletId}\n{any other filled fields}\nThis is irreversible. Once launched, the token goes live immediately.\nReady to launch? (yes/no)\n\nOnly proceed after explicit \"yes\" / \"go\" / \"launch\" / \"do it\"\nIf user says \"change X\" — update that field and show summary again"
      },
      {
        "title": "Step 6: Launch",
        "body": "EVM:\n\nPOST /openclaw/launch\nHeader: X-API-Key: {key}\nContent-Type: application/json\n\n{\n  \"name\": \"NeuralNet Token\",\n  \"ticker\": \"NNET\",\n  \"description\": \"Decentralized AI compute marketplace\",\n  \"logoUrl\": \"https://i.imgur.com/abc123.png\",\n  \"chainId\": \"CHAIN_ID_FROM_LAUNCH_INFO\",\n  \"walletId\": \"YOUR_WALLET_ID\",\n  \"ethAmount\": \"0.01\"\n}\n\nSolana:\n\nPOST /openclaw/launch-solana\nHeader: X-API-Key: {key}\nContent-Type: application/json\n\n{\n  \"name\": \"NeuralNet Token\",\n  \"ticker\": \"NNET\",\n  \"description\": \"Decentralized AI compute marketplace\",\n  \"logoUrl\": \"https://i.imgur.com/abc123.png\",\n  \"chainId\": \"SOLANA_CHAIN_ID_FROM_LAUNCH_INFO\",\n  \"walletId\": \"YOUR_SOLANA_WALLET_ID\",\n  \"preBuyAmount\": \"0.5\"\n}"
      },
      {
        "title": "Step 7: After Launch",
        "body": "EVM success — tell the user:\n\nYour token {name} ({ticker}) is live!\nTransaction: https://basescan.org/tx/{txHash}\nView on SURGE (DEV): https://app.surgedevs.xyz\nIt may take a minute to appear on the platform. Your token is now trading on the bonding curve — anyone can buy and sell!\n\nSolana success:\n\nYour token {name} ({ticker}) is live!\nTransaction: https://solscan.io/tx/{signature}\nToken: https://solscan.io/token/{mint}\nView on SURGE (DEV): https://app.surgedevs.xyz\nYour token is now trading on the Raydium launchpad!"
      },
      {
        "title": "Error Handling — What to Tell the User",
        "body": "When something goes wrong, don't show raw errors. Translate them:\n\nError containsWhat to say\"image\" or \"download\"\"I couldn't download your logo. Make sure it's a direct link to an image file, not a gallery page. Try uploading to file.io: curl -F 'file=@logo.png' https://file.io\"\"explicit\"\"Your image was flagged as inappropriate. Please use a different image.\"\"fee\" or \"ethAmount\"\"The amount is too low. The current fee on {chain} is {fee} — your amount must be higher. Try {fee × 2}.\"\"not a Solana wallet\"\"You're using an EVM wallet for Solana. Let me create a Solana wallet for you.\" → Call /wallet/create-solana\"Wallet not found\"\"That wallet doesn't exist. Let me create a new one for you.\" → Call /wallet/create\"already funded\"\"Your wallet was already funded with the free launch. For more funds, send to your wallet address: {address}\"\"insufficient funds\"\"Your wallet doesn't have enough balance. Send at least {minBalance} to {address} on {chain}.\"\"not on bonding curve\"\"This token has graduated to the DEX. Don't worry — our API handles DEX trading automatically. Try your buy/sell again.\"\"arithmetic underflow\"\"The sell amount is too large for the current pool. Try selling a smaller amount.\"\"Daily funding limit\"\"Platform funding is temporarily unavailable. Send funds manually to {address}.\"401\"Your API key is invalid or expired. Go to app.surgedevs.xyz → Settings → API Keys to generate a new one.\"429\"Too many requests. Wait a moment and try again.\"500\"Server error — not your fault. Let's try again in a minute.\""
      },
      {
        "title": "Trading (After Token Launch)",
        "body": "After a token is launched, you can buy and sell. Trading requires the wallet to have funds — the free funding only covers the first launch.\n\nTell the user:\n\nTo trade, you'll need funds in your wallet. Send ETH/SOL to your wallet address: {address}"
      },
      {
        "title": "How Trading Works — Auto-Routing",
        "body": "You don't need to choose the trading method. The API automatically detects the token phase and routes your trade:\n\nPre-DEX (bonding curve / launchpad) — Trade directly on the SURGE bonding curve (EVM) or Raydium launchpad (Solana)\nPost-DEX (Aerodrome / Raydium CPMM) — After graduation (100% bonding curve), the token migrates to a DEX. The API swaps automatically via Aerodrome (Base) or Raydium CPMM (Solana)\n\nSame endpoints, same parameters, regardless of phase. Just call /buy or /sell."
      },
      {
        "title": "EVM Trading — Check Token Phase (optional)",
        "body": "POST /openclaw/token-status\n{ \"chainId\": \"1\", \"tokenAddress\": \"0x...\" }\n\nPhaseMeaningHow /buy and /sell workbonding_curvePre-DEX, active tradingTrades via BondingETHRouter (bonding curve)migrated_to_dexGraduated to Aerodrome DEXTrades via Aerodrome Router (DEX swap with agentToken)not_launchedNot activeCannot trade — returns error\n\nThe response includes agentTokenAddress for post-DEX tokens. You don't need it — the API handles routing automatically."
      },
      {
        "title": "EVM Price Quote (Post-DEX only)",
        "body": "POST /openclaw/quote\n{\n  \"chainId\": \"1\",\n  \"tokenAddress\": \"0x...\",\n  \"amount\": \"0.01\",\n  \"side\": \"buy\"\n}\n\nReturns amountIn, amountOut, phase. Only works for migrated_to_dex tokens."
      },
      {
        "title": "Buy EVM Tokens",
        "body": "POST /openclaw/buy\n{\n  \"chainId\": \"1\",\n  \"walletId\": \"abc123\",\n  \"tokenAddress\": \"0x...\",\n  \"ethAmount\": \"0.01\",\n  \"amountOutMin\": \"0\"\n}\n\nWorks for both bonding curve and post-DEX. The API detects the phase automatically."
      },
      {
        "title": "Sell EVM Tokens",
        "body": "POST /openclaw/sell\n{\n  \"chainId\": \"1\",\n  \"walletId\": \"abc123\",\n  \"tokenAddress\": \"0x...\",\n  \"tokenAmount\": \"1000\",\n  \"amountOutMin\": \"0\"\n}\n\nNotes:\n\nAuto-approves ERC-20 allowance if needed (both bonding curve and Aerodrome router)\nDon't sell too much at once — can cause revert on small pools\namountOutMin: \"0\" = no slippage protection (use getQuote to set a reasonable value for post-DEX)\nFor post-DEX sells: you're selling the agentToken, but pass the original tokenAddress — the API resolves it"
      },
      {
        "title": "Buy Solana Tokens",
        "body": "POST /openclaw/buy-solana\n{\n  \"chainId\": \"3\",\n  \"walletId\": \"sol_wallet_id\",\n  \"mintAddress\": \"7pB8z...\",\n  \"solAmount\": \"0.01\"\n}\n\nWorks for both Raydium launchpad (pre-DEX) and CPMM (post-DEX)."
      },
      {
        "title": "Sell Solana Tokens",
        "body": "POST /openclaw/sell-solana\n{\n  \"chainId\": \"3\",\n  \"walletId\": \"sol_wallet_id\",\n  \"mintAddress\": \"7pB8z...\",\n  \"tokenAmount\": \"1000\"\n}\n\nNotes:\n\nGas fees paid by platform (gas sponsorship)\n5% slippage applied automatically\nmintAddress = the mint from launch response\nPost-DEX: uses Raydium Transaction API for CPMM swap"
      },
      {
        "title": "Authentication",
        "body": "Every request:\n\nX-API-Key: sk-surge-..."
      },
      {
        "title": "Base URL (DEV)",
        "body": "https://back.surgedevs.xyz"
      },
      {
        "title": "Rate Limits",
        "body": "EndpointLimitGET /launch-info30/minPOST /launch, /launch-solana5/minPOST /wallet/create*5/minGET /wallet/:id20/minGET /wallet/:id/balance10/minPOST /wallet/:id/fund3/minPOST /token-status, /quote20/minPOST /buy, /sell, /buy-solana, /sell-solana10/min"
      },
      {
        "title": "GET /openclaw/launch-info",
        "body": "Live config: fees, chains, categories, file limits.\n\nResponse:\n\n{\n  \"chains\": [\n    {\n      \"chainId\": \"1\",\n      \"chainName\": \"Base\",\n      \"networkId\": \"8453\",\n      \"chainType\": \"EVM\",\n      \"fee\": \"0.005\",\n      \"feeRaw\": \"5000000000000000\",\n      \"feeSymbol\": \"ETH\",\n      \"estimatedGas\": \"0.00003\",\n      \"minBalance\": \"0.00536\"\n    },\n    {\n      \"chainId\": \"3\",\n      \"chainName\": \"Solana\",\n      \"networkId\": \"solana\",\n      \"chainType\": \"SOLANA\",\n      \"fee\": \"0.1\",\n      \"feeRaw\": \"100000000\",\n      \"feeSymbol\": \"SOL\",\n      \"minBalance\": \"0.136\",\n      \"defaults\": {\n        \"supply\": 1000000000,\n        \"decimals\": 6,\n        \"totalSellPercent\": 80,\n        \"fundraisingGoal\": { \"SOL\": \"85\", \"USD1\": \"12500\" },\n        \"fundraisingMints\": [\"SOL\", \"USD1\"]\n      }\n    }\n  ],\n  \"categories\": [\"ai\", \"infrastructure\", \"meme\", ...],\n  \"limits\": {\n    \"maxImageSize\": \"5MB\",\n    \"maxDocSize\": \"100MB\",\n    \"allowedImageTypes\": [\"image/png\", \"image/jpeg\", \"image/jpg\", \"image/webp\"],\n    \"allowedDocTypes\": [\"application/pdf\"]\n  }\n}"
      },
      {
        "title": "POST /openclaw/wallet/create",
        "body": "Create/get EVM wallet. One per user. Returns existing if already created."
      },
      {
        "title": "POST /openclaw/wallet/create-solana",
        "body": "Create/get Solana wallet. One per user.\n\nResponse:\n\n{\n  \"walletId\": \"vun3srwayi6z1h8momm83tdr\",\n  \"address\": \"0xD29c35526C950862dba83FcDaE4D3801CD23Be2E\",\n  \"chainType\": \"EVM\",\n  \"needsFunding\": true,\n  \"isNew\": true\n}"
      },
      {
        "title": "GET /openclaw/wallet/:walletId",
        "body": "Wallet info from DB (not on-chain)."
      },
      {
        "title": "GET /openclaw/wallet/:walletId/balance",
        "body": "Real-time on-chain balance. Returns sufficient and minRequired per chain."
      },
      {
        "title": "POST /openclaw/wallet/:walletId/fund",
        "body": "One-time free funding. Works only once per wallet.\n\nSuccess response:\n\n{\n  \"walletId\": \"...\",\n  \"needsFunding\": false,\n  \"funding\": [{ \"chain\": \"Base\", \"amount\": \"0.006\", \"txHash\": \"0x...\", \"success\": true }]\n}\n\nAlready funded response:\n\n{\n  \"needsFunding\": false,\n  \"funding\": [],\n  \"message\": \"Wallet already funded. For additional funds, send directly to the wallet address.\"\n}"
      },
      {
        "title": "POST /openclaw/launch",
        "body": "Deploy EVM token. See Step 6 for full request format.\n\nRequired: name, ticker, description, logoUrl, chainId, walletId, ethAmount\n\nOptional: bannerUrl, fullDescription, projectName, category, pitchDeckUrl, whitepaperUrl, websiteLink, githubLink, telegramLink, discordLink, xLink, teamShortDescription, teamMembers"
      },
      {
        "title": "POST /openclaw/launch-solana",
        "body": "Deploy Solana token.\n\nRequired: name, ticker, description, logoUrl, chainId, walletId, preBuyAmount\n\nOptional: fundraisingMint (\"SOL\" or \"USD1\"), plus same optional fields as EVM."
      },
      {
        "title": "POST /openclaw/token-status",
        "body": "Check EVM token phase. Request: { \"chainId\": \"1\", \"tokenAddress\": \"0x...\" }\nReturns: phase (bonding_curve | migrated_to_dex | not_launched), agentTokenAddress, price, marketCap, liquidity."
      },
      {
        "title": "POST /openclaw/quote",
        "body": "Get Aerodrome price quote (post-DEX only). Request: { \"chainId\", \"tokenAddress\", \"amount\", \"side\": \"buy\"|\"sell\" }\nReturns: amountIn, amountOut, phase."
      },
      {
        "title": "POST /openclaw/buy",
        "body": "Buy EVM tokens. Auto-routes by phase: bonding curve (pre-DEX) or Aerodrome (post-DEX).\nFields: chainId, walletId, tokenAddress, ethAmount, amountOutMin?"
      },
      {
        "title": "POST /openclaw/sell",
        "body": "Sell EVM tokens. Auto-routes by phase: bonding curve (pre-DEX) or Aerodrome (post-DEX).\nFields: chainId, walletId, tokenAddress, tokenAmount, amountOutMin?"
      },
      {
        "title": "POST /openclaw/buy-solana",
        "body": "Buy Solana tokens. Auto-routes by phase: Raydium launchpad (pre-DEX) or CPMM (post-DEX).\nFields: chainId, walletId, mintAddress, solAmount"
      },
      {
        "title": "POST /openclaw/sell-solana",
        "body": "Sell Solana tokens. Auto-routes by phase: Raydium launchpad (pre-DEX) or CPMM (post-DEX).\nFields: chainId, walletId, mintAddress, tokenAmount"
      },
      {
        "title": "API Key Management (JWT auth — at app.surgedevs.xyz)",
        "body": "EndpointMethodDescription/openclaw/api-keysPOSTGenerate new key. Body: { \"name\": \"My Bot\" }. Max 5 active./openclaw/api-keysGETList all keys (prefix only)/openclaw/api-keys/:keyIdDELETERevoke a key"
      },
      {
        "title": "Agent Rules (Non-Negotiable)",
        "body": "#Rule1Never invent data. Don't make up names, tickers, descriptions, or URLs. Always ask.2Never hardcode fees. Always use GET /launch-info.3Always confirm before launch. Show summary → wait for \"yes\". Irreversible.4Suggest, don't list. For categories — suggest 2-3, don't dump 14.5Validate URLs. Direct image link, not gallery page.6Convert handles. @name → https://x.com/name72-3 questions per message. Don't overwhelm.8Don't re-ask. If user mentioned info earlier, use it.9Never ask for private keys. Wallets are server-managed.10One free launch. After that, user funds manually. Be clear about this upfront.11Translate errors. Never show raw JSON errors. Use the error table above.12Help with file uploads. Always suggest curl -F \"file=@file\" https://file.io when user needs to provide a file URL."
      }
    ],
    "body": "SURGE OpenClaw — AI Agent Skill (Dev)\n\nThis is the DEV skill. API base URL: https://back.surgedevs.xyz. Use this for development and testing.\n\nYou are helping the user create and trade tokens on the SURGE launchpad. This document tells you everything you need to know. Follow it step by step.\n\nTL;DR — What This Skill Does\nUser can create a token on EVM (Base) or Solana — for free (one time)\nAfter creation, user can buy and sell tokens — both pre-DEX (bonding curve / launchpad) and post-DEX (Aerodrome on Base / Raydium CPMM on Solana)\nTrading auto-routes by token phase — same endpoints work for both pre-DEX and post-DEX\nAll wallets are server-managed — no private keys needed from user\nYou (the AI agent) handle the entire process through API calls\nBefore You Start — Checklist\n\nBefore doing anything, make sure you have:\n\n#\tWhat\tHow to check\n1\tAPI Key\tUser gives you a key starting with sk-surge-.... If they don't have one — see \"How to Get an API Key\" below.\n2\tWorking API\tCall GET /openclaw/launch-info. If 401 — key is bad. If 200 — you're good.\nHow to Get an API Key\n\nIf the user doesn't have an API key yet, tell them exactly this:\n\nTo get your API key (DEV):\n\nGo to app.surgedevs.xyz\nSign up / log in (you can use your wallet, email, or social login)\nGo to Settings → API Keys\nClick Generate and give it a name (e.g. \"My Agent\")\nCopy the key immediately — it's shown only once!\nGive the key to me and I'll handle everything from here\n\nYou can have up to 5 active keys. If you lose one, revoke it and create a new one.\n\nOnce you have the key, proceed to Step 0.\n\nStep 0: Load Configuration (do this silently)\n\nCall this before talking to the user about tokens:\n\nGET /openclaw/launch-info\nHeader: X-API-Key: {key}\nBase URL: https://back.surgedevs.xyz\n\n\nThis gives you live data — fees, chains, categories. Never hardcode these values.\n\nYou now know:\n\nWhich chains are available and their fees\nminBalance — how much the wallet needs\nAvailable categories for tokens\nFile size limits\n\nIf this fails with 401 — tell the user their API key is invalid and point them to app.surgedevs.xyz → Settings → API Keys.\n\nStep 1: Create a Wallet\n\nThe user needs a server-managed wallet. One wallet per chain type (EVM or Solana).\n\nFor EVM (Base, BNB):\n\nPOST /openclaw/wallet/create\nHeader: X-API-Key: {key}\n\n\nFor Solana:\n\nPOST /openclaw/wallet/create-solana\nHeader: X-API-Key: {key}\n\n\nResponse:\n\n{\n  \"walletId\": \"vun3srwayi6z1h8momm83tdr\",\n  \"address\": \"0xD29c...Be2E\",\n  \"chainType\": \"EVM\",\n  \"needsFunding\": true,\n  \"isNew\": true\n}\n\nSave walletId — you'll need it for everything\nIf isNew: false — wallet already existed, that's fine\nThe wallet is linked to the user's account\n\nTell the user:\n\nI've created a server-managed wallet for you. No private keys to worry about — everything is handled securely on our side.\n\nStep 2: Fund the Wallet (ONE TIME FREE)\n\nImportant rule: The platform funds each wallet exactly ONCE for free. This covers the gas + minimum buy for the first token launch. After that, the user pays for everything themselves.\n\nPOST /openclaw/wallet/{walletId}/fund\nHeader: X-API-Key: {key}\n\n\nIf successful (needsFunding: false):\n\nYour wallet has been funded! You get one free token launch from SURGE — gas and fees are covered.\n\nIf already funded (second call):\n\nThis wallet was already funded. The free launch is a one-time gift. If you need more funds (for trading, etc.), send ETH/SOL directly to your wallet address: {address}\n\nIf funding fails (e.g. platform funder is low):\n\nAutomatic funding didn't go through right now. You can either:\n\nTry again in a few minutes\nSend funds manually to your wallet address: {address} on the Base network\n\nThe minimum balance needed is {minBalance} (from launch-info).\n\nStep 3: Check Balance\nGET /openclaw/wallet/{walletId}/balance\nHeader: X-API-Key: {key}\n\n\nResponse includes sufficient: true/false and minRequired per chain.\n\nIf sufficient: true — proceed to token creation.\n\nIf sufficient: false — tell the user:\n\nYour wallet balance is {balance} but you need at least {minRequired}. Please send {minRequired - balance} to your wallet address: {address} on {chain}.\n\nStep 4: Collect Token Information\n\nNow collect what's needed to launch the token. Ask one group at a time. Don't dump everything at once.\n\n4a. Name, Ticker, Description (REQUIRED)\n\nAsk:\n\nLet's create your token! I need three things to start:\n\nToken name — the full name (e.g. \"NeuralNet Token\")\nTicker — short symbol, 3-5 letters (e.g. \"NNET\")\nDescription — one sentence about what the token is for (e.g. \"Decentralized AI compute marketplace\")\n\nRules:\n\nIf user gives only a ticker — ask for the full name\nIf user gives a paragraph as description — say: \"Great, I'll use that as the detailed description. Can you give me a one-liner tagline too?\"\nNever make up names, tickers, or descriptions yourself\n4b. Logo Image (REQUIRED)\n\nAsk:\n\nNow I need a logo for your token. Send me a direct link to an image file (PNG, JPG, or WEBP, max 5MB).\n\nHow to get a direct image link:\n\nIf the user has a file on their computer, tell them:\n\nUpload your image to get a direct link. The easiest way:\n\ncurl -F \"file=@your-logo.png\" https://file.io\n\n\nThis will give you a direct URL. Send it to me!\n\nOther options:\n\nimgur.com → upload → right-click image → \"Copy image address\" (must start with i.imgur.com)\npostimages.org → upload → copy \"Direct link\"\nAny public URL that ends in .png / .jpg / .webp\n\nValidate before accepting:\n\nURL must start with http:// or https://\nMust be a direct file link, not a gallery page\nGOOD: https://i.imgur.com/abc123.png, https://file.io/abc123\nBAD: https://imgur.com/abc123 (gallery page)\nBAD: https://drive.google.com/file/d/... (preview page, not direct)\n4c. Chain (REQUIRED)\n\nBuild this question from launch-info data:\n\nWhich blockchain do you want to launch on?\n\nAvailable:\n\nBase (EVM) — fee: {fee} ETH\nSolana — fee: {fee} SOL\n\nBase is recommended for most projects. Solana is great for high-speed, low-cost trading.\n\nMap the user's choice to the correct chainId from launch-info. The user should never see raw IDs.\n\nThis determines everything else:\n\nEVM → use /launch, needs ethAmount\nSolana → use /launch-solana, needs preBuyAmount\n4d. Initial Buy Amount (REQUIRED)\n\nIf EVM chain:\n\nAsk:\n\nHow much ETH do you want for the initial buy? This buys the very first tokens when your contract launches.\n\nMinimum: slightly more than {fee} ETH (the contract fee)\nRecommended: {fee × 2} ETH for a good start\nThis determines the starting price — bigger amount = higher starting price\nUser says\tWhat to do\nLess than or equal to fee\t\"The contract fee is {fee} ETH. Your amount must be higher. I'd recommend {fee × 2}.\"\nReasonable (0.01–1 ETH)\tAccept\nVery large (10+ ETH)\t\"That's {amount} ETH — are you sure?\"\n\nIf Solana chain:\n\nFirst ask which currency:\n\nWhich currency do you want for your token's fundraising pool?\n\nSOL (default) — fundraising goal: 85 SOL. Your initial buy is in SOL.\nUSD1 (stablecoin) — fundraising goal: 12,500 USD1. Your initial buy is in USD1.\n\nMost projects use SOL. USD1 is for stablecoin-based pools.\n\nThen ask for the amount:\n\nHow much {SOL/USD1} for the initial buy? Even a small amount like 0.01 works.\n\nImportant about funding:\n\nIf user picks SOL — the one-time free funding covers platform fee + gas + min preBuy. They're ready to go.\nIf user picks USD1 — the free funding only covers SOL (for platform fee + gas). The user must have USD1 tokens in their wallet for the initial buy. Tell them:\n\nSince you chose USD1, you'll need USD1 tokens in your Solana wallet for the initial buy. The platform covers SOL fees, but USD1 you provide yourself. Send USD1 to your wallet address: {address}\n\n4e. Category (OPTIONAL — but suggest it)\n\nBased on what the user already told you, suggest 2-3 matching categories:\n\nBased on your description, this sounds like an AI project. Should I set the category to ai? Or is it more defi / infrastructure?\n\nAvailable categories: ai, infrastructure, meme, rwa, defi, privacy, derivatives, gamefi, robotics, depin, desci, healthcare, education, socialfi\n\nDon't list all 14. Just suggest the best 2-3 matches.\n\n4f. Optional Extras\n\nAsk once:\n\nWant to add any extras? All optional — you can add them later on app.surgedevs.xyz:\n\nBanner image (wide header, 1200×400 ideal)\nDetailed description (markdown supported)\nPitch deck or whitepaper (PDF, up to 100MB)\nSocial links (website, Twitter/X, Telegram, Discord, GitHub)\nTeam description\n\nIf user says \"no\" / \"skip\" — move to confirmation.\n\nFor files (banner, pitch deck, whitepaper) — same upload process:\n\nUpload your file to get a link:\n\ncurl -F \"file=@your-file.pdf\" https://file.io\n\n\nConvert social handles automatically:\n\n@neuralnet → https://x.com/neuralnet\nt.me/neuralnet → https://t.me/neuralnet\ndiscord.gg/abc → https://discord.gg/abc\nStep 5: Confirm Before Launch\n\nALWAYS show a summary. ALWAYS wait for explicit \"yes\".\n\nHere's your token ready to launch:\n\nToken: {name} ({ticker}) Description: {description} Category: {category or \"not set\"} Chain: {chainName} Initial buy: {ethAmount} ETH (chain fee: {fee} ETH) Logo: {logoUrl} Wallet: {walletId} {any other filled fields}\n\nThis is irreversible. Once launched, the token goes live immediately.\n\nReady to launch? (yes/no)\n\nOnly proceed after explicit \"yes\" / \"go\" / \"launch\" / \"do it\"\nIf user says \"change X\" — update that field and show summary again\nStep 6: Launch\n\nEVM:\n\nPOST /openclaw/launch\nHeader: X-API-Key: {key}\nContent-Type: application/json\n\n{\n  \"name\": \"NeuralNet Token\",\n  \"ticker\": \"NNET\",\n  \"description\": \"Decentralized AI compute marketplace\",\n  \"logoUrl\": \"https://i.imgur.com/abc123.png\",\n  \"chainId\": \"CHAIN_ID_FROM_LAUNCH_INFO\",\n  \"walletId\": \"YOUR_WALLET_ID\",\n  \"ethAmount\": \"0.01\"\n}\n\n\nSolana:\n\nPOST /openclaw/launch-solana\nHeader: X-API-Key: {key}\nContent-Type: application/json\n\n{\n  \"name\": \"NeuralNet Token\",\n  \"ticker\": \"NNET\",\n  \"description\": \"Decentralized AI compute marketplace\",\n  \"logoUrl\": \"https://i.imgur.com/abc123.png\",\n  \"chainId\": \"SOLANA_CHAIN_ID_FROM_LAUNCH_INFO\",\n  \"walletId\": \"YOUR_SOLANA_WALLET_ID\",\n  \"preBuyAmount\": \"0.5\"\n}\n\nStep 7: After Launch\n\nEVM success — tell the user:\n\nYour token {name} ({ticker}) is live!\n\nTransaction: https://basescan.org/tx/{txHash} View on SURGE (DEV): https://app.surgedevs.xyz\n\nIt may take a minute to appear on the platform. Your token is now trading on the bonding curve — anyone can buy and sell!\n\nSolana success:\n\nYour token {name} ({ticker}) is live!\n\nTransaction: https://solscan.io/tx/{signature} Token: https://solscan.io/token/{mint} View on SURGE (DEV): https://app.surgedevs.xyz\n\nYour token is now trading on the Raydium launchpad!\n\nError Handling — What to Tell the User\n\nWhen something goes wrong, don't show raw errors. Translate them:\n\nError contains\tWhat to say\n\"image\" or \"download\"\t\"I couldn't download your logo. Make sure it's a direct link to an image file, not a gallery page. Try uploading to file.io: curl -F 'file=@logo.png' https://file.io\"\n\"explicit\"\t\"Your image was flagged as inappropriate. Please use a different image.\"\n\"fee\" or \"ethAmount\"\t\"The amount is too low. The current fee on {chain} is {fee} — your amount must be higher. Try {fee × 2}.\"\n\"not a Solana wallet\"\t\"You're using an EVM wallet for Solana. Let me create a Solana wallet for you.\" → Call /wallet/create-solana\n\"Wallet not found\"\t\"That wallet doesn't exist. Let me create a new one for you.\" → Call /wallet/create\n\"already funded\"\t\"Your wallet was already funded with the free launch. For more funds, send to your wallet address: {address}\"\n\"insufficient funds\"\t\"Your wallet doesn't have enough balance. Send at least {minBalance} to {address} on {chain}.\"\n\"not on bonding curve\"\t\"This token has graduated to the DEX. Don't worry — our API handles DEX trading automatically. Try your buy/sell again.\"\n\"arithmetic underflow\"\t\"The sell amount is too large for the current pool. Try selling a smaller amount.\"\n\"Daily funding limit\"\t\"Platform funding is temporarily unavailable. Send funds manually to {address}.\"\n401\t\"Your API key is invalid or expired. Go to app.surgedevs.xyz → Settings → API Keys to generate a new one.\"\n429\t\"Too many requests. Wait a moment and try again.\"\n500\t\"Server error — not your fault. Let's try again in a minute.\"\nTrading (After Token Launch)\n\nAfter a token is launched, you can buy and sell. Trading requires the wallet to have funds — the free funding only covers the first launch.\n\nTell the user:\n\nTo trade, you'll need funds in your wallet. Send ETH/SOL to your wallet address: {address}\n\nHow Trading Works — Auto-Routing\n\nYou don't need to choose the trading method. The API automatically detects the token phase and routes your trade:\n\nPre-DEX (bonding curve / launchpad) — Trade directly on the SURGE bonding curve (EVM) or Raydium launchpad (Solana)\nPost-DEX (Aerodrome / Raydium CPMM) — After graduation (100% bonding curve), the token migrates to a DEX. The API swaps automatically via Aerodrome (Base) or Raydium CPMM (Solana)\n\nSame endpoints, same parameters, regardless of phase. Just call /buy or /sell.\n\nEVM Trading — Check Token Phase (optional)\nPOST /openclaw/token-status\n{ \"chainId\": \"1\", \"tokenAddress\": \"0x...\" }\n\nPhase\tMeaning\tHow /buy and /sell work\nbonding_curve\tPre-DEX, active trading\tTrades via BondingETHRouter (bonding curve)\nmigrated_to_dex\tGraduated to Aerodrome DEX\tTrades via Aerodrome Router (DEX swap with agentToken)\nnot_launched\tNot active\tCannot trade — returns error\n\nThe response includes agentTokenAddress for post-DEX tokens. You don't need it — the API handles routing automatically.\n\nEVM Price Quote (Post-DEX only)\nPOST /openclaw/quote\n{\n  \"chainId\": \"1\",\n  \"tokenAddress\": \"0x...\",\n  \"amount\": \"0.01\",\n  \"side\": \"buy\"\n}\n\n\nReturns amountIn, amountOut, phase. Only works for migrated_to_dex tokens.\n\nBuy EVM Tokens\nPOST /openclaw/buy\n{\n  \"chainId\": \"1\",\n  \"walletId\": \"abc123\",\n  \"tokenAddress\": \"0x...\",\n  \"ethAmount\": \"0.01\",\n  \"amountOutMin\": \"0\"\n}\n\n\nWorks for both bonding curve and post-DEX. The API detects the phase automatically.\n\nSell EVM Tokens\nPOST /openclaw/sell\n{\n  \"chainId\": \"1\",\n  \"walletId\": \"abc123\",\n  \"tokenAddress\": \"0x...\",\n  \"tokenAmount\": \"1000\",\n  \"amountOutMin\": \"0\"\n}\n\n\nNotes:\n\nAuto-approves ERC-20 allowance if needed (both bonding curve and Aerodrome router)\nDon't sell too much at once — can cause revert on small pools\namountOutMin: \"0\" = no slippage protection (use getQuote to set a reasonable value for post-DEX)\nFor post-DEX sells: you're selling the agentToken, but pass the original tokenAddress — the API resolves it\nBuy Solana Tokens\nPOST /openclaw/buy-solana\n{\n  \"chainId\": \"3\",\n  \"walletId\": \"sol_wallet_id\",\n  \"mintAddress\": \"7pB8z...\",\n  \"solAmount\": \"0.01\"\n}\n\n\nWorks for both Raydium launchpad (pre-DEX) and CPMM (post-DEX).\n\nSell Solana Tokens\nPOST /openclaw/sell-solana\n{\n  \"chainId\": \"3\",\n  \"walletId\": \"sol_wallet_id\",\n  \"mintAddress\": \"7pB8z...\",\n  \"tokenAmount\": \"1000\"\n}\n\n\nNotes:\n\nGas fees paid by platform (gas sponsorship)\n5% slippage applied automatically\nmintAddress = the mint from launch response\nPost-DEX: uses Raydium Transaction API for CPMM swap\nAPI Reference — All Endpoints\nAuthentication\n\nEvery request:\n\nX-API-Key: sk-surge-...\n\nBase URL (DEV)\nhttps://back.surgedevs.xyz\n\nRate Limits\nEndpoint\tLimit\nGET /launch-info\t30/min\nPOST /launch, /launch-solana\t5/min\nPOST /wallet/create*\t5/min\nGET /wallet/:id\t20/min\nGET /wallet/:id/balance\t10/min\nPOST /wallet/:id/fund\t3/min\nPOST /token-status, /quote\t20/min\nPOST /buy, /sell, /buy-solana, /sell-solana\t10/min\nGET /openclaw/launch-info\n\nLive config: fees, chains, categories, file limits.\n\nResponse:\n\n{\n  \"chains\": [\n    {\n      \"chainId\": \"1\",\n      \"chainName\": \"Base\",\n      \"networkId\": \"8453\",\n      \"chainType\": \"EVM\",\n      \"fee\": \"0.005\",\n      \"feeRaw\": \"5000000000000000\",\n      \"feeSymbol\": \"ETH\",\n      \"estimatedGas\": \"0.00003\",\n      \"minBalance\": \"0.00536\"\n    },\n    {\n      \"chainId\": \"3\",\n      \"chainName\": \"Solana\",\n      \"networkId\": \"solana\",\n      \"chainType\": \"SOLANA\",\n      \"fee\": \"0.1\",\n      \"feeRaw\": \"100000000\",\n      \"feeSymbol\": \"SOL\",\n      \"minBalance\": \"0.136\",\n      \"defaults\": {\n        \"supply\": 1000000000,\n        \"decimals\": 6,\n        \"totalSellPercent\": 80,\n        \"fundraisingGoal\": { \"SOL\": \"85\", \"USD1\": \"12500\" },\n        \"fundraisingMints\": [\"SOL\", \"USD1\"]\n      }\n    }\n  ],\n  \"categories\": [\"ai\", \"infrastructure\", \"meme\", ...],\n  \"limits\": {\n    \"maxImageSize\": \"5MB\",\n    \"maxDocSize\": \"100MB\",\n    \"allowedImageTypes\": [\"image/png\", \"image/jpeg\", \"image/jpg\", \"image/webp\"],\n    \"allowedDocTypes\": [\"application/pdf\"]\n  }\n}\n\nPOST /openclaw/wallet/create\n\nCreate/get EVM wallet. One per user. Returns existing if already created.\n\nPOST /openclaw/wallet/create-solana\n\nCreate/get Solana wallet. One per user.\n\nResponse:\n\n{\n  \"walletId\": \"vun3srwayi6z1h8momm83tdr\",\n  \"address\": \"0xD29c35526C950862dba83FcDaE4D3801CD23Be2E\",\n  \"chainType\": \"EVM\",\n  \"needsFunding\": true,\n  \"isNew\": true\n}\n\nGET /openclaw/wallet/:walletId\n\nWallet info from DB (not on-chain).\n\nGET /openclaw/wallet/:walletId/balance\n\nReal-time on-chain balance. Returns sufficient and minRequired per chain.\n\nPOST /openclaw/wallet/:walletId/fund\n\nOne-time free funding. Works only once per wallet.\n\nSuccess response:\n\n{\n  \"walletId\": \"...\",\n  \"needsFunding\": false,\n  \"funding\": [{ \"chain\": \"Base\", \"amount\": \"0.006\", \"txHash\": \"0x...\", \"success\": true }]\n}\n\n\nAlready funded response:\n\n{\n  \"needsFunding\": false,\n  \"funding\": [],\n  \"message\": \"Wallet already funded. For additional funds, send directly to the wallet address.\"\n}\n\nPOST /openclaw/launch\n\nDeploy EVM token. See Step 6 for full request format.\n\nRequired: name, ticker, description, logoUrl, chainId, walletId, ethAmount\n\nOptional: bannerUrl, fullDescription, projectName, category, pitchDeckUrl, whitepaperUrl, websiteLink, githubLink, telegramLink, discordLink, xLink, teamShortDescription, teamMembers\n\nPOST /openclaw/launch-solana\n\nDeploy Solana token.\n\nRequired: name, ticker, description, logoUrl, chainId, walletId, preBuyAmount\n\nOptional: fundraisingMint (\"SOL\" or \"USD1\"), plus same optional fields as EVM.\n\nPOST /openclaw/token-status\n\nCheck EVM token phase. Request: { \"chainId\": \"1\", \"tokenAddress\": \"0x...\" } Returns: phase (bonding_curve | migrated_to_dex | not_launched), agentTokenAddress, price, marketCap, liquidity.\n\nPOST /openclaw/quote\n\nGet Aerodrome price quote (post-DEX only). Request: { \"chainId\", \"tokenAddress\", \"amount\", \"side\": \"buy\"|\"sell\" } Returns: amountIn, amountOut, phase.\n\nPOST /openclaw/buy\n\nBuy EVM tokens. Auto-routes by phase: bonding curve (pre-DEX) or Aerodrome (post-DEX). Fields: chainId, walletId, tokenAddress, ethAmount, amountOutMin?\n\nPOST /openclaw/sell\n\nSell EVM tokens. Auto-routes by phase: bonding curve (pre-DEX) or Aerodrome (post-DEX). Fields: chainId, walletId, tokenAddress, tokenAmount, amountOutMin?\n\nPOST /openclaw/buy-solana\n\nBuy Solana tokens. Auto-routes by phase: Raydium launchpad (pre-DEX) or CPMM (post-DEX). Fields: chainId, walletId, mintAddress, solAmount\n\nPOST /openclaw/sell-solana\n\nSell Solana tokens. Auto-routes by phase: Raydium launchpad (pre-DEX) or CPMM (post-DEX). Fields: chainId, walletId, mintAddress, tokenAmount\n\nAPI Key Management (JWT auth — at app.surgedevs.xyz)\nEndpoint\tMethod\tDescription\n/openclaw/api-keys\tPOST\tGenerate new key. Body: { \"name\": \"My Bot\" }. Max 5 active.\n/openclaw/api-keys\tGET\tList all keys (prefix only)\n/openclaw/api-keys/:keyId\tDELETE\tRevoke a key\nAgent Rules (Non-Negotiable)\n#\tRule\n1\tNever invent data. Don't make up names, tickers, descriptions, or URLs. Always ask.\n2\tNever hardcode fees. Always use GET /launch-info.\n3\tAlways confirm before launch. Show summary → wait for \"yes\". Irreversible.\n4\tSuggest, don't list. For categories — suggest 2-3, don't dump 14.\n5\tValidate URLs. Direct image link, not gallery page.\n6\tConvert handles. @name → https://x.com/name\n7\t2-3 questions per message. Don't overwhelm.\n8\tDon't re-ask. If user mentioned info earlier, use it.\n9\tNever ask for private keys. Wallets are server-managed.\n10\tOne free launch. After that, user funds manually. Be clear about this upfront.\n11\tTranslate errors. Never show raw JSON errors. Use the error table above.\n12\tHelp with file uploads. Always suggest curl -F \"file=@file\" https://file.io when user needs to provide a file URL."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/nkhromovweway/sur-pub",
    "publisherUrl": "https://clawhub.ai/nkhromovweway/sur-pub",
    "owner": "nkhromovweway",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/sur-pub",
    "downloadUrl": "https://openagent3.xyz/downloads/sur-pub",
    "agentUrl": "https://openagent3.xyz/skills/sur-pub/agent",
    "manifestUrl": "https://openagent3.xyz/skills/sur-pub/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/sur-pub/agent.md"
  }
}