@madeonsol/plugin-madeonsol 1.7.0 โ 1.7.3
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 +12 -5
- package/dist/actions/deployer-alerts.js +1 -1
- package/dist/actions/kol-alerts-recent.js +1 -1
- package/dist/actions/kol-compare.js +1 -1
- package/dist/actions/kol-coordination.js +1 -1
- package/dist/actions/kol-feed.js +1 -1
- package/dist/actions/kol-leaderboard.js +1 -1
- package/dist/actions/kol-token-entry-order.js +1 -1
- package/dist/actions/me.d.ts +6 -0
- package/dist/actions/me.js +59 -0
- package/dist/actions/tokens-list.d.ts +7 -0
- package/dist/actions/tokens-list.js +75 -0
- package/dist/client.d.ts +29 -2
- package/dist/client.js +24 -3
- package/dist/index.d.ts +3 -0
- package/dist/index.js +7 -2
- package/package.json +17 -2
package/README.md
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
# @madeonsol/plugin-madeonsol
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/@madeonsol/plugin-madeonsol)
|
|
4
|
+
[](https://www.npmjs.com/package/@madeonsol/plugin-madeonsol)
|
|
5
|
+
[](https://elizaos.github.io/)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
|
|
8
|
+
> ๐ **[API docs](https://madeonsol.com/api-docs)** ยท ๐ฐ **[Free API key](https://madeonsol.com/pricing)** ยท ๐ค **[ElizaOS](https://github.com/elizaOS/eliza)**
|
|
9
|
+
|
|
3
10
|
ElizaOS plugin for [MadeOnSol](https://madeonsol.com) โ Solana KOL trading intelligence, deployer analytics, and wallet tracking.
|
|
4
11
|
|
|
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/
|
|
12
|
+
> 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
13
|
|
|
7
14
|
> **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
15
|
|
|
@@ -14,7 +21,7 @@ npm install @madeonsol/plugin-madeonsol
|
|
|
14
21
|
|
|
15
22
|
```ts
|
|
16
23
|
import { madeOnSolPlugin } from "@madeonsol/plugin-madeonsol";
|
|
17
|
-
const agent = { plugins: [madeOnSolPlugin], settings: { MADEONSOL_API_KEY: "msk_..." } }; // free
|
|
24
|
+
const agent = { plugins: [madeOnSolPlugin], settings: { MADEONSOL_API_KEY: "msk_..." } }; // free tier at https://madeonsol.com/pricing
|
|
18
25
|
// Then ask the agent: "What are KOLs buying right now?"
|
|
19
26
|
```
|
|
20
27
|
|
|
@@ -24,7 +31,7 @@ Three options (in priority order):
|
|
|
24
31
|
|
|
25
32
|
| Method | Setting | Best for |
|
|
26
33
|
|---|---|---|
|
|
27
|
-
| **MadeOnSol API key** (recommended) | `MADEONSOL_API_KEY` | Developers โ [get a free key](https://madeonsol.com/
|
|
34
|
+
| **MadeOnSol API key** (recommended) | `MADEONSOL_API_KEY` | Developers โ [get a free key](https://madeonsol.com/pricing) |
|
|
28
35
|
| x402 micropayments | `SVM_PRIVATE_KEY` | AI agents with Solana wallets |
|
|
29
36
|
|
|
30
37
|
## What it does
|
|
@@ -58,7 +65,7 @@ import { madeOnSolPlugin } from "@madeonsol/plugin-madeonsol";
|
|
|
58
65
|
const agent = {
|
|
59
66
|
plugins: [madeOnSolPlugin],
|
|
60
67
|
settings: {
|
|
61
|
-
// Option 1: API key โ get one free at madeonsol.com/
|
|
68
|
+
// Option 1: API key โ get one free at madeonsol.com/pricing
|
|
62
69
|
MADEONSOL_API_KEY: "msk_your_api_key_here",
|
|
63
70
|
|
|
64
71
|
// Option 2: x402 micropayments (AI agents)
|
|
@@ -134,7 +141,7 @@ Your agent can then respond to queries like:
|
|
|
134
141
|
| Pro | $49/mo | 50 | 10,000 |
|
|
135
142
|
| Ultra | $149/mo | 100 + WS events | 100,000 |
|
|
136
143
|
|
|
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/
|
|
144
|
+
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
145
|
|
|
139
146
|
## Also Available
|
|
140
147
|
|
|
@@ -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/
|
|
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/
|
|
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/
|
|
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/
|
|
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
|
}
|
package/dist/actions/kol-feed.js
CHANGED
|
@@ -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/
|
|
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/
|
|
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/
|
|
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,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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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.
|
|
3
|
+
"version": "1.7.3",
|
|
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",
|
|
@@ -41,10 +43,23 @@
|
|
|
41
43
|
},
|
|
42
44
|
"keywords": [
|
|
43
45
|
"elizaos",
|
|
46
|
+
"eliza",
|
|
44
47
|
"plugin",
|
|
48
|
+
"elizaos-plugin",
|
|
49
|
+
"ai-agent",
|
|
45
50
|
"solana",
|
|
46
51
|
"kol",
|
|
52
|
+
"kol-tracker",
|
|
47
53
|
"x402",
|
|
54
|
+
"memecoin",
|
|
55
|
+
"memecoin-tracker",
|
|
56
|
+
"pumpfun",
|
|
57
|
+
"deployer-hunter",
|
|
58
|
+
"alpha",
|
|
59
|
+
"alpha-bot",
|
|
60
|
+
"smart-money",
|
|
61
|
+
"copy-trading",
|
|
62
|
+
"trading",
|
|
48
63
|
"madeonsol"
|
|
49
64
|
],
|
|
50
65
|
"license": "MIT",
|