madeonsol
⭐ Star on GitHub · 📂 Examples · 📚 docs.rs · 🌐 API docs
Official Rust SDK for the MadeOnSol Solana API — typed,
async, tokio-based, rustls-only.
Real-time Solana trading intelligence: track 1,000+ KOL wallets with <3s latency, score 6,700+ Pump.fun deployers by reputation, detect multi-KOL coordination signals, push every pump.fun graduation the second it bonds, and stream every DEX trade across 9+ programs.
Free tier: 200 requests/day at https://madeonsol.com/pricing — no credit card required.
New in 0.14.0 — Token risk score.
client.token.risk(mint)returns a transparent 0–100 rug-risk / safety score (PRO/ULTRA, higher = riskier): an overallrisk_score+RiskBand(safe/caution/danger), a per-factorVec<RiskFactor>breakdown (each withstatus,points, and a human-readabledetail), and the rawRiskInputsevery factor was derived from (mint/freeze authority revocation, liquidity, transfer fee, launch cohort, deployer reputation, blacklist, …). New types:TokenRisk,RiskFactor,RiskInputs,RiskBand,RiskFactorStatus.
New in 0.13.0 — Launch cohort, liquidity/MC ratio, deployer-tier filter, and KOL leaderboard timing.
TokenResponseBodygainsliquidity_to_mc_ratio,launch_cohort_sol, andlaunch_cohort_size.TokensListParamsgainsmin_liq_mc_ratio,max_liq_mc_ratio, anddeployer_tierfilters.TokenSummary(tokens list items) gainsliquidity_to_mc_ratioanddeployer_tier.KolLeaderboardEntrygainsmedian_hold_minutes_30dandpercentile_early_entry_30d.
New in 0.12.1 — Deployer runner-rate fields.
SniperDeploy,DeployerSummary,DeployerProfile, andDeployerLeaderboardEntrynow carryrunner_rate(fraction of the deployer's labeled tokens that ran — peak ≥60min after deploy — vs dumped) andlabeled_tokens(confidence denominator; gate on ≥3).
New in 0.12.0 (2026-06-07) — Graduation events + dump-cluster detection.
GraduationEvent— typed payload for thetoken:graduationsWebSocket channel: every pump.fun bond in real time (tracked deployer or not) with deployer tier, time-to-bond, and MC at bond.AlphaBuyerQualityBreakdownaddsdump_cluster_count(out-of-sample: 3+ such wallets in the first-20 → 94% dump vs 61% base) andrecycled_early_buyer_count. DEX firehose: replay buffer deepened to ~5 min; mint-scoped subs get in-banddex:graduationsframes.
New in 0.10.0 (2026-05-25) — Price alerts, scout leaderboard, KOL consensus, peak history, coordination history, wallet derived stats, trajectory snapshots.
client.price_alerts— full CRUD for MC-drop / recovery alert rules (PRO/ULTRA).client.kol.scout_leaderboard()— ranked scouts by swarm attraction rate.client.token.kol_consensus(mint)— per-token KOL buyer/seller breakdown.client.token.peak_history(mint)— ATH, decline from peak, MC snapshots post-bond.client.kol.coordination_history()— past coordination fires.client.deployer.trajectory(wallet, params)now acceptsinclude: Some("daily_snapshots")for 90d snapshots.WalletStatsResponse.derived— win rate, ROI, best/worst trade, biggest miss, AI verdict.
Get an API key
- Visit https://madeonsol.com/developer
- Sign in with email or Solana wallet
- Copy your
msk_…key (free tier is unlocked instantly — 200 req/day, 10/min)
Paid tiers unlock higher rate limits, sub-hour windows, WebSocket streaming, webhooks, and the all-DEX firehose:
| Tier | Price | Daily req | KOL trending sub-hour | Stream | Webhooks | DEX firehose |
|---|---|---|---|---|---|---|
| Free | $0 | 200 | — | — | — | — |
| PRO | $49/mo | 10,000 | ✅ | ✅ | 3 | — |
| ULTRA | $149/mo | 100,000 | ✅ | ✅ | 10 | ✅ |
Annual: PRO $490/yr, ULTRA $1,490/yr (2 months free).
Install
[]
= "0.14"
= { = "1", = ["macros", "rt-multi-thread"] }
Requires Rust 1.75+. Uses reqwest with rustls-tls (no OpenSSL dependency).
Quick start
use ;
async
Run the bundled examples:
Namespaces
The MadeOnSol client exposes namespaced sub-clients:
| Namespace | Purpose |
|---|---|
client.kol |
KOL feed, leaderboard, coordination, PnL, trending tokens, alerts, compare, first_touches, scout_leaderboard, coordination_history |
client.deployer |
Pump.fun deployer leaderboard, alerts, trajectory (+ daily snapshots), bonded tokens |
client.alpha |
Alpha-wallet leaderboard, profiles, cap tables, buyer quality |
client.token |
Per-mint snapshot, batch lookup, buyer quality, kol_consensus, peak_history, risk, directory list |
client.wallet_tracker |
Track arbitrary Solana wallets — watchlist CRUD, swap/transfer history |
client.wallet |
Universal wallet endpoints — stats + cross-product flags + derived analytics, FIFO PnL, open positions, paginated trades (PRO+) |
client.coordination_alerts |
Push alerts on coordinated buying (PRO/ULTRA) |
client.first_touch_subscriptions |
Push alerts on first-KOL-touch events (ULTRA) |
client.price_alerts (new 0.10) |
MC-drop / recovery price alert rules CRUD + event history (PRO/ULTRA) |
client.sniper (new 0.11) |
Deshred pre-confirm pump.fun deploy feed (~500ms head start) + custom deployer watchlist (PRO/ULTRA) |
client.tools |
Solana tool directory search |
client.stream |
Issue 24h WebSocket streaming tokens |
client.webhooks |
Webhook CRUD (PRO/ULTRA) |
Full reference: https://docs.rs/madeonsol · Interactive API docs: https://madeonsol.com/api-docs.
Use cases
- Copy-trading bot — stream KOL buys via
client.kol.feed()and mirror trades - DEX trade sniping — subscribe to the all-DEX stream filtered by token / wallet
- Deployer sniper — monitor
client.deployer.alerts()for elite-tier launches - Coordination detector — flag tokens with
client.kol.coordination()or push alerts - Scout signal — track first-KOL-touch events filtered to S/A-tier scouts via
client.kol.first_touches()(backtested: ~50% swarm rate vs 14% baseline) - Analytics dashboard — combine leaderboard, PnL, and tool data
- Telegram/Discord bot — pipe alerts via webhooks into chat
- Portfolio tracker — use
client.kol.wallet()to follow specific KOL positions
Error handling
All methods return Result<T, madeonsol::Error>. The Error::Api variant exposes
HTTP status, server message, and the raw JSON body:
use ;
# async
Error::MissingApiKey is returned by MadeOnSol::new if the key is empty or
doesn't start with msk_ — the error message and a stderr hint both link to
https://madeonsol.com/pricing.
First-touch signal (new in 0.4)
Every "first KOL buy on a token mint" event — when a tracked KOL is the first of the cohort to touch a token. Filterable by scout tier (S/A/B/C from mv_kol_scout_score), KOL winrate, token age, mint suffix.
Backtest: S-tier scouts attract ≥3 follow-on KOLs within 4h ~50% of the time vs ~14% baseline (38d / 491k buys / 72,549 events). Public leaderboard at https://madeonsol.com/kol/scouts.
use ;
let res = client
.kol
.first_touches
.await?;
for e in res.events
Webhook subscriptions (Ultra, up to 10 active per user) — push delivery, HMAC-SHA256 signed:
use ;
let res = client
.first_touch_subscriptions
.create
.await?;
// store res.webhook_secret — shown ONCE
Don't poll — push. Median lead time before the second KOL is 12 seconds. WebSocket channel:
kol:first_touches(PRO+).
Universal wallet endpoints (new in 0.9)
Per-wallet profile data for any Solana wallet — not just curated KOLs. FIFO cost-basis PnL over the last 90 days, cached server-side with dynamic TTL. Cache hits don't count against your daily quota. PRO+.
# async
Cost-basis honesty. Observable only inside the 90-day window. Overflow sells (no matching buy in window) are silently discarded rather than fabricated. notes.cost_basis_observable_from makes the cutoff visible.
Deshred sniper alerts (new in 0.11)
The fastest path to a new pump.fun launch. Deploys are reconstructed from shred-level (deshred) data and surface ~500ms before the chain confirms them. PRO sees elite + good deployers; ULTRA sees every tier and can keep a custom deployer watchlist. For live push use the sniper:deploy webhook, the sniper:deploys WebSocket channel, or /alert sniper in Telegram — these methods are for catch-up, backtesting, and watchlist management.
# async
Price alerts (new in 0.10)
Get notified when a token's market cap drops below a threshold (and optionally on recovery). PRO: 5 rules, ULTRA: 20 rules. Delivered via WebSocket channel price:alerts and/or HMAC-signed webhook.
# async
New in 0.10: scout leaderboard, KOL consensus, peak history
# async
WebSocket streams (PRO/ULTRA)
This crate does not ship a WebSocket client — client.stream.get_token()
returns the URL + token, and you connect with any WS library
(tokio-tungstenite recommended):
# async
The DEX firehose URL (token.dex_ws_url) is only present for ULTRA subscribers.
See https://madeonsol.com/api-docs for the full subscribe/unsubscribe protocol.
Also available
| Platform | Package |
|---|---|
| TypeScript / Node | madeonsol on npm |
| Python (LangChain, CrewAI) | madeonsol-x402 on PyPI |
| MCP Server (Claude, Cursor) | mcp-server-madeonsol · Smithery · Glama |
| ElizaOS | @madeonsol/plugin-madeonsol |
| Solana Agent Kit | solana-agent-kit-plugin-madeonsol |
Links
- API docs: https://madeonsol.com/api-docs (interactive try-it-now)
- OpenAPI 3.1 spec: https://madeonsol.com/api/v1/openapi.json
- Postman collection: https://madeonsol.com/api/v1/postman.json
- Pricing & free key: https://madeonsol.com/pricing
- Issues: https://github.com/LamboPoewert/madeonsol-rs/issues
License
MIT © MadeOnSol