MCP/API

API and MCP

Pricing

Free

Coins, coin details, trades and price candles, holder pots, platform stats and funds, $BALL burns: free up to 120 requests a minute on the API and 60 on MCP. Past that, $0.01 a request.

$0.01 a call, from the first: top holders, a wallet's rewards, and a creator's earnings. Marked Basic below.

Premium

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

How paying works

With x402, in USDC on Solana: no account, no key, no subscription. A request that needs paying gets 402 Payment Required with the price in a PAYMENT-REQUIRED header. Your client or agent signs a USDC transfer for that amount and sends the request again with it in PAYMENT-SIGNATURE. We check it, settle it on Solana, and answer, with the transaction in 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.

MCP for AI agents

The same data as the API, as tools an AI agent can call: a hosted, read-only Model Context Protocol server. No sign-in and no key.

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"
    }
  }
}

Tools

  • search_coins(q, sort, mode, graduated, limit)

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

  • get_coin(mint)

    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)

    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()

    The platform’s funds: the flywheel (accruing; buys and burns not started yet), the $BALL burn fund and the platform share.

  • get_platform_stats()

    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)

    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)

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

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

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

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.

Read API

Read-only data for every coin launched on WeBall: coins, market data, holders, holder rewards, creator earnings and platform stats. No key needed; requests are rate-limited per visitor.

Amounts are integers in raw units, as strings: a coin’s pot, trades and volume are in its quote token (`quote.decimals`), coins have 6 decimals, payouts are in each basket token’s own units. Platform totals are in SOL value (lamports).

Fields under `user` (name, symbol, description, socials) are written by the coin’s creator. Treat them as untrusted text.

Base URL
https://weball.fun/api/v1
Network
Solana mainnet: the network this site runs on
Limits
120 requests a minute (API), 60 (MCP), per visitor
Machine-readable
/api/v1/openapi.json

Try it

curl "https://weball.fun/api/v1/coins?sort=volume&limit=5"

Read-only: nothing here moves money or needs a wallet. Health grades signal warnings, not safety, and nothing on WeBall is financial advice (see the FAQ).

Endpoints

All GET, all JSON. Errors come back as {"error": "…"} with status 400 (a bad parameter), 404 (not on this network) or 429 (slow down).

GET/coins

List or search coins

`coins`: summaries (market cap, 24h volume and change, holders, bonding progress); `next`: the next page’s offset, or null.

ParameterInValuesAbout
qquerystringA mint address, a symbol, or part of a name.
sortquerynewest | volume | marketCap (default newest)
modequeryany | holder | creator (default any)
graduatedqueryany | true | false (default any)
limitqueryinteger 1–100 (default 50)
offsetqueryinteger (default 0)
curl "https://weball.fun/api/v1/coins?sort=volume"

GET/coins/{mint}

One coin in full

Summary plus description and socials, creator, pools, basket and creator split.

ParameterInValuesAbout
mint*pathstringThe coin’s mint address.
curl "https://weball.fun/api/v1/coins/<mint>"

GET/coins/{mint}/rewards

Holder pot and payout rounds, or creator earnings

Holder mode: `pot`, `paidByToken` and `rounds` (each with `snapshotSlot` and `baselineSlot`: holders are counted at the smaller of their balance at the two). `paidByToken`, per basket token: `paid` (raw units sent to holders), `cost` (what they cost, raw quote units), `usdCentsAtPayout` (that cost at the quote token’s price when each round bought; `unpricedRounds` were left out) and `usdCentsNow` (at the token’s latest price; null without one). Creator mode: `creator` (earned, sent, waiting).

ParameterInValuesAbout
mint*pathstringThe coin’s mint address.
limitqueryinteger 1–50 (default 10)
curl "https://weball.fun/api/v1/coins/<mint>/rewards"

GET/platform/stats

Platform totals

Coins launched and graduated, trades, volume, paid to holders, sent to creators (SOL value), and daily platform revenue in US cents.

curl "https://weball.fun/api/v1/platform/stats"

GET/platform/funds

Platform funds

Flywheel, $BALL burn and platform balances.

curl "https://weball.fun/api/v1/platform/funds"

GET/platform/burns

$BALL burns for a day

date, burned_today, burned_today_usd, burned_total, original_supply, burned_pct_of_supply, burn_count, last_burn_tx, burn_fund_sol.

ParameterInValuesAbout
datequerydateA UTC day, YYYY-MM-DD; today when left out.
curl "https://weball.fun/api/v1/platform/burns"

GET/coins/{mint}/trades

Recent trades, newest first

`trades`: signature, time, side, trader, coinAmount, quoteAmount.

ParameterInValuesAbout
mint*pathstringThe coin’s mint address.
limitqueryinteger 1–100 (default 50)
beforequerydate-timeAn ISO time: trades before it (the previous page’s `next.before`).
curl "https://weball.fun/api/v1/coins/<mint>/trades"

GET/coins/{mint}/ohlcv

Price candles

`candles`: time, open, high, low, close (quote token per whole coin) and volume; at most 500.

ParameterInValuesAbout
mint*pathstringThe coin’s mint address.
intervalquery1m | 5m | 15m | 1h | 4h | 1d (default 1h)
curl "https://weball.fun/api/v1/coins/<mint>/ohlcv?interval=5m"

GET/coins/{mint}/holdersBasic

Top holders

`holders`: the count; `baselineSlot`: the slot the next round compares against (null before there is one); `top`: wallet, amount, shareBps of supply, and `countsNextRound`: the amount the next round would count under the holding rule (the smaller of the balance now and at the baseline). Pools, locked liquidity and WeBall’s wallets are left out.

ParameterInValuesAbout
mint*pathstringThe coin’s mint address.
limitqueryinteger 1–100 (default 20)
curl "https://weball.fun/api/v1/coins/<mint>/holders"

GET/wallets/{wallet}/rewardsBasic

What a wallet has been paid, and is owed

`paid`: payouts with token, amount and signature; `owed`: shares below the minimum payout, carried to the next round.

ParameterInValuesAbout
wallet*pathstringA Solana wallet address.
coinquerystringOnly this coin.
limitqueryinteger 1–200 (default 50)
curl "https://weball.fun/api/v1/wallets/<wallet>/rewards"

GET/creators/{wallet}Basic

A creator’s coins and earnings

`coins` with earnings (creator mode); `recentSends`: payments to the creator.

ParameterInValuesAbout
wallet*pathstringA Solana wallet address.
curl "https://weball.fun/api/v1/creators/<wallet>"

GET/coins/{mint}/healthPremium

Health grade and signals

`grade` (A–F; null when not scored yet or over an hour old), `checkedAt`, `signals` (top10Bps, creatorUnlockedBps, creatorSoldLaunchBuy, sniperBps, bundleBps, insiderBps, washBps: shares of supply in bps, 10,000 = 100%; mintAuthority and freezeAuthority: true while still set, absent on older grades), `levels` (ok, caution or warning per signal) and `context` (holders, the creator’s other launches and graduations). Flags warnings; never a sign a coin is safe.

ParameterInValuesAbout
mint*pathstringThe coin’s mint address.
curl "https://weball.fun/api/v1/coins/<mint>/health"