@madeonsol/plugin-madeonsol 1.7.0 → 1.7.2

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
@@ -2,7 +2,7 @@
2
2
 
3
3
  ElizaOS plugin for [MadeOnSol](https://madeonsol.com) — Solana KOL trading intelligence, deployer analytics, and wallet tracking.
4
4
 
5
- > 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/developer](https://madeonsol.com/developer) — no credit card required.
5
+ > 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.
6
6
 
7
7
  > **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()` and `client.getTokensList(params)`. Token responses now expose **velocity / MEV-share enrichment** fields. The `/tokens` scanner applies a default `min_liq=2000` so the agent isn't drowned in dust pools by default. `/token/{mint}` HTTP 400s now return structured `code` / `reason` / `example` / `docs` so the agent can self-correct bad mints. Deprecated `avg_entry_mc_usd` has been removed from all leaderboard payloads.
8
8
 
@@ -14,7 +14,7 @@ npm install @madeonsol/plugin-madeonsol
14
14
 
15
15
  ```ts
16
16
  import { madeOnSolPlugin } from "@madeonsol/plugin-madeonsol";
17
- const agent = { plugins: [madeOnSolPlugin], settings: { MADEONSOL_API_KEY: "msk_..." } }; // free key: https://madeonsol.com/developer
17
+ const agent = { plugins: [madeOnSolPlugin], settings: { MADEONSOL_API_KEY: "msk_..." } }; // free tier at https://madeonsol.com/pricing
18
18
  // Then ask the agent: "What are KOLs buying right now?"
19
19
  ```
20
20
 
@@ -24,7 +24,7 @@ Three options (in priority order):
24
24
 
25
25
  | Method | Setting | Best for |
26
26
  |---|---|---|
27
- | **MadeOnSol API key** (recommended) | `MADEONSOL_API_KEY` | Developers — [get a free key](https://madeonsol.com/developer) |
27
+ | **MadeOnSol API key** (recommended) | `MADEONSOL_API_KEY` | Developers — [get a free key](https://madeonsol.com/pricing) |
28
28
  | x402 micropayments | `SVM_PRIVATE_KEY` | AI agents with Solana wallets |
29
29
 
30
30
  ## What it does
@@ -58,7 +58,7 @@ import { madeOnSolPlugin } from "@madeonsol/plugin-madeonsol";
58
58
  const agent = {
59
59
  plugins: [madeOnSolPlugin],
60
60
  settings: {
61
- // Option 1: API key — get one free at madeonsol.com/developer
61
+ // Option 1: API key — get one free at madeonsol.com/pricing
62
62
  MADEONSOL_API_KEY: "msk_your_api_key_here",
63
63
 
64
64
  // Option 2: x402 micropayments (AI agents)
@@ -134,7 +134,7 @@ Your agent can then respond to queries like:
134
134
  | Pro | $49/mo | 50 | 10,000 |
135
135
  | Ultra | $149/mo | 100 + WS events | 100,000 |
136
136
 
137
- 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/developer](https://madeonsol.com/developer).
137
+ 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).
138
138
 
139
139
  ## Also Available
140
140
 
@@ -29,7 +29,7 @@ export const deployerAlertsAction = {
29
29
  const result = await client.getDeployerAlerts(tier ? { limit, tier } : { limit });
30
30
  if (result.error) {
31
31
  callback?.({ text: result.status === 402
32
- ? "Authentication required. Set MADEONSOL_API_KEY — free at https://madeonsol.com/developer — or SVM_PRIVATE_KEY."
32
+ ? "Authentication required. Set MADEONSOL_API_KEY — free at https://madeonsol.com/pricing — or SVM_PRIVATE_KEY."
33
33
  : `Error: ${result.error}` });
34
34
  return undefined;
35
35
  }
@@ -24,7 +24,7 @@ export const kolAlertsRecentAction = {
24
24
  const result = await client.getKolAlertsRecent({ window, limit: "20" });
25
25
  if (result.error) {
26
26
  callback?.({ text: result.status === 402
27
- ? "Authentication required. Set MADEONSOL_API_KEY — free at https://madeonsol.com/developer — or SVM_PRIVATE_KEY."
27
+ ? "Authentication required. Set MADEONSOL_API_KEY — free at https://madeonsol.com/pricing — or SVM_PRIVATE_KEY."
28
28
  : `Error: ${result.error}` });
29
29
  return undefined;
30
30
  }
@@ -29,7 +29,7 @@ export const kolCompareAction = {
29
29
  const result = await client.getKolCompare(wallets);
30
30
  if (result.error) {
31
31
  callback?.({ text: result.status === 402
32
- ? "Authentication required. Set MADEONSOL_API_KEY — free at https://madeonsol.com/developer — or SVM_PRIVATE_KEY."
32
+ ? "Authentication required. Set MADEONSOL_API_KEY — free at https://madeonsol.com/pricing — or SVM_PRIVATE_KEY."
33
33
  : `Error: ${result.error}` });
34
34
  return undefined;
35
35
  }
@@ -24,7 +24,7 @@ export const kolCoordinationAction = {
24
24
  const result = await client.getKolCoordination({ period, limit: "10" });
25
25
  if (result.error) {
26
26
  callback?.({ text: result.status === 402
27
- ? "Authentication required. Set MADEONSOL_API_KEY — free at https://madeonsol.com/developer — or SVM_PRIVATE_KEY."
27
+ ? "Authentication required. Set MADEONSOL_API_KEY — free at https://madeonsol.com/pricing — or SVM_PRIVATE_KEY."
28
28
  : `Error: ${result.error}` });
29
29
  return undefined;
30
30
  }
@@ -25,7 +25,7 @@ export const kolFeedAction = {
25
25
  const result = await client.getKolFeed({ limit: "10", ...(action ? { action } : {}) });
26
26
  if (result.error) {
27
27
  callback?.({ text: result.status === 402
28
- ? "Authentication required. Set MADEONSOL_API_KEY — free at https://madeonsol.com/developer — or SVM_PRIVATE_KEY."
28
+ ? "Authentication required. Set MADEONSOL_API_KEY — free at https://madeonsol.com/pricing — or SVM_PRIVATE_KEY."
29
29
  : `Error: ${result.error}` });
30
30
  return undefined;
31
31
  }
@@ -24,7 +24,7 @@ export const kolLeaderboardAction = {
24
24
  const result = await client.getKolLeaderboard({ period, limit: "10" });
25
25
  if (result.error) {
26
26
  callback?.({ text: result.status === 402
27
- ? "Authentication required. Set MADEONSOL_API_KEY — free at https://madeonsol.com/developer — or SVM_PRIVATE_KEY."
27
+ ? "Authentication required. Set MADEONSOL_API_KEY — free at https://madeonsol.com/pricing — or SVM_PRIVATE_KEY."
28
28
  : `Error: ${result.error}` });
29
29
  return undefined;
30
30
  }
@@ -28,7 +28,7 @@ export const kolTokenEntryOrderAction = {
28
28
  const result = await client.getKolTokenEntryOrder(mint, { limit: "20" });
29
29
  if (result.error) {
30
30
  callback?.({ text: result.status === 402
31
- ? "Authentication required. Set MADEONSOL_API_KEY — free at https://madeonsol.com/developer — or SVM_PRIVATE_KEY."
31
+ ? "Authentication required. Set MADEONSOL_API_KEY — free at https://madeonsol.com/pricing — or SVM_PRIVATE_KEY."
32
32
  : `Error: ${result.error}` });
33
33
  return undefined;
34
34
  }
@@ -0,0 +1,6 @@
1
+ import type { Action } from "@elizaos/core";
2
+ /**
3
+ * Returns the authenticated caller's MadeOnSol account: tier, daily/burst
4
+ * quota usage, and feature slot counts (webhooks, copy-trade rules, coord rules).
5
+ */
6
+ export declare const meAction: Action;
@@ -0,0 +1,59 @@
1
+ import { MadeOnSolClient } from "../client.js";
2
+ import { MADEONSOL_CLIENT_KEY } from "../index.js";
3
+ function getClient(runtime) {
4
+ return runtime[MADEONSOL_CLIENT_KEY] ?? new MadeOnSolClient();
5
+ }
6
+ /**
7
+ * Returns the authenticated caller's MadeOnSol account: tier, daily/burst
8
+ * quota usage, and feature slot counts (webhooks, copy-trade rules, coord rules).
9
+ */
10
+ export const meAction = {
11
+ name: "GET_MADEONSOL_ACCOUNT",
12
+ description: "Get your MadeOnSol account info — current tier, daily request quota, burst limit, and how many webhook / copy-trade / coordination rule slots you have used.",
13
+ similes: [
14
+ "my account",
15
+ "my quota",
16
+ "how many requests",
17
+ "api usage",
18
+ "my tier",
19
+ "requests remaining",
20
+ ],
21
+ validate: async (_runtime, message) => {
22
+ const text = (message.content?.text || "").toLowerCase();
23
+ return /\b(my account|my quota|how many requests|api usage|tier|remaining)\b/.test(text);
24
+ },
25
+ handler: async (runtime, _message, _state, _options, callback) => {
26
+ const client = getClient(runtime);
27
+ const result = await client.getMe();
28
+ if (result.error) {
29
+ callback?.({ text: result.status === 401 || result.status === 402
30
+ ? "Authentication required. Set MADEONSOL_API_KEY — free at https://madeonsol.com/pricing — or SVM_PRIVATE_KEY."
31
+ : `Error: ${result.error}` });
32
+ return undefined;
33
+ }
34
+ const data = result.data;
35
+ const tier = (data.tier || "unknown").toUpperCase();
36
+ const dUsed = data.quota?.daily?.used ?? 0;
37
+ const dLimit = data.quota?.daily?.limit ?? 0;
38
+ const dRem = data.quota?.daily?.remaining ?? Math.max(0, dLimit - dUsed);
39
+ const bUsed = data.quota?.burst?.used ?? 0;
40
+ const bLimit = data.quota?.burst?.limit ?? 0;
41
+ const whUsed = data.slots?.webhooks?.used ?? 0;
42
+ const whLimit = data.slots?.webhooks?.limit ?? 0;
43
+ const ctUsed = data.slots?.copy_trade_wallets?.used ?? 0;
44
+ const ctLimit = data.slots?.copy_trade_wallets?.limit ?? 0;
45
+ const crUsed = data.slots?.coordination_rules?.used ?? 0;
46
+ const crLimit = data.slots?.coordination_rules?.limit ?? 0;
47
+ callback?.({
48
+ text: `Your MadeOnSol account: ${tier} tier. Daily quota: ${dUsed}/${dLimit} (${dRem} left). Burst: ${bUsed}/${bLimit} per minute. Webhooks: ${whUsed}/${whLimit}, Copy-trade wallets: ${ctUsed}/${ctLimit}, Coord rules: ${crUsed}/${crLimit}.`,
49
+ content: data,
50
+ });
51
+ return undefined;
52
+ },
53
+ examples: [
54
+ [
55
+ { name: "user1", content: { text: "What is my MadeOnSol tier and how many requests do I have remaining?" } },
56
+ { name: "assistant", content: { text: "Here is your MadeOnSol account info..." } },
57
+ ],
58
+ ],
59
+ };
@@ -0,0 +1,7 @@
1
+ import type { Action } from "@elizaos/core";
2
+ /**
3
+ * Scan the MadeOnSol token universe with MC, liquidity, momentum, and DEX filters.
4
+ * Heuristics pulled from the user prompt: "high liquidity" → min_liq=10000,
5
+ * "momentum"/"pumping" → mc_change_1h_min_pct=10, "pumpfun" → primary_dex=pumpfun.
6
+ */
7
+ export declare const tokensListAction: Action;
@@ -0,0 +1,75 @@
1
+ import { MadeOnSolClient } from "../client.js";
2
+ import { MADEONSOL_CLIENT_KEY } from "../index.js";
3
+ function getClient(runtime) {
4
+ return runtime[MADEONSOL_CLIENT_KEY] ?? new MadeOnSolClient();
5
+ }
6
+ function fmtMc(mc) {
7
+ if (mc == null || !isFinite(mc) || mc <= 0)
8
+ return "?";
9
+ if (mc >= 1e6)
10
+ return `$${(mc / 1e6).toFixed(2)}M`;
11
+ if (mc >= 1e3)
12
+ return `$${(mc / 1e3).toFixed(1)}K`;
13
+ return `$${mc.toFixed(0)}`;
14
+ }
15
+ /**
16
+ * Scan the MadeOnSol token universe with MC, liquidity, momentum, and DEX filters.
17
+ * Heuristics pulled from the user prompt: "high liquidity" → min_liq=10000,
18
+ * "momentum"/"pumping" → mc_change_1h_min_pct=10, "pumpfun" → primary_dex=pumpfun.
19
+ */
20
+ export const tokensListAction = {
21
+ name: "LIST_MADEONSOL_TOKENS",
22
+ description: "Scan MadeOnSol's Solana token universe by MC, liquidity, 1h MC momentum, primary DEX, or age. Returns the top matching tokens with mint, symbol, market cap, liquidity, and 1h MC change.",
23
+ similes: [
24
+ "top tokens",
25
+ "trending tokens",
26
+ "hot tokens",
27
+ "scan tokens",
28
+ "tokens by mc",
29
+ "liquid tokens",
30
+ ],
31
+ validate: async (_runtime, message) => {
32
+ const text = (message.content?.text || "").toLowerCase();
33
+ return /\b(top tokens|trending tokens|hot tokens|scan tokens|tokens by mc|liquid tokens)\b/.test(text);
34
+ },
35
+ handler: async (runtime, message, _state, _options, callback) => {
36
+ const client = getClient(runtime);
37
+ const text = (message.content?.text || "").toLowerCase();
38
+ const params = { limit: "10" };
39
+ if (/high liquidity/.test(text))
40
+ params.min_liq = "10000";
41
+ if (/momentum|pumping/.test(text))
42
+ params.mc_change_1h_min_pct = "10";
43
+ if (/pumpfun|pump\.fun/.test(text))
44
+ params.primary_dex = "pumpfun";
45
+ const result = await client.getTokensList(params);
46
+ if (result.error) {
47
+ callback?.({ text: result.status === 402
48
+ ? "Authentication required. Set MADEONSOL_API_KEY — free at https://madeonsol.com/pricing — or SVM_PRIVATE_KEY."
49
+ : `Error: ${result.error}` });
50
+ return undefined;
51
+ }
52
+ const data = result.data;
53
+ const tokens = (data.tokens || []).slice(0, 10);
54
+ const lines = tokens.map((t, i) => {
55
+ const label = t.symbol || t.name || "?";
56
+ const change = t.mc_change_1h_pct != null && isFinite(t.mc_change_1h_pct)
57
+ ? ` (${t.mc_change_1h_pct >= 0 ? "+" : ""}${t.mc_change_1h_pct.toFixed(1)}% 1h)`
58
+ : "";
59
+ return `${i + 1}. ${label} ${t.mint.slice(0, 8)}… — MC ${fmtMc(t.mc_usd)}, Liq ${fmtMc(t.liquidity_usd)}${change}`;
60
+ });
61
+ callback?.({
62
+ text: tokens.length
63
+ ? `Top tokens:\n${lines.join("\n")}`
64
+ : "No tokens matched those filters.",
65
+ content: data,
66
+ });
67
+ return undefined;
68
+ },
69
+ examples: [
70
+ [
71
+ { name: "user1", content: { text: "Show me the top trending tokens on Solana with high liquidity" } },
72
+ { name: "assistant", content: { text: "Here are the top trending tokens..." } },
73
+ ],
74
+ ],
75
+ };
package/dist/client.d.ts CHANGED
@@ -3,11 +3,11 @@
3
3
  * Two auth modes: MadeOnSol API key (`msk_`, recommended) or x402 micropayments.
4
4
  *
5
5
  * v1.0 breaking change: RapidAPI auth has been removed (marketplace retired 2026-04-19).
6
- * Get a free `msk_` key at https://madeonsol.com/developer.
6
+ * Get a free `msk_` key at https://madeonsol.com/pricing.
7
7
  */
8
8
  export interface MadeOnSolClientOptions {
9
9
  baseUrl?: string;
10
- /** MadeOnSol API key — get one free at https://madeonsol.com/developer. Preferred. */
10
+ /** MadeOnSol API key — get one free at https://madeonsol.com/pricing. Preferred. */
11
11
  apiKey?: string;
12
12
  /** x402 payment-enabled fetch (for AI agents with SVM_PRIVATE_KEY). */
13
13
  fetchFn?: typeof fetch;
@@ -392,6 +392,33 @@ export declare class MadeOnSolClient {
392
392
  error?: string;
393
393
  status: number;
394
394
  }>;
395
+ /** Get the authenticated caller's account, tier, and quota usage. */
396
+ getMe(): Promise<{
397
+ data?: unknown;
398
+ error?: string;
399
+ status: number;
400
+ }>;
401
+ /**
402
+ * List tokens with filters (mc band, liquidity, momentum, DEX, age, etc.).
403
+ * Default `min_liq` is 2000 server-side. Returns up to ~50 tokens per call.
404
+ */
405
+ getTokensList(params?: {
406
+ limit?: string;
407
+ offset?: string;
408
+ primary_dex?: string;
409
+ min_mc?: string;
410
+ max_mc?: string;
411
+ min_liq?: string;
412
+ max_age_min?: string;
413
+ mc_change_1h_min_pct?: string;
414
+ mc_change_1h_max_pct?: string;
415
+ sort?: string;
416
+ order?: string;
417
+ }): Promise<{
418
+ data?: unknown;
419
+ error?: string;
420
+ status: number;
421
+ }>;
395
422
  copyTradeSignals(params?: {
396
423
  rule_id?: string;
397
424
  limit?: string;
package/dist/client.js CHANGED
@@ -3,7 +3,7 @@
3
3
  * Two auth modes: MadeOnSol API key (`msk_`, recommended) or x402 micropayments.
4
4
  *
5
5
  * v1.0 breaking change: RapidAPI auth has been removed (marketplace retired 2026-04-19).
6
- * Get a free `msk_` key at https://madeonsol.com/developer.
6
+ * Get a free `msk_` key at https://madeonsol.com/pricing.
7
7
  */
8
8
  const DEFAULT_BASE = "https://madeonsol.com";
9
9
  export class MadeOnSolClient {
@@ -27,7 +27,7 @@ export class MadeOnSolClient {
27
27
  else {
28
28
  this.authMode = "none";
29
29
  console.warn("\n[madeonsol] MadeOnSolClient constructed without apiKey or fetchFn — every request will fail.\n" +
30
- " → Get a free key (200 req/day, no card) at https://madeonsol.com/developer\n" +
30
+ " → Get a free key (200 req/day, no card) at https://madeonsol.com/pricing\n" +
31
31
  " → Then: new MadeOnSolClient({ apiKey: process.env.MADEONSOL_API_KEY })\n");
32
32
  }
33
33
  }
@@ -114,7 +114,7 @@ export class MadeOnSolClient {
114
114
  // ── REST helper (used by webhooks, streaming, alpha, copy-trade, wallet-tracker) ──
115
115
  async restRequest(method, path, body) {
116
116
  if (this.authMode !== "madeonsol") {
117
- return { error: "MadeOnSol API key required for this endpoint. Get a free `msk_` key at https://madeonsol.com/developer", status: 401 };
117
+ return { error: "MadeOnSol API key required for this endpoint. Get a free `msk_` key at https://madeonsol.com/pricing", status: 401 };
118
118
  }
119
119
  const res = await this.fetchFn(`${this.baseUrl}/api/v1${path}`, {
120
120
  method,
@@ -270,6 +270,27 @@ export class MadeOnSolClient {
270
270
  firstTouchSubscriptionsDelete(id) {
271
271
  return this.restRequest("DELETE", `/kol/first-touches/subscriptions/${encodeURIComponent(id)}`);
272
272
  }
273
+ // ── Account info ──
274
+ /** Get the authenticated caller's account, tier, and quota usage. */
275
+ getMe() {
276
+ return this.restRequest("GET", "/me");
277
+ }
278
+ // ── Token discovery / scanner ──
279
+ /**
280
+ * List tokens with filters (mc band, liquidity, momentum, DEX, age, etc.).
281
+ * Default `min_liq` is 2000 server-side. Returns up to ~50 tokens per call.
282
+ */
283
+ getTokensList(params) {
284
+ const qs = new URLSearchParams();
285
+ if (params) {
286
+ for (const [k, v] of Object.entries(params)) {
287
+ if (v !== undefined)
288
+ qs.set(k, v);
289
+ }
290
+ }
291
+ const query = qs.toString() ? `?${qs.toString()}` : "";
292
+ return this.restRequest("GET", `/tokens${query}`);
293
+ }
273
294
  copyTradeSignals(params) {
274
295
  const qs = new URLSearchParams();
275
296
  if (params)
package/dist/index.d.ts CHANGED
@@ -7,6 +7,8 @@ import { walletTrackerWatchlistAction, walletTrackerTradesAction } from "./actio
7
7
  import { kolTokenEntryOrderAction } from "./actions/kol-token-entry-order.js";
8
8
  import { kolCompareAction } from "./actions/kol-compare.js";
9
9
  import { kolAlertsRecentAction } from "./actions/kol-alerts-recent.js";
10
+ import { meAction } from "./actions/me.js";
11
+ import { tokensListAction } from "./actions/tokens-list.js";
10
12
  /** Key used to store the initialized client on the runtime */
11
13
  export declare const MADEONSOL_CLIENT_KEY = "madeonsol:client";
12
14
  export declare const madeOnSolPlugin: Plugin;
@@ -15,3 +17,4 @@ export { MadeOnSolClient } from "./client.js";
15
17
  export { kolFeedAction, kolCoordinationAction, kolLeaderboardAction, deployerAlertsAction };
16
18
  export { walletTrackerWatchlistAction, walletTrackerTradesAction };
17
19
  export { kolTokenEntryOrderAction, kolCompareAction, kolAlertsRecentAction };
20
+ export { meAction, tokensListAction };
package/dist/index.js CHANGED
@@ -6,6 +6,8 @@ import { walletTrackerWatchlistAction, walletTrackerTradesAction } from "./actio
6
6
  import { kolTokenEntryOrderAction } from "./actions/kol-token-entry-order.js";
7
7
  import { kolCompareAction } from "./actions/kol-compare.js";
8
8
  import { kolAlertsRecentAction } from "./actions/kol-alerts-recent.js";
9
+ import { meAction } from "./actions/me.js";
10
+ import { tokensListAction } from "./actions/tokens-list.js";
9
11
  import { MadeOnSolClient } from "./client.js";
10
12
  /** Key used to store the initialized client on the runtime */
11
13
  export const MADEONSOL_CLIENT_KEY = "madeonsol:client";
@@ -22,11 +24,13 @@ export const madeOnSolPlugin = {
22
24
  kolTokenEntryOrderAction,
23
25
  kolCompareAction,
24
26
  kolAlertsRecentAction,
27
+ meAction,
28
+ tokensListAction,
25
29
  ],
26
30
  /**
27
31
  * Initialize the MadeOnSol client.
28
32
  * Auth priority: MADEONSOL_API_KEY > SVM_PRIVATE_KEY (x402).
29
- * Get a free `msk_` API key at madeonsol.com/developer — no wallet needed.
33
+ * Get a free `msk_` API key at madeonsol.com/pricing — no wallet needed.
30
34
  *
31
35
  * v1.0 breaking change: RAPIDAPI_KEY support has been removed
32
36
  * (MadeOnSol RapidAPI marketplace was retired 2026-04-19).
@@ -58,7 +62,7 @@ export const madeOnSolPlugin = {
58
62
  }
59
63
  else {
60
64
  console.warn("[madeonsol] No auth configured — every API call will fail.\n" +
61
- " → Get a free MADEONSOL_API_KEY (200 req/day, no card) at https://madeonsol.com/developer\n" +
65
+ " → Get a free MADEONSOL_API_KEY (200 req/day, no card) at https://madeonsol.com/pricing\n" +
62
66
  " → Or set SVM_PRIVATE_KEY for x402 micropayments.");
63
67
  }
64
68
  const madeOnSolClient = new MadeOnSolClient({ baseUrl, apiKey, fetchFn });
@@ -70,3 +74,4 @@ export { MadeOnSolClient } from "./client.js";
70
74
  export { kolFeedAction, kolCoordinationAction, kolLeaderboardAction, deployerAlertsAction };
71
75
  export { walletTrackerWatchlistAction, walletTrackerTradesAction };
72
76
  export { kolTokenEntryOrderAction, kolCompareAction, kolAlertsRecentAction };
77
+ export { meAction, tokensListAction };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@madeonsol/plugin-madeonsol",
3
- "version": "1.7.0",
3
+ "version": "1.7.2",
4
4
  "description": "ElizaOS plugin for MadeOnSol — Solana KOL intelligence and deployer analytics via x402 micropayments",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -12,7 +12,9 @@
12
12
  ],
13
13
  "scripts": {
14
14
  "build": "tsc",
15
- "dev": "tsc --watch"
15
+ "dev": "tsc --watch",
16
+ "preflight": "bash ../../scripts/preflight-publish.sh",
17
+ "prepublishOnly": "npm run preflight && npm run build"
16
18
  },
17
19
  "peerDependencies": {
18
20
  "@elizaos/core": ">=1.0.0",