io.github.predgeAI/whale-data-mcp

Official registry Games, sports and entertainment

Signed settled outcomes (Polymarket, sports) + whale signals as agent tools, paid via x402.

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

NPM package @predge/whale-data-mcp
Claude Code
claude mcp add whale-data-mcp -e 'BUYER_PRIVATE_KEY=<your buyer_private_key>' -e 'X402_NETWORK=<X402_NETWORK>' -e 'MAX_PRICE_USD=<MAX_PRICE_USD>' -e 'PREDGE_BASE_URL=<PREDGE_BASE_URL>' -e 'SOLANA_BUYER_SECRET=<your solana_buyer_secret>' -e 'X402_SOLANA_NETWORK=<X402_SOLANA_NETWORK>' -e 'SOLANA_RPC_URL=<SOLANA_RPC_URL>' -- npx -y @predge/whale-data-mcp@0.2.2
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "whale-data-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "@predge/whale-data-mcp@0.2.2"
            ],
            "env": {
                "BUYER_PRIVATE_KEY": "<your buyer_private_key>",
                "X402_NETWORK": "<X402_NETWORK>",
                "MAX_PRICE_USD": "<MAX_PRICE_USD>",
                "PREDGE_BASE_URL": "<PREDGE_BASE_URL>",
                "SOLANA_BUYER_SECRET": "<your solana_buyer_secret>",
                "X402_SOLANA_NETWORK": "<X402_SOLANA_NETWORK>",
                "SOLANA_RPC_URL": "<SOLANA_RPC_URL>"
            }
        }
    }
}

Environment variables

  • BUYER_PRIVATE_KEY secret Funded Base-mainnet key that signs USDC micropayments. Either this or SOLANA_BUYER_SECRET enables paid tools; the free tools (discovery, settlement risk, record verification) need neither.
  • X402_NETWORK x402 network: 'base' (mainnet, real USDC) or 'base-sepolia' (only against a testnet deployment).
  • MAX_PRICE_USD Hard per-call price cap in USD. Calls priced above it are refused before any payment. Default 0.05.
  • PREDGE_BASE_URL Override the API base URL (alias: PREDGE_API_URL). Defaults to https://api.predge.io.
  • SOLANA_BUYER_SECRET secret Funded Solana-mainnet key (64-number JSON array or base58) to also pay on Solana. Optional — either this or BUYER_PRIVATE_KEY enables paid tools.
  • X402_SOLANA_NETWORK Solana network: 'solana' (mainnet) or 'solana-devnet'. Defaults to match X402_NETWORK's testnet-ness.
  • SOLANA_RPC_URL Optional custom Solana RPC (the public mainnet-beta endpoint is rate-limited).

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. @predge/whale-data-mcp
  2. Get a free key
  3. Install (one command)
  4. Tools
  5. Config (env)
  6. Safety
  7. Run from source
  8. Verify locally

@predge/whale-data-mcp

MCP server that exposes the Predge API at https://api.predge.io (signed delivery verdicts for AI-agent payments, Polymarket whale trades, smart-money signals, signed attestations, and free signed UMA settlement risk) as tools. Payment is handled under the hood: each paid tool call signs a USDC micropayment via an x402 client — the agent just calls the tool and gets data back. You supply a funded buyer key.

Defaults to Base mainnet (the live Predge API is mainnet-only). Paid tools spend real USDC — typically $0.005–$0.03/call, hard-capped at MAX_PRICE_USD ($0.05 by default) before any money moves. Use a dedicated, low-balance buyer wallet.

Get a free key

Free pilot key in a minute: https://predge.io/start (no card)

With the MCP server: claude mcp add predge-whale-data -e PREDGE_KEY=pdg_pilot_... -- npx -y @predge/whale-data-mcp (no wallet needed for the calls the key covers, see Optional: a Predge key below).

First call over plain HTTP: a signed delivery verdict for a paid agent call.

export PREDGE_KEY=pdg_pilot_...   # from predge.io/start
curl -s https://api.predge.io/v1/verdicts \
  -H 'content-type: application/json' \
  -H "x-predge-key: $PREDGE_KEY" \
  -d '{"job":{"endpoint":"https://api.example.com/v1/report","expected_content_type":"application/json","required_fields":["rows"]},
       "delivery":{"status":200,"headers":{"content-type":"application/json"},"body":"{\"rows\":[1]}"},
       "payment":{"amount_usd":0.25,"payer":"0xBuyer","payee":"0xMerchant"}}'

