mcp-server-madeonsol 1.12.0 → 1.14.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 +7 -1
- package/dist/index.js +36 -4
- package/package.json +1 -1
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.14.0** — **Token trade flow.** New tool `madeonsol_token_flow` — a trade-flow aggregate (organic-vs-fake volume) over a `1h`/`24h` window: `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). PRO/ULTRA only. Deployer alerts (`madeonsol_deployer_alerts`) now carry `deployers.deployer_sol_balance` — the deployer wallet's SOL balance at alert time (null for historical rows).
|
|
17
|
+
>
|
|
18
|
+
> **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.
|
|
19
|
+
>
|
|
16
20
|
> **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.
|
|
17
21
|
>
|
|
18
22
|
> **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`.
|
|
@@ -121,7 +125,7 @@ Add to MCP settings with the same command and env vars.
|
|
|
121
125
|
|
|
122
126
|
| Tool | Description |
|
|
123
127
|
|---|---|
|
|
124
|
-
| `madeonsol_deployer_alerts` | Pump.fun deployer launches with KOL enrichment. Filter by tier (elite/good/moderate/rising/cold). ULTRA unlocks full pagination. |
|
|
128
|
+
| `madeonsol_deployer_alerts` | Pump.fun deployer launches with KOL enrichment. Filter by tier (elite/good/moderate/rising/cold). ULTRA unlocks full pagination. Each alert's `deployers` now includes `deployer_sol_balance` — the deployer wallet's SOL balance at alert time (null for historical rows). |
|
|
125
129
|
| `madeonsol_deployer_trajectory` | Deployer skill curve — streaks, rolling bond rate, trend — available on all tiers |
|
|
126
130
|
|
|
127
131
|
### Deshred Sniper Alerts *(new in 1.10 — Pro/Ultra)*
|
|
@@ -172,6 +176,8 @@ Scored from 1M+ early-buyer records (wallets seen in the first 20 buyers of Pump
|
|
|
172
176
|
| `madeonsol_token_cap_table` | PRO+ | First non-deployer early buyers, enriched with PnL/KOL/bot flags. PRO=10, ULTRA=20 |
|
|
173
177
|
| `madeonsol_token_buyer_quality` | All | 0–100 buyer-quality score + full breakdown (5-min cached) |
|
|
174
178
|
| `madeonsol_token_risk` | PRO+ | Transparent 0–100 rug-risk/safety score with `band`, explainable `factors[]`, and raw `inputs` |
|
|
179
|
+
| `madeonsol_token_candles` | PRO+ | Historical OHLCV candles (1m–1d). PRO=OHLCV 30d; ULTRA=+net flow, liquidity delta, MEV volume, full history |
|
|
180
|
+
| `madeonsol_token_flow` | PRO+ | Trade-flow aggregate (organic-vs-fake volume) over a 1h/24h `window` — unique wallets/buyers/sellers, buy/sell counts + SOL, `net_sol`, `trades_per_wallet` wash-trading proxy |
|
|
175
181
|
|
|
176
182
|
### Copy-Trade Rules (PRO/ULTRA)
|
|
177
183
|
|
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.
|
|
14
|
+
const UA = "mcp-server-madeonsol/1.14.0";
|
|
15
15
|
function apiKeyHeaders() {
|
|
16
16
|
const h = { "User-Agent": UA };
|
|
17
17
|
if (authMode === "madeonsol") {
|
|
@@ -551,6 +551,37 @@ function registerTools(server) {
|
|
|
551
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
552
|
content: [{ type: "text", text: await restQuery("GET", `/tokens/${encodeURIComponent(mint)}/risk`) }],
|
|
553
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
|
+
});
|
|
574
|
+
server.tool("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.", {
|
|
575
|
+
mint: z.string().describe("Token mint address (base58)"),
|
|
576
|
+
window: z.enum(["1h", "24h"]).optional().describe("Lookback window (default 1h)"),
|
|
577
|
+
}, { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }, async ({ mint, window }) => {
|
|
578
|
+
const qs = new URLSearchParams();
|
|
579
|
+
if (window !== undefined)
|
|
580
|
+
qs.set("window", window);
|
|
581
|
+
const query = qs.toString();
|
|
582
|
+
const path = `/tokens/${encodeURIComponent(mint)}/flow${query ? `?${query}` : ""}`;
|
|
583
|
+
return { content: [{ type: "text", text: await restQuery("GET", path) }] };
|
|
584
|
+
});
|
|
554
585
|
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 }) => ({
|
|
555
586
|
content: [{ type: "text", text: await restQuery("POST", "/tokens/batch/buyer-quality", { mints }) }],
|
|
556
587
|
}));
|
|
@@ -877,7 +908,7 @@ async function main() {
|
|
|
877
908
|
res.end(JSON.stringify({
|
|
878
909
|
name: "madeonsol",
|
|
879
910
|
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.",
|
|
880
|
-
version: "1.
|
|
911
|
+
version: "1.13.0",
|
|
881
912
|
tools: [
|
|
882
913
|
{ name: "madeonsol_kol_feed", description: "Get real-time Solana KOL trades from 1,000+ tracked wallets." },
|
|
883
914
|
{ name: "madeonsol_kol_coordination", description: "Get KOL convergence signals — tokens multiple KOLs are accumulating." },
|
|
@@ -914,6 +945,7 @@ async function main() {
|
|
|
914
945
|
{ name: "madeonsol_alpha_linked", description: "Behaviorally linked wallets (co-bought 3+ tokens within 2s). ULTRA only." },
|
|
915
946
|
{ name: "madeonsol_token_cap_table", description: "First non-deployer early buyers for a token, enriched. PRO=10, ULTRA=20." },
|
|
916
947
|
{ name: "madeonsol_token_buyer_quality", description: "0–100 buyer quality score for a token's first-buyer cohort." },
|
|
948
|
+
{ name: "madeonsol_token_candles", description: "Historical OHLCV price candles (1m–1d). PRO=OHLCV 30d; ULTRA=+net flow, liquidity delta, full history." },
|
|
917
949
|
{ name: "madeonsol_tokens_batch_buyer_quality", description: "Bulk buyer-quality scoring for up to 50 mints. Shares the LRU cache." },
|
|
918
950
|
{ name: "madeonsol_token_get", description: "Comprehensive per-mint snapshot: price, MC, volume, deployer, KOL, age, blacklist." },
|
|
919
951
|
{ name: "madeonsol_token_batch", description: "Bulk token snapshot for up to 50 mints — ~10-20× cheaper than N sequential calls." },
|
|
@@ -960,7 +992,7 @@ async function main() {
|
|
|
960
992
|
transport = new StreamableHTTPServerTransport({
|
|
961
993
|
sessionIdGenerator: undefined,
|
|
962
994
|
});
|
|
963
|
-
const server = new McpServer({ name: "madeonsol", version: "1.
|
|
995
|
+
const server = new McpServer({ name: "madeonsol", version: "1.13.0" });
|
|
964
996
|
registerTools(server);
|
|
965
997
|
await server.connect(transport);
|
|
966
998
|
}
|
|
@@ -998,7 +1030,7 @@ async function main() {
|
|
|
998
1030
|
}
|
|
999
1031
|
else {
|
|
1000
1032
|
// Stdio transport for local use (Claude Desktop, Cursor, Claude Code)
|
|
1001
|
-
const server = new McpServer({ name: "madeonsol", version: "1.
|
|
1033
|
+
const server = new McpServer({ name: "madeonsol", version: "1.13.0" });
|
|
1002
1034
|
registerTools(server);
|
|
1003
1035
|
const transport = new StdioServerTransport();
|
|
1004
1036
|
await server.connect(transport);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-server-madeonsol",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.14.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",
|