Developers

MCP reference

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 _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 7

  • 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.

  • get_coin(mint)Free#

    One coin in full: mode, fee, pair, basket, bonding progress, market cap and holders. 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 flywheel (accruing; buys and burns not started yet), the $BALL burn fund and the platform share.

  • 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, and for now 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? }. SOL coins without a creator lock for now. 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 5confirm_launch(mint, signature)Launch#

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