The response carries verdict (delivered / not_delivered / inconclusive), reason_codes, an ed25519 attestation and a verify_url. Docs: predge.io/docs#verdicts.

No key? Pay per call over x402 instead: the same request without x-predge-key answers 402 with the price ($0.05), payable in USDC by any x402 client.

Install (one command)

Claude Code:

claude mcp add predge-whale-data \
  -e BUYER_PRIVATE_KEY=0xYOUR_FUNDED_BASE_MAINNET_KEY \
  -e X402_NETWORK=base \
  -- npx -y @predge/whale-data-mcp

Claude Desktop / Cursor / any MCP client — add to the client's MCP config:

{
  "mcpServers": {
    "predge-whale-data": {
      "command": "npx",
      "args": ["-y", "@predge/whale-data-mcp"],
      "env": {
        "BUYER_PRIVATE_KEY": "0xYOUR_FUNDED_BASE_MAINNET_KEY",
        "X402_NETWORK": "base"
      }
    }
  }
}

That's it — the agent gets 25 tools (18 paid routes + 7 free tools: discovery, settlement risk, verdict re-read, verdict report, key status, Desk config, record verification). Discovery, settlement risk, verdict re-read and record verification need no key at all. No account; the buyer key pays USDC per call on Base or Solana. Fund it with a few dollars of USDC (the facilitator pays gas, so no ETH/SOL needed).

Optional: a Predge key (PREDGE_KEY)

Set PREDGE_KEY and the server sends it as the x-predge-key header on every request:

  • Pilot key, free, from **https://predge.io/start** (email, no card): the settlement estimate (predge_settlement_estimate) and delivery verdicts (predge_verdict) are free for 30 days, and predge_verdict_report returns your signed monthly report. After the window those calls answer 402 again; with a buyer key they then pay per call.
  • Desk key, from **https://predge.io/desk** (14-day trial): predge_desk_config.
claude mcp add predge-whale-data -e PREDGE_KEY=pdg_pilot_... -- npx -y @predge/whale-data-mcp

The key goes first: a call it covers never pays, even with a buyer key set. Without a key or a buyer wallet, a paid tool returns the API's 402 explanation (price, networks, how to pay, where to get a pilot key) instead of failing opaquely. The key is never logged and never copied into a tool result.

ElizaOS — add to your character file (via @fleek-platform/eliza-plugin-mcp):

{
  "plugins": ["@fleek-platform/eliza-plugin-mcp"],
  "settings": {
    "mcp": {
      "servers": {
        "predge": {
          "type": "stdio",
          "command": "npx",
          "args": ["-y", "@predge/whale-data-mcp"],
          "env": { "BUYER_PRIVATE_KEY": "0xYOUR_FUNDED_BASE_MAINNET_KEY", "MAX_PRICE_USD": "0.05" }
        }
      }
    }
  }
}

Set MAX_PRICE_USD to hard-cap spend — any call above it is refused before payment. Full integration guide (ElizaOS, Claude, raw x402 for non-MCP stacks, spend caps): **https://predge.io/docs#whale-data**

Tools

