mcp-server-madeonsol 1.11.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -13,6 +13,10 @@ MCP server for [MadeOnSol](https://madeonsol.com) Solana KOL intelligence API. U
13
13
 
14
14
  > 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 across 9+ programs. Free tier: 200 requests/day at [madeonsol.com/pricing](https://madeonsol.com/pricing) — no credit card required.
15
15
 
16
+ > **New in 1.13.0** — **Token OHLCV candles.** New tool `madeonsol_token_candles` — historical price candles (1m/5m/15m/1h/4h/1d) aggregated from the on-chain trade firehose. Each candle has `t/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.
17
+ >
18
+ > **New in 1.12.0** — **Token risk score.** New tool `madeonsol_token_risk` — a transparent 0–100 rug-risk/safety score (higher = riskier) with a `band` (safe/caution/danger), an explainable `factors[]` array, and the raw `inputs` (mint/freeze authority, liquidity, liq-to-MC ratio, transfer fee, launch cohort, deployer bond rate, KOL signal, blacklist). PRO/ULTRA only.
19
+ >
16
20
  > **New in 1.11.0** — `madeonsol_tokens_list` gains three new filter params: `min_liq_mc_ratio`, `max_liq_mc_ratio`, and `deployer_tier`. Response items now include `liquidity_to_mc_ratio` and `deployer_tier`. New tool: `madeonsol_signal_performance` — evaluate signal efficacy (hit rate, sample size, median outcome) before acting on any signal. KOL leaderboard entries now include `median_hold_minutes_30d` and `percentile_early_entry_30d`.
17
21
  >
18
22
  > **New in 1.10.4** — Deployer alerts/profiles now expose `runner_rate` + `labeled_tokens` (fraction of a deployer's labeled tokens that ran vs dumped, gate on `labeled_tokens` ≥3) plus `avg_time_to_bond_minutes`.
@@ -169,6 +173,8 @@ Scored from 1M+ early-buyer records (wallets seen in the first 20 buyers of Pump
169
173
  | `madeonsol_tokens_list` | PRO+ | Filtered, sortable token directory — MC band, liquidity floor, primary DEX, authority/safety flags, computed 1h volume / MEV-share / MC-change deltas. Default `min_liq=2000` skips phantom-MC dust. |
170
174
  | `madeonsol_token_cap_table` | PRO+ | First non-deployer early buyers, enriched with PnL/KOL/bot flags. PRO=10, ULTRA=20 |
171
175
  | `madeonsol_token_buyer_quality` | All | 0–100 buyer-quality score + full breakdown (5-min cached) |
176
+ | `madeonsol_token_risk` | PRO+ | Transparent 0–100 rug-risk/safety score with `band`, explainable `factors[]`, and raw `inputs` |
177
+ | `madeonsol_token_candles` | PRO+ | Historical OHLCV candles (1m–1d). PRO=OHLCV 30d; ULTRA=+net flow, liquidity delta, MEV volume, full history |
172
178
 
173
179
  ### Copy-Trade Rules (PRO/ULTRA)
174
180
 
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@ const PORT = parseInt(process.env.PORT || "3100", 10);
11
11
  const MODE = process.env.MCP_TRANSPORT || "stdio"; // "stdio" or "http"
12
12
  let authMode = "none";
13
13
  let paidFetch = fetch;
14
- const UA = "mcp-server-madeonsol/1.11.0";
14
+ const UA = "mcp-server-madeonsol/1.13.0";
15
15
  function apiKeyHeaders() {
16
16
  const h = { "User-Agent": UA };
17
17
  if (authMode === "madeonsol") {
@@ -548,6 +548,29 @@ function registerTools(server) {
548
548
  server.tool("madeonsol_token_buyer_quality", "0–100 buyer-quality score for a token's first-buyer cohort. 5-min cached. Full breakdown on all tiers, incl. dump_cluster_count (3+ dump-cluster wallets in the first-20 → 94% historical dump rate vs 61% base) and recycled_early_buyer_count.", { mint: z.string().describe("Token mint address (base58)") }, { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }, async ({ mint }) => ({
549
549
  content: [{ type: "text", text: await restQuery("GET", `/tokens/${encodeURIComponent(mint)}/buyer-quality`) }],
550
550
  }));
551
+ server.tool("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. PRO/ULTRA only — BASIC receives HTTP 403.", { mint: z.string().describe("Token mint address (base58)") }, { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }, async ({ mint }) => ({
552
+ content: [{ type: "text", text: await restQuery("GET", `/tokens/${encodeURIComponent(mint)}/risk`) }],
553
+ }));
554
+ server.tool("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.", {
555
+ mint: z.string().describe("Token mint address (base58)"),
556
+ tf: z.enum(["1m", "5m", "15m", "1h", "4h", "1d"]).optional().describe("Candle timeframe (default 1h)"),
557
+ limit: z.number().min(1).max(1000).optional().describe("Number of candles to return, 1–1000 (default 200)"),
558
+ from: z.string().optional().describe("Start of range, ISO8601 timestamp"),
559
+ to: z.string().optional().describe("End of range, ISO8601 timestamp"),
560
+ }, { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }, async ({ mint, tf, limit, from, to }) => {
561
+ const qs = new URLSearchParams();
562
+ if (tf !== undefined)
563
+ qs.set("tf", tf);
564
+ if (limit !== undefined)
565
+ qs.set("limit", String(limit));
566
+ if (from !== undefined)
567
+ qs.set("from", from);
568
+ if (to !== undefined)
569
+ qs.set("to", to);
570
+ const query = qs.toString();
571
+ const path = `/tokens/${encodeURIComponent(mint)}/candles${query ? `?${query}` : ""}`;
572
+ return { content: [{ type: "text", text: await restQuery("GET", path) }] };
573
+ });
551
574
  server.tool("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.", { mints: z.array(z.string()).min(1).max(50).describe("1–50 base58 Solana token mints") }, { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }, async ({ mints }) => ({
552
575
  content: [{ type: "text", text: await restQuery("POST", "/tokens/batch/buyer-quality", { mints }) }],
553
576
  }));
@@ -874,7 +897,7 @@ async function main() {
874
897
  res.end(JSON.stringify({
875
898
  name: "madeonsol",
876
899
  description: "Solana KOL trading intelligence and deployer analytics. Real-time data from 1,000+ KOL wallets, 6,700+ Pump.fun deployers, 47,000+ scored alpha wallets, copy-trade rules, and wallet tracker. Supports MadeOnSol API key (msk_) or x402 micropayments.",
877
- version: "1.11.0",
900
+ version: "1.13.0",
878
901
  tools: [
879
902
  { name: "madeonsol_kol_feed", description: "Get real-time Solana KOL trades from 1,000+ tracked wallets." },
880
903
  { name: "madeonsol_kol_coordination", description: "Get KOL convergence signals — tokens multiple KOLs are accumulating." },
@@ -911,6 +934,7 @@ async function main() {
911
934
  { name: "madeonsol_alpha_linked", description: "Behaviorally linked wallets (co-bought 3+ tokens within 2s). ULTRA only." },
912
935
  { name: "madeonsol_token_cap_table", description: "First non-deployer early buyers for a token, enriched. PRO=10, ULTRA=20." },
913
936
  { name: "madeonsol_token_buyer_quality", description: "0–100 buyer quality score for a token's first-buyer cohort." },
937
+ { name: "madeonsol_token_candles", description: "Historical OHLCV price candles (1m–1d). PRO=OHLCV 30d; ULTRA=+net flow, liquidity delta, full history." },
914
938
  { name: "madeonsol_tokens_batch_buyer_quality", description: "Bulk buyer-quality scoring for up to 50 mints. Shares the LRU cache." },
915
939
  { name: "madeonsol_token_get", description: "Comprehensive per-mint snapshot: price, MC, volume, deployer, KOL, age, blacklist." },
916
940
  { name: "madeonsol_token_batch", description: "Bulk token snapshot for up to 50 mints — ~10-20× cheaper than N sequential calls." },
@@ -957,7 +981,7 @@ async function main() {
957
981
  transport = new StreamableHTTPServerTransport({
958
982
  sessionIdGenerator: undefined,
959
983
  });
960
- const server = new McpServer({ name: "madeonsol", version: "1.11.0" });
984
+ const server = new McpServer({ name: "madeonsol", version: "1.13.0" });
961
985
  registerTools(server);
962
986
  await server.connect(transport);
963
987
  }
@@ -995,7 +1019,7 @@ async function main() {
995
1019
  }
996
1020
  else {
997
1021
  // Stdio transport for local use (Claude Desktop, Cursor, Claude Code)
998
- const server = new McpServer({ name: "madeonsol", version: "1.11.0" });
1022
+ const server = new McpServer({ name: "madeonsol", version: "1.13.0" });
999
1023
  registerTools(server);
1000
1024
  const transport = new StdioServerTransport();
1001
1025
  await server.connect(transport);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-server-madeonsol",
3
- "version": "1.11.0",
3
+ "version": "1.13.0",
4
4
  "mcpName": "io.github.LamboPoewert/madeonsol",
5
5
  "description": "MCP server for MadeOnSol Solana KOL intelligence API — use from Claude, Cursor, or any MCP client",
6
6
  "type": "module",