Developers

MCP reference

WeBall's MCP server for AI agents: coins, market data, holders, rewards and stats as tools, and launching a coin with the agent's own wallet.

Connect an agent

The API's data as tools an AI agent can call, on a hosted Model Context Protocol server. No sign-in and no key; 60 requests a minute per visitor are free.

Server URL
https://weball.fun/mcp

Claude Code

claude mcp add --transport http weball https://weball.fun/mcp

Claude (web and desktop)

Settings, then Connectors, then Add custom connector, and paste the server URL.

Other clients

Most accept a server entry like this in their MCP settings:

{
  "mcpServers": {
    "weball": {
      "url": "https://weball.fun/mcp"
    }
  }
}

Coin names, symbols, descriptions and links are written by coin creators, so the server wraps each as {"untrusted_text": …} and tells the agent to treat them as data, never instructions.

Pricing

Free

Free up to 60 requests a minute on the MCP. Past that, $0.01 a request.

$0.01 a call, from the first: lookups such as top holders, a wallet's rewards and a creator's earnings.

Premium

$0.05 a call, from the first: a coin's health grade and the signals behind it.

Launch

Free for a limited time. A wallet may prepare 5 launches an hour.

How paying works

With x402, in USDC on Solana: no account, no key, no subscription. A request that needs paying gets a tool result with the price (the x402 payment requirements). Your agent signs a USDC transfer for that amount and calls the tool again with it in the payment argument (or _meta["x402/payment"]). We check it, settle it on Solana and answer, with the receipt in _meta["x402/payment-response"]. x402-aware clients and agent wallets do this automatically.

WeBall pays the network fee. You only ever sign a transfer of the stated amount to WeBall's address; nothing else can move from your wallet.

Tools

Free 10

  • search_coins(q, sort, mode, graduated, limit, offset)Free#

    Find coins by mint, symbol or name, or list them by newest, volume or market cap.

  • search_tokens(q, limit)Free#

    Find any Solana token by mint, symbol or part of a name (Jupiter’s records, as Jupiter ranks them), with whether WeBall offers it as a pairing quote or in baskets (onWeBall). Figures are Jupiter’s US$ numbers, display only; symbol and name are null when the creator’s text doesn’t look like a label; links are Jupiter’s plain https URLs (third-party, unchecked); description is null. WeBall coins’ own data: search_coins and get_coin.

    Show example result
    {
      "tokens": [
        {
          "mint": "ASTERYpc2EhivYWSbtuWPuCMdXtZGmHwtH93NqYVw45Z",
          "symbol": "ASTER",
          "name": "Aster",
          "logoUrl": "https://weball.fun/api/outside/ASTERYpc2EhivYWSbtuWPuCMdXtZGmHwtH93NqYVw45Z/icon",
          "description": null,
          "verified": true,
          "tags": [
            "verified",
            "weball-quote",
            "weball-basket"
          ],
          "onWeBall": {
            "quote": true,
            "basket": true,
            "addedAt": "2026-10-12"
          },
          "decimals": 8,
          "tokenProgram": "spl",
          "mintAuthority": "5FnXXfx5VNSwTxwkPzz5Jd17Ajk3Wcnw3taUN5ddT2bg",
          "freezeAuthority": null,
          "priceUsd": 0.7115,
          "marketCap": 172047,
          "liquidityUsd": 90496,
          "volume24h": 4706832,
          "holders": 1381,
          "links": {
            "website": "https://www.asterdex.com",
            "x": "https://x.com/Aster_DEX"
          }
        }
      ]
    }
  • list_ideas(q, launched, limit)Free#

    The public WeBall Ideas board: coin ideas WeBall’s crew made from news stories, in the board’s order (ideas the crew scored in the last day and not launched yet first, highest score first, then newest). Each has its name, ticker, pitch, trend and story line and each crew take (under `user`, fenced: written from outside stories), the pump.fun token it pairs with (`pair`), `crewScore` (0 to 100: five characters give 0 to 20 each on one angle), and once launched its coin (`launched`: mint, venue, marketCapLamports). Launch one with prepare_pump_launch, its pair as quoteMint.

  • get_coin(mint)Free#

    One coin in full: mode, fee, pair, basket, bonding progress, market cap and holders. For about a minute after launch `figuresPending` is true and those figures are null (not computed yet): read again shortly. Its health grade and signals: get_health_signal.

  • get_coin_rewards(mint)Free#

    Holder mode: the reward pot, what holders received per basket token (raw units, cost, and US cents at the time and at the latest price), and recent payout rounds, each with its snapshot slot and baseline slot (holders are counted at the smaller of their balance at the two). Creator mode: what the creator has earned, been sent, and is waiting on.

  • get_flywheel()Free#

    The platform’s funds: the $BALL burn fund, the AI fund and the platform share (the flywheel was removed on 18 Oct 2026; its leftover balance shows until it’s moved to the treasury).

  • list_hooks()Free#

    The hooks menu (SPEC §17): rules a coin can have built in, fixed at launch, each with its group, when it ends and whether it’s live on this network or coming. Live ids go in prepare_launch’s `hooks`. Also the fee shield, on every coin.

  • get_platform_stats()Free#

    Platform totals: coins launched and graduated, trades, volume, paid to holders and sent to creators (lamports, SOL value). `revenueDaily`: platform revenue per UTC day, the last 30, oldest first: WeBall’s fee share and swap referrals (lamports), API payments (micro-USD), that day’s SOL price (micro-USD) the day’s total in US cents (`usdCents`) and all revenue to the end of that day (`cumulativeUsdCents`).

  • get_ball_burns(date)Free#

    One UTC day of $BALL burns (today unless `date`, YYYY-MM-DD): burned that day, totals to the end of that day, percent of the original supply, the latest burn transaction and the burn fund now. Unlike the other tools, amounts are display strings: whole $BALL, SOL and US dollars.

  • get_market_data(mint, interval)Free#

    A coin’s recent price candles (the last 48 at the interval) and its latest 20 trades.