ToolPriceReturns
predge_list_endpointsfreeAPI description + every endpoint with its price/schema (call first)
predge_settlement_riskfreeSigned live UMA settlement risk for one Polymarket market, read from Polygon: UMA state, current proposal + challenge window, every dispute, UMA-vote status, bulletin-board updates, on-chain resolution, risk_level (ok\watch\caution\resolved), segment_dispute_rate, settlement_estimate_available. The settlement_estimate itself is paid: predge_settlement_estimate. The tool re-verifies the ed25519 signature and returns { verification, record }. Param: market (condition id, numeric market id, or slug). 60 req/min per IP
predge_settlement_estimate~$0.02; free with a pilot keySame signed settlement-risk record with settlement_estimate (statistic from 2026 Polymarket UMA disputes, not advice). GET /v1/settlement-risk/:market/estimate. Check settlement_estimate_available in the free record first. Returns { verification, record }. Param: market
predge_verdict ⭐$0.05 / $0.50; free with a pilot keyDelivery verdict: was the paid job delivered? Send job (what was promised: endpoint, expected_content_type, json_schema, required_fields, max_latency_ms, expected_sha256…), delivery (evidence: status, headers, body or body_sha256, timing), payment (amount_usd, tx_hash, network, payer, payee), optional agent / provider_agent (id, version, operator, authorization_ref). payment.amount_usd < 1 → POST /v1/verdicts ($0.05), ≥ 1 → POST /v1/verdicts/large ($0.50; paying it over x402 needs MAX_PRICE_USD ≥ 0.5). Returns a signed verdict (delivered \not_delivered \inconclusive), per-check results, reason codes and a refund recommendation, as { verification, record }
predge_get_verdictfreeGET /v1/verdicts/:id: re-read a stored signed verdict, re-verified. Param: id (vrd_ + 24 chars)
predge_verdict_reportfree, needs PREDGE_KEYGET /v1/verdicts/report: signed monthly dispute-handling report for the verdicts your key requested (counts, refund recommendations, reason codes, time to verdict, verdict ids). Params: month (YYYY-MM), merchant_id, limit, cursor, sample
predge_key_statusfree, needs PREDGE_KEYGET /v1/me: your key's plan, quota and pilot expiry
predge_desk_configfree, needs a Desk keyGET /v1/desk/config: watched wallets, alert targets (webhook, Telegram), plan status
predge_verify_recordfreeOffline check of any Predge signed record (predge-attest-v1): C(payload) == canonical, sha256(canonical) == content_hash, ed25519 signature, envelope_signature, and signer listed active in predge-keys.json. Param: record (JSON string)
predge_whales_latest~$0.005Latest whale trades ≥$10k (15-min delay). Param: limit (1-100)
predge_whale_market~$0.017-day whale activity for one market. Param: condition_id
predge_signals_daily~$0.0224h digest: top markets, net flow, largest bets
predge_wallets_leaderboard~$0.01Wallets ranked by edge over resolved markets. Params: window (7d\30d), limit
predge_wallet_profile~$0.01Wallet score, win rates, categories, last 20 trades. Param: address
predge_markets_movers~$0.005Largest YES-price moves. Param: window (1h\6h\24h)
predge_signals_consensus~$0.03Edge-verified smart-money net flow + direction per market
predge_attest ⭐~$0.02Flagship. Resolved-outcome attestation — the settled truth for a market (resolved, resolution, resolved_at). Optional side (yes\no) checks whether a past signal/win-rate claim was actually right. Params: condition_id, side
predge_sports_attest ⭐~$0.02Flagship. Ed25519-signed settled game outcome (winner, final score, completed) from ESPN, verifiable offline against Predge's published key. Optional winner (team abbr) → correct. Settle bets / prove a track record on tamper-evident truth. Leagues: nba, wnba, nfl, college-football, mlb, nhl, mls, epl, champions-league, laliga. Params: league, event_id, winner
predge_bets_biggest~$0.005Top-20 largest single trades across all markets. Param: window (24h\7d)
predge_signals_daily_category~$0.0124h digest scoped to one category. Param: category
predge_signals_consensus_category~$0.02Consensus scoped to one category. Param: category
predge_signals_market~$0.01Single-market smart-money verdict ("trust this move?"). Param: condition_id
predge_wallet_history~$0.02Wallet trade history + running win-rate & PnL curve. Params: address, window (30d\90d\all)
predge_wallets_compare~$0.02Compare 2-10 wallets side-by-side + market overlap. Param: addresses
predge_market_history~$0.01Price/volume history for one market. Params: condition_id, window (7d\30d\all)

