{"apiVersion":"v1","directorySlug":"whoearns-mcp-83cb6a4583","title":"WhoEarns","description":"WhoEarns is an AI-assisted open data project by 0base.vc for Solana validator income: live-trend block fees, Jito tips, slots, skip rate, and income per slot.","pageUrl":"https://www.mcpbundles.com/skills/whoearns-mcp-83cb6a4583","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://whoearns.live/mcp","hostedMcpUrl":null,"toolCount":6,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"live.whoearns/whoearns-mcp-83cb6a4583","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"get_current_epoch","description":"Returns the running epoch number, slot range, and elapsed slot count. Call this first to anchor any per-epoch question. Numeric fields ending in \"Lamports\" are STRINGS (decimal). Parse as BigInt — values routinely exceed Number.MAX_SAFE_INTEGER. SOL fields are decimal strings (1 SOL = 1_000_000_000 lamports). Current-epoch income is a monotonic lower bound; closed-epoch income is final. Missing data is represented by null numerics and hasSlots/hasIncome booleans.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"Get current Solana epoch","logicalName":"get_current_epoch","displayName":"Get current Solana epoch","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_leaderboard","description":"Returns top-N validators for a selected leaderboard window. Default window=live_trend and sort=income_per_slot, combining the running epoch with the latest closed epoch. window=current_only shows only elapsed running-epoch leader slots; stable_trend adds two closed epochs; final_epoch ranks the latest closed epoch; decade_epoch ranks the latest complete 10-epoch block and requires all 10 epoch rows. sort=income_per_slot is stake-neutral. sort=total_income biases toward big-stake validators. sort","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"sort":{"enum":["income_per_slot","total_income","mev_tips","fees","skip_rate"],"type":"string"},"limit":{"type":"integer","maximum":100,"minimum":1},"window":{"enum":["live_trend","current_only","stable_trend","final_epoch","decade_epoch"],"type":"string"},"minWindowSlots":{"type":"integer","maximum":500,"minimum":1}},"additionalProperties":false},"title":"Get top Solana validators","logicalName":"get_leaderboard","displayName":"Get top Solana validators","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_validator","description":"Returns per-epoch income history for ONE validator. Pass either a vote pubkey OR an identity pubkey — both resolve to the same validator. Items are newest-first. Each item carries slot counts (slotsAssigned/Produced/Skipped + skipRate), fee/tip/income totals (blockBaseFeesTotalLamports, blockPriorityFeesTotalLamports, blockFeesTotalLamports, blockTipsTotalLamports, totalIncomeLamports), activatedStakeLamports, and freshness timestamps. NOTE: peer benchmarks (mean/median per-slot income), the sam","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["voteOrIdentity"],"properties":{"epochLimit":{"type":"integer","maximum":50,"minimum":1},"voteOrIdentity":{"type":"string"}},"additionalProperties":false},"title":"Get validator income history","logicalName":"get_validator","displayName":"Get validator income history","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_validator_leader_slots","description":"Returns one validator epoch of stored watched leader-slot facts. Use this for data-quality checks and insight generation: processed/pending/fetch-error slots, fact capture completeness, failed tx rate, tip-bearing block ratio, max priority fee, max Jito tip, compute units, cost units, ComputeBudget requests, income per 1M CU, and best block. This tool does NOT trigger Solana RPC; it reads the same local slot facts as /v1/validators/{idOrVote}/epochs/{epoch}/leader-slots. Prefer closed epochs and","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["voteOrIdentity","epoch"],"properties":{"epoch":{"type":"integer","minimum":0},"voteOrIdentity":{"type":"string"}},"additionalProperties":false},"title":"Get validator leader-slot facts","logicalName":"get_validator_leader_slots","displayName":"Get validator leader-slot facts","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_validator_tier","description":"Returns the Node Tier (forge / anvil / hearth / kindling / unrated) for ONE validator. Pass either a vote pubkey OR an identity pubkey. Node Tier composite — `0.3 × reliability + 0.7 × economicScore`, where `economicScore = 0.9 × economicPercentile + 0.1 × cuSubscore`. Reliability is the pessimistic Wilson upper bound on skip rate (so small samples cannot inflate to 1.0). Economic percentile is the cohort rank of this validator's median per-leader-slot income across 10 CLOSED epochs, computed ag","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["voteOrIdentity"],"properties":{"voteOrIdentity":{"type":"string"}},"additionalProperties":false},"title":"Get validator Node Tier","logicalName":"get_validator_tier","displayName":"Get validator Node Tier","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_validator_badges","description":"Returns the profile-level badge row for ONE validator: tenure (first-seen epoch, active-epoch count, landmark badge), client kind + version (from gossip ingestion), and Node Tier. Pass either a vote pubkey OR an identity pubkey. This is the single-call equivalent of the badge strip on a validator profile page — use it when you need the \"who is this operator\" summary rather than per-epoch income. The tier sub-object mirrors get_validator_tier: composite is `0.3 × reliability + 0.7 × economicScore","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["voteOrIdentity"],"properties":{"voteOrIdentity":{"type":"string"}},"additionalProperties":false},"title":"Get validator badge row","logicalName":"get_validator_badges","displayName":"Get validator badge row","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=WhoEarns&config=eyJ1cmwiOiAiaHR0cHM6Ly93aG9lYXJucy5saXZlL21jcCJ9"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22WhoEarns%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fwhoearns.live%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22WhoEarns%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fwhoearns.live%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=WhoEarns&connectorUrl=https%3A%2F%2Fwhoearns.live%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"WhoEarns\" --url \"https://whoearns.live/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/whoearns-mcp-83cb6a4583","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/whoearns-mcp-83cb6a4583/tools/{tool}","mcpServerUrl":"https://whoearns.live/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/whoearns-mcp-83cb6a4583?live=1"}