io.github.LamboPoewert/madeonsol
Solana KOL trading intelligence & deployer analytics via x402 micropayments or API key.
Versions
1.10.1latestTools 96
madeonsol_kol_feed Get real-time Solana KOL trades from 1,000+ tracked wallets. Each trade includes the token
madeonsol_kol_coordination KOL convergence signals (v1.2) — tokens being accumulated by multiple KOLs. Response includes peak_kols/peak_buys (busiest window slice), exited_count (net-flow-negative wallets), 0-100 coordination_score, and (v1.2 / 2026-05-06) market_cap_usd_at_first_buy + market_cap_usd + last_price_usd so you can see whether the cluster formed at micro-cap or after the chart was already running. Blacklist filters WIF/BONK/stables by default.
madeonsol_kol_leaderboard Get KOL performance rankings by PnL and win rate. PRO+ can sort by alternative axes (winrate/roi/profit_factor/early_entry).
madeonsol_deployer_alerts Get real-time alerts from Pump.fun deployers with KOL buy enrichment. Filters: deployer tier, alert_type, priority, and min_kol_buys to gate out noise. Cursor-paginated via
madeonsol_kol_pairs KOL affinity matrix — discover which KOLs frequently co-trade the same tokens within a time window.
madeonsol_kol_timing KOL entry/exit timing profile — hold duration, exit speed, and activity patterns for a specific KOL.
madeonsol_deployer_trajectory Deployer skill curve — streaks, rolling bond rate, improvement trend, and deployment cadence for a Pump.fun deployer. Works with an msk_ key (Pro/Ultra) or keyless via x402 ($0.01/call).
madeonsol_deployer_stats Ecosystem-wide Pump.fun deployer stats — tracked_count (how many deployers we grade), signals_today, bonds_detected, the chain-wide bond_rate, and a per-tier count (elite/good/rising). Use this to size expectations before reading the leaderboard: a bond_rate of ~0.02 chain-wide is what makes an elite deployer
madeonsol_deployer_leaderboard Pump.fun deployer reputation leaderboard, ranked by bonding rate, recent form, total bonded, or last deploy. Unranked deployers are excluded. IMPORTANT: compare bonding_rate (LIFETIME) against recent_bond_rate (ROLLING) — the gap between them is the signal, not either number alone; a deployer at 0.40 lifetime and 0.05 recent is cooling off. runner_rate (share of labeled tokens that ran rather than dumped) is only meaningful once labeled_tokens >= 3. Requires an msk_ key.
madeonsol_deployer_profile One Pump.fun deployer
madeonsol_deployer_tokens Every token deployed by one Pump.fun wallet, paginated — each row with deployed_at, bonded_at, time-to-bond and peak market cap. Use only_bonded to see just the graduations. Pair with madeonsol_deployer_profile to check whether a deployer
madeonsol_deployer_alert_stats Deployer alert volume over a lookback window, with bond-rate and market-cap-multiplier distributions (pct_2x / pct_5x / pct_10x / pct_50x, avg and best) broken out per tier. This is the tool for sizing and monitoring deployer-hunter usage, and for answering
madeonsol_deployer_best_tokens Best-performing recent tokens launched by RANKED (non-unranked) Pump.fun deployers, by peak market cap multiple over the alert price. Each row carries the deployer wallet and tier alongside mc_at_bond, peak_market_cap and mc_multiplier. Requires an msk_ key.
madeonsol_deployer_recent_bonds Tokens from tracked Pump.fun deployers that just graduated to Raydium, newest first, each with time_to_bond_minutes, mc_at_bond, peak market cap and the full deployer reputation block. POLL INCREMENTALLY: pass the previous response
madeonsol_kol_hot_tokens KOL momentum tokens — tokens with accelerating KOL buy interest, early signals before coordination triggers. PRO+ adds buyer-quality filters.
madeonsol_kol_token_entry_order Ranked KOL first-buyers for a specific token, ordered by entry timestamp. PRO+ adds percentile_pnl_7d per entry.
madeonsol_kol_compare_wallets Side-by-side comparison of 2-5 KOL wallets — strategy, winrates, ROI, percentile. PRO+ adds 30d overlap tokens (bought by 2+ of the wallets).
madeonsol_kol_alerts_recent Live KOL alert feed — consensus clusters, fresh-token KOL buys, and heating-up wallets in one unified stream.
madeonsol_kol_pnl Deep per-wallet PnL breakdown — realized PnL, win rate, profit factor, max drawdown, daily equity curve, closed/open positions. BASIC: summary only. PRO: + curve + closed. ULTRA: + open positions.
madeonsol_first_touch_subscriptions_list List your first-touch webhook subscriptions. ULTRA only.
madeonsol_kol_trending_tokens Tokens ranked by KOL buy volume — pure capital-flow signal. Sub-hour periods (5m/15m/30m) require PRO/ULTRA.
madeonsol_sniper_recent Deshred pre-confirm pump.fun deploy feed — new launches surface ~500ms before they confirm on-chain (reconstructed from shred-level data). Each deploy now carries footprint — the slot-window snipe rollup ({ buys, buyers, sol, supply_pct|null, sniper_wallet_buys, data_available, as_of } | null; buys in slots deploy-1..deploy+3). footprint is null for deploys younger than the ~10-min settle window or outside the trade-pipeline write-gate — absent, not zero. PRO (msk_ key) sees elite/good deployers; ULTRA sees every tier; also callable keyless via x402 ($0.01/call, elite/good scope).
madeonsol_sniper_by_deployer Deshred pre-confirm deploys filtered to a single deployer wallet — audit a deployer
madeonsol_discovery List all available MadeOnSol API endpoints with prices and parameter docs. Free, no auth required. The keyless x402 catalog now covers 25 endpoints — recent additions: token candles ($0.01), almost-bonded ($0.01), top-traders ($0.02), cap-table ($0.02), sniper recent deploys ($0.01), token flow ($0.01), and deployer trajectory ($0.01).
madeonsol_wallet_tracker_watchlist List your tracked wallets with labels and remaining watchlist capacity. BASIC=10, PRO=50, ULTRA=100.
madeonsol_wallet_tracker_add Add a Solana wallet to your watchlist. Returns 409 if already tracked or limit reached.
madeonsol_wallet_tracker_remove Remove a wallet from your watchlist.
madeonsol_wallet_tracker_trades Historical swap and transfer events for all your watched wallets. BASIC: truncated wallets, no tx_signature.
madeonsol_wallet_tracker_summary Per-wallet stats: swap counts, SOL bought/sold, and last activity time across your watchlist.
madeonsol_wallet_stats Aggregate stats for any Solana wallet over the last 90 days plus cross-product flags (is_kol, is_alpha_tracked with bot_confidence + win_rate + net_pnl, is_deployer with tokens_deployed + bonding_rate). flags now also carries reputation flags — is_sniper, is_bundler, is_dumper — plus a dump_cluster block ({ dump_cohorts, runner_cohorts, total_cohorts, as_of } | null). bot_confidence is a string enum
madeonsol_wallet_pnl Full FIFO cost-basis PnL for any wallet: realized + unrealized SOL, profit factor, max drawdown, avg + median hold minutes, daily UTC PnL curve, closed positions sorted by pnl desc (with ROI %, hold time, win/loss), and open positions hydrated with live current prices from the market-cap tracker. Cached with dynamic TTL (5min active / 1h recent / 24h dormant). Cache hits don
madeonsol_wallet_positions Open positions only for any wallet — lighter slice of madeonsol_wallet_pnl for use cases that don
madeonsol_wallet_holdings Verified CURRENT on-chain holdings for any wallet — reads the wallet
madeonsol_wallet_trades Cursor-paginated raw trades for any wallet. Filter by action (buy/sell), specific token_mint, time window via since/until (Unix seconds; default last 90 days). Cursor encodes (block_time, id) for stable DESC pagination — pass next_cursor from the previous response to fetch older trades. Limit 1-500 (default 100). Each trade carries price_sol/price_usd (THIS trade
madeonsol_wallet_batch_classify Bulk wallet reputation flags for 1-100 wallets in ONE call (counts as one request). Per wallet: is_sniper / is_bundler / is_dumper / is_kol (+ kol_name), bot_confidence (string enum
madeonsol_create_webhook Register a webhook URL to receive real-time push notifications for KOL trades and deployer alerts. Requires Pro/Ultra subscription.
madeonsol_list_webhooks List all your registered webhooks with delivery status and failure counts.
madeonsol_delete_webhook Delete a webhook by ID. Permanently removes the webhook and its delivery history.
madeonsol_test_webhook Send a sample event payload to a webhook URL to verify it works. Returns status code and response time.
madeonsol_stream_token Get your WebSocket streaming token. Stream tokens NEVER EXPIRE: every call returns the same token until your subscription lapses or you pass rotate=true, which replaces it (the previous value keeps working for 60 s). expires_at / next_refresh_at are always null (kept for wire compatibility); the response also carries rotated (boolean) and lifetime (string). The server never rotates on its own and never sends token_refresh unless you rotated; a 4001 close means
madeonsol_stream_sessions_list List your live WebSocket streaming sessions. Returns sessions[] (each with id, service
madeonsol_stream_session_kill Evict (force-disconnect) one live WebSocket streaming session by id — frees the connection slot it holds. Returns { evicted: true, id }; 404 { error, id } if no such live session, 400 if id is not a positive integer. PRO/ULTRA only.
madeonsol_me Inspect your MadeOnSol API account — current tier, daily/burst quota state, remaining requests, subscription expiry, and per-feature usage (webhooks, copy-trade wallets, coordination rules, etc.). Use to self-throttle without parsing rate-limit headers.
madeonsol_tokens_list Filtered, sortable token directory. Browse all tracked Solana tokens by market-cap band, liquidity floor, recent-activity window, primary DEX, authority/safety flags, and computed 1h volume / MEV-share / MC-change deltas. Default min_liq=2000 skips phantom-MC dust (low-liquidity pools producing absurd VWAP×supply products) — pass min_liq=0 to opt out. Computed filters (min_volume_1h_usd, max_mev_share_pct, mc_change_1h_min_pct, mc_change_1h_max_pct) over-fetch and post-filter — pagination.post_filtered=true on the response means page size may be < limit. PRO+ only.
madeonsol_almost_bonded Pre-bond pump.fun tokens approaching graduation, ranked by VELOCITY (Δprogress/min) —
madeonsol_alpha_leaderboard Top statistically profitable early-buyer wallets, scored from 25,000+ early-buyer records. BASIC=25 (truncated), PRO=100, ULTRA=500 + bot signals.
madeonsol_alpha_wallet Full alpha profile for one wallet — per-token breakdown + bot_signals array. ULTRA only.
madeonsol_alpha_linked Wallets behaviorally linked to a target wallet (co-bought 3+ tokens within 2 seconds). ULTRA only.
madeonsol_token_cap_table First non-deployer early buyers for a token, enriched with PnL, KOL identity, and bot flags. PRO=top 10 (truncated wallets), ULTRA=top 20 (full). BASIC: 403.
madeonsol_token_buyer_quality 0–100 buyer-quality score for a token
madeonsol_token_risk Transparent 0–100 token rug-risk/safety score (higher = riskier). Returns a band (safe/caution/danger), an explainable factors[] array (mint authority, freeze authority, liquidity, transfer fee, token-2022, burn, launch cohort, deployer bond rate, KOL signal, blacklist) each with status/points/detail, and the raw inputs that produced the score. inputs now includes sniper_footprint — the slot-window launch-snipe rollup ({ buys, buyers, sol, supply_pct|null, sniper_wallet_buys, data_available, as_of } | null; buys landing in slots deploy-1..deploy+3). data_available=false means the mint isn
madeonsol_token_bundle Bundle-cohort holdings for a token — which same-slot bundle wallets bought it and how much of supply they still hold (held_pct_of_supply). Rug/insider signal. Returns a `bundle` block (wallet_count, bundle_kind atomic_tx/same_slot/none, held_ratio, held_pct_of_supply [the headline — net held / circulating supply, null if unknown], fully_exited, buy_volume, tokens_held) plus a `wallets[]` array (rank, wallet, held_ratio, has_sold, atomic, is_kol). BASIC get the bundle block only (empty wallets[]); PRO adds top-10 flags-only wallets; ULTRA returns the full cohort with enriched identities (kol_name, win_rate, bot_confidence, tokens_held).
madeonsol_first_touch_subscriptions_get Get one first-touch subscription by id. ULTRA only.
madeonsol_token_pools Per-venue liquidity map for a Solana token — every DEX pool it trades in (pump.fun/PumpSwap/Raydium/Meteora/Orca) with per-pool liquidity, live vs parked (is_active), plus a summary (total liquidity, pool/DEX counts, primary/deepest pool, top_pool_share_pct concentration). Shows WHERE liquidity sits and how fragmented it is, vs the single aggregate number from the token endpoint.
madeonsol_token_holders Live holder census + concentration for a Solana token — WHO HOLDS NOW (madeonsol_token_cap_table is who bought first). Read live from the ledger at confirmed: every token account of the mint (mint-scoped getProgramAccounts), merged per owner, ranks 1–100 retained. concentration.holder_count is EXACT — distinct non-zero owners minus the excluded pools/curves/burns — and is null ONLY when the provider refuses the census for a mega-cap (TRUMP/JUP/BONK class): then source.method=getTokenLargestAccounts, source.census_fallback_reason is set and only the top-20 view is served; it is NEVER estimated from trades. Every disclosed owner carries labels[] from MadeOnSol wallet intelligence — deployer / kol / early_buyer / buyer / bundle / bot / dump_cluster (+ kol_name, early_buyer_rank, bot_confidence, historical_win_rate); an EMPTY labels[] means unknown to us, NOT verified clean. Liquidity pools, bonding curves, vaults and burn addresses are EXCLUDED from the circulating denominator and NAMED in excluded[] with reason = pool (dex + pool_address set) | bonding_curve (pump.fun/LaunchLab) | burn | program_account (off-curve owner we could not attribute); concentration splits them into pool_pct / burned_pct / program_pct (over TOTAL supply), while top1/top10/top20/top50/top100_share and deployer/kol/early_buyer/bundle/bot/dump_cluster_pct are over circulating (supply minus excluded). amount_raw / supply_raw / circulating_raw are raw u64 returned as decimal STRINGS — never coerce to a float. Disclosure is tier-gated: PRO ranks 1–10, ULTRA 1–50, BUSINESS 1–100 (the maths is tier-independent). Large established tokens take 5–30 s to enumerate upstream: the first call may return HTTP 503 with error_kind=holder_scan_in_progress and retry_after_seconds=20 — the scan keeps running and is cached, so retry after ~20 s and the answer is instant. 404 not_a_mint = not a mint on-chain; 503 holder_rpc_unavailable (retry 15 s) = we fail closed rather than guess. PRO+ — BASIC receives HTTP 403.
madeonsol_token_locks Token locks & vesting on ONE Solana mint — every on-chain lock / vesting contract from Streamflow, Jupiter Lock and Bonfida token-vesting, decoded from the locker programs
madeonsol_token_locks_feed Cross-token feed of NEW token lock / vesting contracts — who just locked tokens, of what mint, how much, until when — newest first, across ALL mints, from Streamflow, Jupiter Lock and Bonfida vesting. Each row has the same shape as a madeonsol_token_locks contract (lock_account, program, kind, status, sender, recipient, amount_* / locked_* / claimable_*, schedule, terms, next_unlock, created_at, tx_signature) plus token {symbol, name, decimals, price_usd, market_cap_usd}. Poll with since= (cursor = pagination.next_since) for new contracts, before= (pagination.next_before) to page back, or subscribe to the WebSocket channel
madeonsol_token_unlocks Upcoming token UNLOCK EVENTS across all active lock / vesting contracts inside a window — cliffs, periodic releases (hourly or coarser) and final unlocks — i.e. which tokens have locked supply hitting the market this week, how much, from whose lock. One entry per active contract = its NEXT unlock event in the window: unlock_at, in_seconds, event (cliff | period | final | tranche), amount_raw / amount / amount_usd / amount_pct_of_supply for that event, plus window_amount_* = that contract
madeonsol_token_fee_shares pump.fun creator-fee SHARING on one coin — who receives what share of its creator fees. Decodes the on-chain SharingConfig of the pump_fees program (PDA [
madeonsol_token_fee_claims pump.fun FEE-EVENT feed, newest first, across all coins: every decoded pump_fees / pump event — type = distribution (creator fees paid out pro-rata to the SharingConfig shareholders, i.e. fees redirected to others, with payouts[] {address, share_bps, amount_raw, amount, amount_usd} per address) | social_claim (fees earmarked for a platform identity — social.platform 2 = X, social.user_id = the platform-native numeric id — claimed to a recipient wallet; mint is NULL) | shares_created / shares_updated / shares_reset (SharingConfig changes, with shareholders[] {address, share_bps}) | creator_transferred (creator role moved; recipient = new creator) | creator_claim (the plain creator vault claim — per CREATOR, carries NO mint; EXCLUDED unless requested via type=). Each event: id, type, at, tx_signature, slot, mint (null for social claims / creator claims), admin, actor (transaction signer), recipient, amount_raw (quote base units — SOL lamports unless a stable-quoted coin — as a digit STRING), amount, amount_usd, quote, social {platform, platform_label, user_id, pda}, shareholders, payouts, payload (full decoded Anchor event). Default 100%-to-creator configs and zero-amount distributions are NOT stored. Poll with since= (cursor = pagination.next_since), page back with before= (pagination.next_before), or subscribe to the WebSocket channel
madeonsol_token_depth Per-pool price-impact / slippage for a token — answers
madeonsol_deployer_history A pump.fun deployer
madeonsol_token_candles Historical OHLCV price candles for a token, aggregated from the on-chain trade firehose. Each candle carries t/open/high/low/close/volume_usd/trades/market_cap_usd. Timeframes: 1m/5m/15m/1h/4h/1d. PRO=OHLCV, last 30 days only. ULTRA adds buy/sell volume + count splits, net flow, MEV volume, open/close liquidity, high/low MC, and full history. PRO/ULTRA only — BASIC receives HTTP 403.
madeonsol_token_flow Trade-flow aggregate for a token — an organic-vs-fake volume read over a 1h/24h window. Returns unique_wallets / unique_buyers / unique_sellers, buy_count / sell_count / total_trades, buy_sol / sell_sol / net_sol (sell − buy; positive = net SOL leaving the pool), and trades_per_wallet (wash-trading proxy: high = a small set of wallets churning volume). PRO/ULTRA only — BASIC receives HTTP 403.
madeonsol_first_touch_subscriptions_create Create a first-touch webhook subscription. ULTRA only — up to 10 active. Filters: kol (wallet), mint_suffix, min_first_buy_sol, min_scout_tier (S/A/B/C), min_n_touches. Returns webhook_secret ONCE — store it.
madeonsol_token_trades Mint-scoped trade tape — cursor-paginated raw trades for one token, newest first (the backfill/history complement to the live DEX firehose stream). Each trade: tx_signature, wallet_address, action (buy|sell), sol_amount, token_amount, price_sol|null, price_usd|null, market_price_sol|null, market_price_usd|null, early_buyer_rank|null, slot|null, block_time (unix sec), traded_at (ISO). TWO PRICES, and picking the wrong one gives wrong answers: price_sol is THIS trade
madeonsol_tokens_batch_buyer_quality Bulk buyer-quality scoring for up to 50 mints in one call. Shares the 5-min LRU cache with the single-mint endpoint — already-warm mints return at ~zero cost. Response includes cache_hits counter.
madeonsol_tokens_batch_risk Bulk token rug-risk/safety scoring for up to 50 mints in one call — same per-mint shape as madeonsol_token_risk (0–100 score, band, explainable factors[], raw inputs) plus an as_of ISO timestamp. Untracked mints come back as { mint, error:
madeonsol_token_get Comprehensive per-mint snapshot: price (VWAP), market cap, 24h volume, deployer reputation, KOL smart-money activity, first_seen_at + age_seconds, and blacklist status — all in one call. ULTRA adds individual KOL wallet addresses in top_buyers[].
madeonsol_token_batch Bulk lookup of up to 50 mints in one request. Returns the same per-mint shape as madeonsol_token_get. DB queries batched with IN(...); dex-stream + RPC fan-outs run in parallel. ~10-20× cheaper than N sequential calls — ideal for sniper pipelines scoring many tokens at once.
madeonsol_copytrade_list List your copy-trade rules. PRO=3 rules, ULTRA=20 rules.
madeonsol_copytrade_create Create a copy-trade rule. Returns webhook_secret ONCE on creation when delivery_mode includes
madeonsol_copytrade_get Get one copy-trade rule by id.
madeonsol_copytrade_update Update fields on a copy-trade rule, including is_active toggle.
madeonsol_copytrade_delete Delete a copy-trade rule permanently.
madeonsol_copytrade_signals Recent fired copy-trade signals (up to 7 days). Filter by subscription_id, since (ISO8601), and limit (1–500).
madeonsol_coordination_alerts_list List your coordination alert rules. PRO=5 rules, ULTRA=20.
madeonsol_coordination_alerts_create Create a coordination alert rule. Fires within ~1s when a KOL cluster meets thresholds (peak-density scored). Delivered via WebSocket (kol:coordination channel) and/or HMAC-signed webhook. Returns webhook_secret ONCE when delivery_mode includes
madeonsol_coordination_alerts_get Get one coordination alert rule by id.
madeonsol_coordination_alerts_update Update fields on a coordination alert rule, including is_active toggle.
madeonsol_coordination_alerts_delete Delete a coordination alert rule permanently.
madeonsol_kol_first_touches Recent first-KOL-touch events — every time a tracked KOL was the first to buy a token mint. Filterable by scout tier (S/A/B/C from mv_kol_scout_score), KOL winrate, token age, etc. Backtest: top scouts attract ≥3 follow-on KOLs within 4h ~50% of the time vs ~14% baseline. Median lead time before second KOL is 12s — for trading this signal, use the WebSocket channel rather than polling.
madeonsol_first_touch_subscriptions_update Update fields on a first-touch subscription, including is_active toggle. ULTRA only.
madeonsol_first_touch_subscriptions_delete Delete a first-touch subscription permanently. ULTRA only.
madeonsol_price_alerts_list List your price alerts. PRO=5 alerts, ULTRA=25. Each alert monitors a token
madeonsol_price_alerts_create Create a price alert. Captures baseline MC from current token_prices. Fires when MC drops below baseline × (1 − drop_pct/100). Optional recovery_pct fires again on recovery. Returns webhook_secret ONCE — store it.
madeonsol_price_alerts_get Get one price alert by id.
madeonsol_price_alerts_update Update alert name, delivery mode, webhook URL, or is_active. Thresholds (drop_pct, recovery_pct) are immutable.
madeonsol_price_alerts_delete Delete a price alert and its event history.
madeonsol_price_alerts_events Fired price alert event history (30-day retention). Each event records the dip or recovery moment with actual MC values.
madeonsol_scout_leaderboard Scout leaderboard — top KOLs ranked by scout score, first-touch frequency, and swarm attraction rate (% of first-touched tokens that attract 3+ follow-on KOLs within 4h). ULTRA only.
madeonsol_coordination_history Coordination history — past coordination alert fires with token, coordination score, KOL count, and timing. ULTRA only.
madeonsol_kol_consensus KOL consensus on a specific token: total buyers/sellers, exit rate, net SOL flow, median entry MC. ULTRA adds individual buyer + exited wallet arrays.
madeonsol_peak_history Peak MC history for a token: all-time high MC, decline from peak %, MC at bond, MC at 1h/6h/24h/7d after bond, time-to-bond, and deploy/bond timestamps.
madeonsol_signal_performance Signal performance stats for a named signal — hit rate, sample size, median outcome, and confidence window. Use this to evaluate how well a signal (e.g.
madeonsol Permissions 2
network medium env_vars low