mcp-server-madeonsol 1.9.0 → 1.10.1

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.
Files changed (3) hide show
  1. package/README.md +21 -5
  2. package/dist/index.js +45 -5
  3. package/package.json +2 -2
package/README.md CHANGED
@@ -11,8 +11,14 @@
11
11
 
12
12
  MCP server for [MadeOnSol](https://madeonsol.com) Solana KOL intelligence API. Use from Claude Desktop, Cursor, or any MCP-compatible client.
13
13
 
14
- > 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, monitor any Solana wallet for swaps and transfers, and stream every DEX trade. Free tier: 200 requests/day at [madeonsol.com/pricing](https://madeonsol.com/pricing) — no credit card required.
15
-
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
+
16
+ > **New in 1.10** — **Deshred Sniper Alerts.** `madeonsol_sniper_recent` surfaces pump.fun deploys from shred-level data ~500ms before on-chain confirmation. PRO: elite/good deployers. ULTRA: all tiers + custom watchlist. Use `sniper:deploys` WebSocket or `sniper:deploy` webhook for live push.
17
+ >
18
+ > **New in 1.9** — **Price alerts, scout leaderboard, coordination history.** `madeonsol_price_alerts_*` CRUD (PRO=5, ULTRA=25). `madeonsol_scout_leaderboard` ranks top scouts by first-touch follow-on rate. `madeonsol_coordination_history` and `madeonsol_peak_history` expose the historical record. `madeonsol_wallet_stats` now returns `derived`: win_rate, roi, verdict, biggest_miss.
19
+ >
20
+ > **New in 1.8** — **Universal Wallet API.** `madeonsol_wallet_stats`, `madeonsol_wallet_pnl`, `madeonsol_wallet_positions`, `madeonsol_wallet_trades` — FIFO cost-basis PnL and cursor-paginated raw trades for any Solana wallet. PRO+. Cache hits don't count against quota.
21
+ >
16
22
  > **New in 1.7.0** *(2026-05-12)* — Two new tools: **`madeonsol_me`** (account/quota introspection — read tier, remaining requests, and per-feature usage without parsing rate-limit headers) and **`madeonsol_tokens_list`** (PRO+ filtered, sortable token directory — MC band, liquidity floor, primary DEX, authority/safety flags, plus computed 1h volume / MEV-share / MC-change deltas). Token responses now expose **velocity / MEV-share** fields. Token directory defaults to **`min_liq=2000`** to skip phantom-MC dust — pass `min_liq=0` to opt out. `/token/{mint}` now returns **structured 400 errors** (`code` / `reason` / `example` / `docs`) instead of plain strings. Deprecated `avg_entry_mc_usd` field fully removed from KOL/alpha leaderboards.
17
23
 
18
24
  ## Install via Smithery (one line)
@@ -110,6 +116,15 @@ Add to MCP settings with the same command and env vars.
110
116
  | `madeonsol_deployer_alerts` | Pump.fun deployer launches with KOL enrichment. Filter by tier (elite/good/moderate/rising/cold). ULTRA unlocks full pagination. |
111
117
  | `madeonsol_deployer_trajectory` | Deployer skill curve — streaks, rolling bond rate, trend — available on all tiers |
112
118
 
119
+ ### Deshred Sniper Alerts *(new in 1.10 — Pro/Ultra)*
120
+
121
+ Pre-confirm pump.fun deploy feed reconstructed from shred-level (**deshred**) data — launches surface **~500ms before they confirm on-chain**. Pro sees elite/good deployers; Ultra sees every tier.
122
+
123
+ | Tool | Description |
124
+ |---|---|
125
+ | `madeonsol_sniper_recent` | Newest-first deshred deploy feed. Pro: elite/good · Ultra: all tiers. `watchlist: true` (Ultra) narrows to your custom deployer watchlist |
126
+ | `madeonsol_sniper_by_deployer` | Deshred deploys for a single deployer wallet (Ultra) |
127
+
113
128
  ### Wallet Tracker
114
129
 
115
130
  | Tool | Description |
@@ -133,7 +148,7 @@ Cached server-side with dynamic TTL (5min / 1h / 24h based on last activity). Co
133
148
 
134
149
  ### Alpha Wallet Intelligence
135
150
 
136
- Scored from 47,000+ early-buyer records (wallets seen in the first 20 buyers of Pump.fun tokens).
151
+ Scored from 1M+ early-buyer records (wallets seen in the first 20 buyers of Pump.fun tokens).
137
152
 
138
153
  | Tool | Tier | Description |
139
154
  |---|---|---|
@@ -238,8 +253,9 @@ CRUD for token dip/recovery price alerts. Fires when a token's market cap crosse
238
253
  | Tier | Price | Wallets tracked | Requests/day |
239
254
  |------|-------|-----------------|--------------|
240
255
  | Free | $0 | 10 | 200 |
241
- | Pro | $49/mo | 50 | 10,000 |
242
- | Ultra | $149/mo | 100 + WS events | 100,000 |
256
+ | BASIC | $29/mo | 10 | 200 (all endpoints) |
257
+ | Pro | $99/mo | 50 | 10,000 |
258
+ | Ultra | $299/mo | 100 + WS events | 100,000 |
243
259
 
244
260
  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](https://madeonsol.com/pricing).
245
261
 
package/dist/index.js CHANGED
@@ -11,11 +11,13 @@ 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.10.0";
14
15
  function apiKeyHeaders() {
16
+ const h = { "User-Agent": UA };
15
17
  if (authMode === "madeonsol") {
16
- return { Authorization: `Bearer ${MADEONSOL_API_KEY}` };
18
+ h.Authorization = `Bearer ${MADEONSOL_API_KEY}`;
17
19
  }
18
- return {};
20
+ return h;
19
21
  }
20
22
  async function initAuth() {
21
23
  if (MADEONSOL_API_KEY) {
@@ -260,6 +262,44 @@ function registerTools(server) {
260
262
  }, readOnlyAnnotations, async ({ period, min_kols, limit }) => ({
261
263
  content: [{ type: "text", text: await query("/api/x402/kol/tokens/trending", { period, min_kols, limit }) }],
262
264
  }));
265
+ server.tool("madeonsol_sniper_recent", "Deshred pre-confirm pump.fun deploy feed — new launches surface ~500ms before they confirm on-chain (reconstructed from shred-level data). PRO sees elite/good deployers; ULTRA sees every tier. Requires a Pro/Ultra msk_ API key.", {
266
+ deployer_tier: z.enum(["elite", "good", "moderate", "rising", "cold", "unranked"]).optional().describe("Filter by deployer reputation tier (ULTRA)"),
267
+ min_bond_rate: z.number().min(0).max(1).optional().describe("Minimum deployer lifetime bond rate (0-1)"),
268
+ since: z.string().optional().describe("ISO-8601 — only deploys detected after this timestamp"),
269
+ watchlist: z.boolean().optional().describe("ULTRA: narrow to your custom deployer watchlist (any tier)"),
270
+ limit: z.number().min(1).max(200).default(50).describe("Max results"),
271
+ }, readOnlyAnnotations, async ({ deployer_tier, min_bond_rate, since, watchlist, limit }) => {
272
+ if (authMode !== "madeonsol")
273
+ return { content: [{ type: "text", text: "Sniper feed requires MADEONSOL_API_KEY (msk_, Pro/Ultra) — get one at madeonsol.com/pricing." }] };
274
+ const qs = new URLSearchParams({ limit: String(limit) });
275
+ if (deployer_tier)
276
+ qs.set("deployer_tier", deployer_tier);
277
+ if (min_bond_rate != null)
278
+ qs.set("min_bond_rate", String(min_bond_rate));
279
+ if (since)
280
+ qs.set("since", since);
281
+ if (watchlist)
282
+ qs.set("watchlist", "true");
283
+ const res = await fetch(`${BASE_URL}/api/v1/sniper/recent?${qs}`, { headers: apiKeyHeaders() });
284
+ if (!res.ok) {
285
+ const body = await res.text().catch(() => "");
286
+ return { content: [{ type: "text", text: `Error ${res.status}: ${body}` }] };
287
+ }
288
+ return { content: [{ type: "text", text: JSON.stringify(await res.json(), null, 2) }] };
289
+ });
290
+ server.tool("madeonsol_sniper_by_deployer", "Deshred pre-confirm deploys filtered to a single deployer wallet — audit a deployer's recent launches before tracking them. ULTRA only.", {
291
+ wallet: z.string().describe("Deployer wallet address (base58)"),
292
+ limit: z.number().min(1).max(200).default(50).describe("Max results"),
293
+ }, readOnlyAnnotations, async ({ wallet, limit }) => {
294
+ if (authMode !== "madeonsol")
295
+ return { content: [{ type: "text", text: "Sniper feed requires MADEONSOL_API_KEY (msk_, Ultra)." }] };
296
+ const res = await fetch(`${BASE_URL}/api/v1/sniper/by-deployer/${encodeURIComponent(wallet)}?limit=${limit}`, { headers: apiKeyHeaders() });
297
+ if (!res.ok) {
298
+ const body = await res.text().catch(() => "");
299
+ return { content: [{ type: "text", text: `Error ${res.status}: ${body}` }] };
300
+ }
301
+ return { content: [{ type: "text", text: JSON.stringify(await res.json(), null, 2) }] };
302
+ });
263
303
  server.tool("madeonsol_discovery", "List all available MadeOnSol API endpoints with prices and parameter docs. Free, no auth required.", {}, { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }, async () => {
264
304
  const res = await fetch(new URL("/api/x402", BASE_URL).toString());
265
305
  const data = await res.json();
@@ -826,7 +866,7 @@ async function main() {
826
866
  res.end(JSON.stringify({
827
867
  name: "madeonsol",
828
868
  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.",
829
- version: "1.9.0",
869
+ version: "1.10.0",
830
870
  tools: [
831
871
  { name: "madeonsol_kol_feed", description: "Get real-time Solana KOL trades from 1,000+ tracked wallets." },
832
872
  { name: "madeonsol_kol_coordination", description: "Get KOL convergence signals — tokens multiple KOLs are accumulating." },
@@ -908,7 +948,7 @@ async function main() {
908
948
  transport = new StreamableHTTPServerTransport({
909
949
  sessionIdGenerator: undefined,
910
950
  });
911
- const server = new McpServer({ name: "madeonsol", version: "1.9.0" });
951
+ const server = new McpServer({ name: "madeonsol", version: "1.10.0" });
912
952
  registerTools(server);
913
953
  await server.connect(transport);
914
954
  }
@@ -946,7 +986,7 @@ async function main() {
946
986
  }
947
987
  else {
948
988
  // Stdio transport for local use (Claude Desktop, Cursor, Claude Code)
949
- const server = new McpServer({ name: "madeonsol", version: "1.9.0" });
989
+ const server = new McpServer({ name: "madeonsol", version: "1.10.0" });
950
990
  registerTools(server);
951
991
  const transport = new StdioServerTransport();
952
992
  await server.connect(transport);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mcp-server-madeonsol",
3
- "version": "1.9.0",
4
- "mcpName": "io.github.lambopoewert/madeonsol",
3
+ "version": "1.10.1",
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",
7
7
  "bin": {