Basic 3

  • get_top_holders(mint, limit)Basic#

    A coin’s biggest holders and holder count (pools, locked liquidity and WeBall’s wallets left out), with what each would count for in the next round: the smaller of their balance now and at the round’s baseline (tokens bought since then count from the round after).

  • get_wallet_rewards(wallet, coin)Basic#

    What a wallet has been paid in holder rewards, and is owed (small shares carried to the next round).

  • get_creator_earnings(wallet)Basic#

    The coins a wallet launched here, and what each has earned it.

Premium 1

  • get_health_signal(mint)Premium#

    A coin’s health grade (A–F) and the signals behind it, each with its level (ok, caution, warning): top-10 concentration, the creator’s unlocked share, whether the creator sold their launch buy, snipers and bundled buys (what those wallets still hold), insiders (launch-block buyers, and tokens received by transfer), wash trading, and whether the mint and freeze authorities are still set; plus holders and the creator’s other launches. The grade is null when not scored yet or over an hour old. It flags warnings; it never means a coin is safe.

Launch a coin

An agent can launch a coin with its own wallet, calling these tools in this order. WeBall never holds the key: prepare_launch returns an unsigned transaction, the agent signs it, then submits it. Preparing a launch is free for a limited time. A wallet may prepare 5 launches an hour. On pump.fun (prepare_pump_launch, submit_pump_launch, pump_launch_status) the coin pairs with SOL, USDC or a token pump.fun lists and pays its holders 70% of every creator fee; on Meteora (prepare_launch, submit_launch, confirm_launch) it's SOL coins without a creator lock. The same steps are in the API.

  • Step 1get_launch_terms(wallet)Launch#

    Launch step 1a: the terms message a wallet must sign (UTF-8, ed25519) before it can launch. Sign it within 10 minutes and pass the signature to accept_terms. Once per wallet per terms version.

  • Step 2accept_terms(wallet, version, signedAt, signature)Launch#

    Launch step 1b: record the wallet’s signed acceptance of the terms.

  • Step 3prepare_launch(launch)Launch#

    Launch step 2 (free for a limited time; 5 an hour per wallet): validate and record a coin launch and get its unsigned transaction. `launch` is the same object as POST /api/v1/launch/prepare: { creator, mint, name, ticker, description?, socials?, image? (base64), mode: "holder" | "creator", feeBps, basket?, recipients?, buyBps?, rollIn?, hooks? }. SOL coins without a creator lock for now; `hooks` (live ids from list_hooks) make a Token-2022 coin. Sign `transaction` with the creator wallet (and the mint keypair when mintSource is "browser"), then call submit_launch.

  • Step 4submit_launch(mint, transaction)Launch#

    Launch step 3: send the signed launch transaction (base64). Returns confirmed, or pending with a signature: then call confirm_launch. Never sign and send it again.

  • Step 5prepare_pump_launch(launch)Launch#

    Launch a coin on pump.fun, step 2 (after get_launch_terms / accept_terms; free for a limited time; 5 an hour per wallet). `launch` is the same object as POST /api/v1/launch/pump/prepare: { creator, mint, name, ticker, image (base64), description?, quoteMint? (the pair: SOL by default, USDC or a token pump.fun lists), holdersPaid? ("pair" | "basket"), basket?, buyLamports? (SOL pairs only), socials? { website, x, telegram } }. Returns `transactions`: one or two unsigned v0 transactions. Sign every one with the creator wallet, sign the first with the mint keypair too, then call submit_pump_launch with all of them in order. When `sponsored` is true WeBall pays the launch costs: its sponsor is each transaction's fee payer and signs at submit, so sign only as the creator (and the mint) and leave its signature empty.

  • Step 6submit_pump_launch(mint, transactions)Launch#

    Launch on pump.fun, step 3: send the signed transactions (base64, in the order prepare_pump_launch gave them). Returns confirmed, or pending: then poll pump_launch_status. Never sign and send them again.

  • Step 7pump_launch_status(mint)Launch#

    Launch on pump.fun, step 4: where a launch is (prepared, sending, confirmed or abandoned) and, once confirmed, the coin’s page.

  • Step 8confirm_launch(mint, signature)Launch#

    Launch step 4: confirm a pending launch by its signature.

Not financial advice. Memecoins can go to zero.