Every paid result includes a note with the on-chain settle tx. Not exposed as tools (raw x402/HTTP reaches them; see predge_list_endpoints): the /v1/markets/:id/edge polling pulse, the /v1/onchain/* routes, and the signed-calls / stakes / track-record routes. Paused routes (503 signed_wallet_outputs_paused) have no tool: the wallet track-record attestation /v1/wallets/:address/attest (the predge_wallet_attest tool was removed in 0.3.0), /v1/onchain/pm-activity, /v1/onchain/pm-flows and the free /v1/signal/:address.

Verifying signed records yourself

Every Predge signed record carries an attestation envelope. The rule is published at data.predge.io/canonicalization.md: canonical is the payload as JSON with keys sorted at every level and no whitespace; content_hash = sha256(canonical); signature is ed25519 over the UTF-8 bytes of canonical; the signer must be an active key in https://api.predge.io/.well-known/predge-keys.json (attestation kid 13fa3d18a369e6c7). src/verify.ts implements this with node:crypto only.

Config (env)

Paid tools need a funded key for at least one rail — Base (BUYER_PRIVATE_KEY) and/or Solana (SOLANA_BUYER_SECRET). Every paid route's 402 offers both networks; the client pays on whichever it holds a key for (cheapest when both). The facilitator pays the network fee on either rail — the wallet needs USDC only.

VarDefaultNotes
PREDGE_KEY—Optional. Pilot key (predge.io/start) or Desk key (predge.io/desk), sent as x-predge-key on every request. Never logged. See above.
BUYER_PRIVATE_KEY—Funded Base-mainnet EVM key (0x…) for the Base rail.
SOLANA_BUYER_SECRET—Optional. Funded Solana-mainnet key (64-number JSON array or base58) for the Solana rail.
X402_NETWORKbaseBase network: base = mainnet (real USDC), base-sepolia only against a testnet deployment.
X402_SOLANA_NETWORKmatches X402_NETWORKsolana (mainnet) or solana-devnet.
SOLANA_RPC_URL@x402/svm defaultOptional custom Solana RPC (public mainnet-beta is rate-limited).
PREDGE_BASE_URLhttps://api.predge.ioOverride to point at another deployment. PREDGE_API_URL is accepted as an alias. Signatures are always checked against the key set on api.predge.io.
MAX_PRICE_USD0.05Any call priced above this is refused before paying.
PREDGE_MCP_USER_AGENTpredge-whale-data-mcp/<version>Sent on every request (lets the API attribute MCP traffic).

predge_list_endpoints, predge_settlement_risk, predge_get_verdict and predge_verify_record work without any key.

Upgrading from 0.1.10 or older: those versions default to a decommissioned API host and every call fails with 404. Upgrade to 0.2.0 (npx -y @predge/whale-data-mcp@latest), or set PREDGE_BASE_URL=https://api.predge.io.

Testnet

To exercise the payment path without real money, point PREDGE_BASE_URL at a Base-Sepolia deployment of the API and set X402_NETWORK=base-sepolia; fund the buyer from faucet.circle.com. (The public prod API is mainnet-only, so testnet needs your own deployment.)

Safety

  • Price cap — MAX_PRICE_USD is enforced in the payment selector, so an over-cap call is refused before any money moves (no wasted request).
  • Network guard — the client only pays a requirement on the configured network; it won't accidentally settle a mainnet requirement while in testnet mode (or vice-versa).
  • No key handling beyond env — the server reads BUYER_PRIVATE_KEY from env, never logs it, and never sends it anywhere but the local signer. Use a dedicated low-balance wallet and keep the key out of version control. PREDGE_KEY is only ever placed in the x-predge-key request header to the Predge API; it is never logged, and an API error that echoes it is redacted.

Run from source

git clone https://github.com/predgeAI/whale-data-mcp.git
cd whale-data-mcp && npm install && npm run build
# then point your MCP client's "command" at node with args ["/abs/path/whale-data-mcp/dist/index.js"]

Verify locally

npm test                                               # unit tests (no network, no payment)
npm run inspect                                        # list tools (no payment)
node dist/dev-list-tools.js predge_list_endpoints      # free call against prod
node dist/dev-list-tools.js predge_settlement_risk '{"market":"<condition id or slug>"}'   # free, signed
# paid call (spends real USDC on mainnet):
BUYER_PRIVATE_KEY=0x… X402_NETWORK=base node dist/dev-list-tools.js predge_whales_latest '{"limit":2}'

Frequently asked questions

What is io.github.predgeAI/whale-data-mcp?

Signed settled outcomes (Polymarket, sports) + whale signals as agent tools, paid via x402.

How do I install io.github.predgeAI/whale-data-mcp?

It runs on your machine. In Claude Code: claude mcp add whale-data-mcp -e 'BUYER_PRIVATE_KEY=<your buyer_private_key>' -e 'X402_NETWORK=<X402_NETWORK>' -e 'MAX_PRICE_USD=<MAX_PRICE_USD>' -e 'PREDGE_BASE_URL=<PREDGE_BASE_URL>' -e 'SOLANA_BUYER_SECRET=<your solana_buyer_secret>' -e 'X402_SOLANA_NETWORK=<X402_SOLANA_NETWORK>' -e 'SOLANA_RPC_URL=<SOLANA_RPC_URL>' -- npx -y @predge/whale-data-mcp@0.2.2. For other clients, paste the JSON configuration from this page into their MCP settings.

Does io.github.predgeAI/whale-data-mcp need an API key?

Yes. It expects BUYER_PRIVATE_KEY, SOLANA_BUYER_SECRET, which you set in its configuration.

Is io.github.predgeAI/whale-data-mcp open source?

Yes. Its code is on GitHub under the MIT license.

Who maintains io.github.predgeAI/whale-data-mcp?

It is published by predgeAI. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.