📚 API docs · 💰 Free API key · 🤖 ElizaOS
ElizaOS plugin for MadeOnSol — Solana KOL trading intelligence, deployer analytics, and wallet tracking.
Real-time Solana trading intelligence: track 1,069 KOL wallets with <3s latency, score 23,000+ Pump.fun deployers, surface deshred deploy signals ~500ms before on-chain confirmation, detect multi-KOL coordination, and stream every DEX trade. Free tier: 200 requests/day, every endpoint — no signup payment. Get a key at madeonsol.com/pricing.
New in 1.15.0 — Batch risk scoring + live WebSocket session control. Two client methods:
client.getTokenRiskBatch(mints)scores up to 50 mints in one call (POST /tokens/batch/risk) — each entry is the single-mint risk shape plus anas_oftimestamp, or{ mint, error: "not_tracked" }for untracked mints (which don't fail the batch); returns{ tokens, count }in de-duplicated input order and counts as one request. Andclient.getStreamSessions()lists your live WebSocket sessions ({ id, service, tier, channels, connected_at, remote_ip, messages_sent }) whileclient.deleteStreamSession(id)force-evicts one by id to free a connection slot. Both PRO/ULTRA only.New in 1.14.0 — Almost-bonded discovery + trending sorts. New action
MADEONSOL_ALMOST_BONDED+client.getAlmostBonded(params)— pre-bond pump.fun tokens near graduation, ranked by velocity (Δprogress/min): "95% and accelerating" beats "92% stalled". Each token carriesprogress_pct,velocity_pct_per_min,eta_minutes,stalled,real_sol_reserves,market_cap_usd,liquidity_usd,authorities_revoked,deployer_tier, andage_minutes. Params:min_progress,max_progress,min_velocity_pct_per_min,max_age_minutes,deployer_tier,authority_revoked,min_liq,sort(velocity_desc / progress_desc / eta_asc),limit. PRO/ULTRA only. Plusclient.getTokensList({ sort })gains four momentum sorts —mc_change_5m_desc,mc_change_1h_desc,volume_1h_desc, andtrending(composite recent-volume × positive-momentum rank).New in 1.13.0 — Token net flow. New action
GET_TOKEN_FLOW+client.getTokenFlow(mint, { window })— net buy/sell flow over a rolling window (1hdefault, or24h):unique_wallets,unique_buyers,unique_sellers,buy_count,sell_count,total_trades,buy_sol,sell_sol,net_sol,trades_per_wallet. PRO+. Deployer alerts now also surfacedeployer_sol_balance— the deployer wallet's SOL balance at alert time (nullfor historical rows).New in 1.12.0 — Token OHLCV candles. New action
GET_TOKEN_CANDLES+client.getTokenCandles(mint, { tf, limit, from, to })— historical price candles (1m/5m/15m/1h/4h/1d) aggregated from the on-chain trade firehose. Each candle hast/open/high/low/close/volume_usd/trades/market_cap_usd. PRO returns OHLCV for the last 30 days; ULTRA adds buy/sell volume + count splits, net flow, MEV volume, open/close liquidity, high/low MC, and full history. PRO/ULTRA only.New in 1.11.0 — Token risk score. New action
GET_TOKEN_RISK+client.getTokenRisk(mint)— a transparent 0–100 rug-risk/safety score (higher = riskier) with aband(safe/caution/danger), an explainablefactors[]array, and the rawinputs(mint/freeze authority, liquidity, liq-to-MC ratio, transfer fee, launch cohort, deployer bond rate, KOL signal, blacklist). PRO/ULTRA only.New in 1.10.0 —
client.getTokensList()gains three new filter params:min_liq_mc_ratio,max_liq_mc_ratio, anddeployer_tier. Response items now includeliquidity_to_mc_ratioanddeployer_tier. KOL leaderboard entries now includemedian_hold_minutes_30dandpercentile_early_entry_30d. Token endpoints now returnliquidity_to_mc_ratio,launch_cohort_sol, andlaunch_cohort_size.New in 1.9.3 — Deployer alerts now surface
runner_rate+labeled_tokens(fraction of a deployer's labeled tokens that ran vs dumped, gate onlabeled_tokens≥3) andavg_time_to_bond_minutes.
New in 1.9.2 — Dump-cluster detection. Buyer-quality breakdown now includes
dump_cluster_count(3+ dump-cluster wallets in the first-20 → 94% historical dump rate vs 61% base) andrecycled_early_buyer_count, on all tiers. The API also pushes every pump.fun graduation in real time (token:graduationsWS channel).
New in 1.9 — Price alerts, scout leaderboard, coordination history, wallet derived stats.
PRICE_ALERTS_*actions (PRO=5, ULTRA=25 rules).SCOUT_LEADERBOARD,KOL_CONSENSUS,PEAK_HISTORY,COORDINATION_HISTORY.WALLET_STATSnow returnsderived: win_rate, roi, verdict, biggest_miss.New in 1.8 — Universal Wallet API.
WALLET_STATS,WALLET_PNL,WALLET_POSITIONS,WALLET_TRADES— FIFO cost-basis PnL and raw trades for any Solana wallet. PRO+. Cache hits free.New in 1.7.0 (2026-05-12) — Account introspection + token scanner actions. Two new actions:
meAction(GET_MADEONSOL_ACCOUNT) reports the caller's tier, daily/burst quota, and webhook / copy-trade / coord-rule slot counts;tokensListAction(LIST_MADEONSOL_TOKENS) scans the Solana token universe by MC, liquidity, 1h momentum, and primary DEX. New client methods:client.getMe()andclient.getTokensList(params). Token responses now expose velocity / MEV-share enrichment fields. The/tokensscanner applies a defaultmin_liq=2000so the agent isn't drowned in dust pools by default./token/{mint}HTTP 400s now return structuredcode/reason/example/docsso the agent can self-correct bad mints. Deprecatedavg_entry_mc_usdhas been removed from all leaderboard payloads.
npm install @madeonsol/plugin-madeonsolimport { madeOnSolPlugin } from "@madeonsol/plugin-madeonsol";
const agent = { plugins: [madeOnSolPlugin], settings: { MADEONSOL_API_KEY: "msk_..." } }; // free tier at https://madeonsol.com/pricing
// Then ask the agent: "What are KOLs buying right now?"Three options (in priority order):
| Method | Setting | Best for |
|---|---|---|
| MadeOnSol API key (recommended) | MADEONSOL_API_KEY |
Developers — get a free key |
| x402 micropayments | SVM_PRIVATE_KEY |
AI agents with Solana wallets |
Gives your ElizaOS agent access to MadeOnSol's Solana intelligence API.
| Action | Description |
|---|---|
GET_KOL_FEED |
Real-time KOL trade feed (1,000+ wallets) |
GET_KOL_COORDINATION |
Multi-KOL convergence (v1.1 — peak-density, exits, 0-100 score) |
GET_KOL_LEADERBOARD |
KOL PnL/win-rate rankings (180 days of history) |
GET_DEPLOYER_ALERTS |
Pump.fun deployer alerts with KOL enrichment |
WALLET_TRACKER_WATCHLIST |
List your tracked wallets and remaining capacity |
WALLET_TRACKER_TRADES |
Recent swaps and transfers from your watchlist |
GET_MADEONSOL_ACCOUNT |
Your tier, daily quota, burst limit, and slot usage (new in 1.7.0) |
LIST_MADEONSOL_TOKENS |
Scan tokens by MC, liquidity, 1h momentum, primary DEX, plus momentum sorts (mc_change_5m_desc/mc_change_1h_desc/volume_1h_desc/trending) (new in 1.7.0) |
MADEONSOL_ALMOST_BONDED |
New 1.14 · Pre-bond pump.fun tokens near graduation, ranked by velocity — progress_pct, velocity_pct_per_min, eta_minutes, stalled, deployer_tier (PRO+) |
WALLET_STATS |
New 1.8 · Stats + cross-product flags (is_kol, is_alpha_tracked + bot_confidence, is_deployer) for any wallet (PRO+) |
WALLET_PNL |
New 1.8 · Full FIFO PnL — realized + unrealized, profit factor, drawdown, hold times, top winners (PRO+) |
WALLET_POSITIONS |
New 1.8 · Open positions with live unrealized SOL from market-cap tracker (PRO+) |
WALLET_TRADES |
New 1.8 · Recent trades for any wallet, filtered by action (PRO+) |
GET_TOKEN_RISK |
New 1.11 · Transparent 0–100 rug-risk/safety score with band + explainable factors (PRO+) |
GET_TOKEN_CANDLES |
New 1.12 · Historical OHLCV candles (1m–1d). PRO=OHLCV 30d; ULTRA=+net flow, liquidity delta, full history (PRO+) |
GET_TOKEN_FLOW |
New 1.13 · Net buy/sell flow over a 1h/24h window — unique wallets/buyers/sellers, buy/sell counts, buy/sell/net SOL, trades-per-wallet (PRO+) |
npm install @madeonsol/plugin-madeonsolx402 peer deps (
@x402/fetch @x402/svm @x402/core @solana/kit @scure/base) are only needed when usingSVM_PRIVATE_KEY.
import { madeOnSolPlugin } from "@madeonsol/plugin-madeonsol";
const agent = {
plugins: [madeOnSolPlugin],
settings: {
// Option 1: API key — get one free at madeonsol.com/pricing
MADEONSOL_API_KEY: "msk_your_api_key_here",
// Option 2: x402 micropayments (AI agents)
// SVM_PRIVATE_KEY: "your_base58_solana_private_key",
},
};The GET_KOL_COORDINATION action surfaces the v1.1 coordination_score, peak_kols, and exited_count fields. For push alerts (fires within ~1s of a qualifying trade via WS kol:coordination channel + HMAC-signed webhook), use the client directly from a custom action:
import { MadeOnSolClient } from "@madeonsol/plugin-madeonsol";
const client = new MadeOnSolClient({ apiKey: process.env.MADEONSOL_API_KEY });
const res = await client.coordinationAlertsCreate({
name: "fresh pump cluster",
min_kols: 4,
window_minutes: 15,
min_score: 70,
include_majors: false,
cooldown_min: 60,
score_jump_break: 10,
delivery_mode: "both",
webhook_url: "https://you.com/hooks/coord",
});
// store res.data.webhook_secret — shown ONCEPRO=5 rules, ULTRA=20. Also available: coordinationAlertsList(), coordinationAlertsGet(id), coordinationAlertsUpdate(id, updates), coordinationAlertsDelete(id).
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).
import { MadeOnSolClient } from "@madeonsol/plugin-madeonsol";
const client = new MadeOnSolClient({ apiKey: process.env.MADEONSOL_API_KEY });
// REST query
const { events } = await client.firstTouches({ preset: "scout", min_scout_tier: "S", limit: 20 });
// Webhook subscription (Ultra) — push delivery, HMAC-signed
const { subscription, webhook_secret } = await client.firstTouchSubscriptionsCreate({
name: "S-tier scouts on pump tokens",
filters: { min_scout_tier: "S", mint_suffix: "pump" },
delivery_mode: "webhook",
webhook_url: "https://you.com/hooks/scout",
});
// store webhook_secret — shown ONCEULTRA only for subscriptions — up to 10 active. CRUD: firstTouchSubscriptionsList(), firstTouchSubscriptionsGet(id), firstTouchSubscriptionsUpdate(id, updates), firstTouchSubscriptionsDelete(id).
Don't poll — push. Median lead time before the second KOL is 12 seconds. WebSocket channel:
kol:first_touches.
CRUD for token dip/recovery price alerts. Fires when a token's market cap crosses your threshold. PRO=5 rules, ULTRA=25.
| Action | Description |
|---|---|
PRICE_ALERTS_LIST |
List your price alert rules |
PRICE_ALERTS_CREATE |
Create a dip/recovery alert rule |
PRICE_ALERTS_DELETE |
Delete a price alert rule |
import { MadeOnSolClient } from "@madeonsol/plugin-madeonsol";
const client = new MadeOnSolClient({ apiKey: process.env.MADEONSOL_API_KEY });
const { alert, webhook_secret } = await client.priceAlertsCreate({
name: "SOL dip buy",
token_mint: "So11111111111111111111111111111111111111112",
condition: "below",
threshold_mc_usd: 5_000_000_000,
cooldown_min: 120,
delivery_mode: "both",
webhook_url: "https://you.com/hooks/price",
});
// store webhook_secret — shown ONCEAlso available: priceAlertsList(), priceAlertsGet(id), priceAlertsUpdate(id, updates), priceAlertsDelete(id).
| Action | Description |
|---|---|
SCOUT_LEADERBOARD |
Top scout-tier KOLs ranked by first-touch follow-on rate, win rate, and ROI (PRO+) |
KOL_CONSENSUS |
Tokens with the strongest KOL agreement signal (PRO+) |
PEAK_HISTORY |
Historical peak-density windows for a token (PRO+) |
COORDINATION_HISTORY |
Global coordination event log (PRO+) |
GET_TOKEN_FLOW (or client.getTokenFlow(mint, { window })) returns net buy/sell flow over a rolling 1h (default) or 24h window. PRO+.
import { MadeOnSolClient } from "@madeonsol/plugin-madeonsol";
const client = new MadeOnSolClient({ apiKey: process.env.MADEONSOL_API_KEY });
const { data } = await client.getTokenFlow("7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU", { window: "24h" });
// { mint, window, from, unique_wallets, unique_buyers, unique_sellers,
// buy_count, sell_count, total_trades, buy_sol, sell_sol, net_sol, trades_per_wallet }
console.log(`Net ${data.net_sol} SOL across ${data.unique_wallets} wallets`);Deployer alerts (
GET_DEPLOYER_ALERTS/client.getDeployerAlerts()) now includedeployer_sol_balance— the deployer wallet's SOL balance at alert time (nullfor historical rows).
Score up to 50 mints in one request, and list/kill your live WebSocket sessions — both client-only, PRO/ULTRA.
import { MadeOnSolClient } from "@madeonsol/plugin-madeonsol";
const client = new MadeOnSolClient({ apiKey: process.env.MADEONSOL_API_KEY });
// Bulk rug-risk — one request, up to 50 mints
const { data } = await client.getTokenRiskBatch([mintA, mintB, mintC]);
// { tokens: [ { mint, risk_score, band, factors, inputs, as_of } | { mint, error: "not_tracked" } ], count }
// Live WebSocket sessions
const { data: s } = await client.getStreamSessions();
// { sessions: [ { id, service, tier, channels, connected_at, remote_ip, messages_sent } ], count }
await client.deleteStreamSession(s.sessions[0].id); // → { evicted: true, id }WALLET_STATS now returns a stats object with derived fields: win_rate (0-1), roi, verdict ("strong" | "profitable" | "neutral" | "losing"), and biggest_miss (token with the highest post-exit gain the wallet missed).
Your agent can then respond to queries like:
- "What are KOLs buying right now?"
- "Show me the KOL leaderboard this week"
- "What tokens are multiple KOLs accumulating?"
- "Any new deployer alerts from Pump.fun?"
- "Show my wallet tracker watchlist"
- "What did my tracked wallets trade recently?"
| Tier | Price | Wallets tracked | Requests/day |
|---|---|---|---|
| BASIC (free) | $0 | 10 | 200 |
| PRO | €43/mo (€430/yr) ≈ $49 | 50 | 10,000 |
| ULTRA | €131/mo (€1310/yr) ≈ $149 | 100 + WS events | 100,000 |
Free tier returns the full REST response shape on every endpoint — real wallets, TX signatures, full precision. Paid tiers unlock webhooks, WebSockets, rule engines, and ULTRA-only data depth. Get a key at madeonsol.com/pricing.
| Platform | Package |
|---|---|
| TypeScript SDK | madeonsol on npm |
| Rust SDK | madeonsol on crates.io |
| Python (LangChain, CrewAI) | madeonsol-x402 on PyPI |
| MCP Server (Claude, Cursor) | mcp-server-madeonsol · Smithery · Glama |
| Solana Agent Kit | solana-agent-kit-plugin-madeonsol |
MIT