solana-agent-kit-plugin-madeonsol 1.7.2 โ 1.8.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 +12 -1
- package/dist/actions/kolAlertsRecent.d.ts +2 -2
- package/dist/actions/kolCoordination.d.ts +2 -2
- package/dist/actions/kolTrendingTokens.d.ts +2 -2
- package/dist/actions/wallet.d.ts +155 -0
- package/dist/actions/wallet.js +140 -0
- package/dist/index.d.ts +289 -754
- package/dist/index.js +364 -89
- package/dist/tools/index.d.ts +18 -0
- package/dist/tools/index.js +27 -0
- package/package.json +14 -1
package/README.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# solana-agent-kit-plugin-madeonsol
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/solana-agent-kit-plugin-madeonsol)
|
|
4
|
+
[](https://www.npmjs.com/package/solana-agent-kit-plugin-madeonsol)
|
|
5
|
+
[](https://github.com/sendaifun/solana-agent-kit)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
|
|
8
|
+
> ๐ **[API docs](https://madeonsol.com/api-docs)** ยท ๐ฐ **[Free API key](https://madeonsol.com/pricing)** ยท ๐ค **[Solana Agent Kit](https://github.com/sendaifun/solana-agent-kit)**
|
|
9
|
+
|
|
3
10
|
[Solana Agent Kit](https://github.com/sendaifun/solana-agent-kit) plugin for [MadeOnSol](https://madeonsol.com) โ Solana KOL intelligence, deployer analytics, and wallet tracking.
|
|
4
11
|
|
|
5
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.
|
|
@@ -81,6 +88,10 @@ const events = await agent.methods.walletTrackerTrades(agent, { limit: 50 });
|
|
|
81
88
|
| `MADEONSOL_WALLET_TRACKER_SUMMARY_ACTION` | "wallet tracker summary", "tracked wallet stats" |
|
|
82
89
|
| `MADEONSOL_ME_ACTION` | "my api account", "api quota", "remaining requests" โ tier + quota introspection (new in 1.7) |
|
|
83
90
|
| `MADEONSOL_TOKENS_LIST_ACTION` | "filter tokens", "tokens by market cap", "scan tokens" โ filtered/sortable token directory, PRO+ (new in 1.7) |
|
|
91
|
+
| `MADEONSOL_WALLET_STATS_ACTION` | **New 1.8** ยท "wallet stats", "wallet info", "check wallet" โ aggregate 90d stats + cross-product flags (KOL/alpha/deployer) for any Solana wallet (PRO+) |
|
|
92
|
+
| `MADEONSOL_WALLET_PNL_ACTION` | **New 1.8** ยท "wallet pnl", "wallet profit", "wallet performance" โ FIFO cost-basis PnL with profit factor, drawdown, daily curve, closed + open positions (PRO+) |
|
|
93
|
+
| `MADEONSOL_WALLET_POSITIONS_ACTION` | **New 1.8** ยท "wallet positions", "wallet bags", "open positions" โ open lots with live unrealized SOL (PRO+) |
|
|
94
|
+
| `MADEONSOL_WALLET_TRADES_ACTION` | **New 1.8** ยท "wallet trades", "wallet history" โ cursor-paginated raw trades with filters (PRO+) |
|
|
84
95
|
|
|
85
96
|
## Additional methods (v1.0+)
|
|
86
97
|
|
|
@@ -204,7 +215,7 @@ Free tier returns the full REST response shape on every endpoint โ real wallet
|
|
|
204
215
|
| TypeScript SDK | [`madeonsol`](https://www.npmjs.com/package/madeonsol) on npm |
|
|
205
216
|
| Rust SDK | [`madeonsol`](https://crates.io/crates/madeonsol) on crates.io |
|
|
206
217
|
| Python (LangChain, CrewAI) | [`madeonsol-x402`](https://pypi.org/project/madeonsol-x402/) on PyPI |
|
|
207
|
-
| MCP Server (Claude, Cursor) | [`mcp-server-madeonsol`](https://www.npmjs.com/package/mcp-server-madeonsol) |
|
|
218
|
+
| MCP Server (Claude, Cursor) | [`mcp-server-madeonsol`](https://www.npmjs.com/package/mcp-server-madeonsol) ยท [Smithery](https://smithery.ai/servers/madeonsol/solana-kol-intelligence) ยท [Glama](https://glama.ai/mcp/servers/LamboPoewert/mcp-server-madeonsol) |
|
|
208
219
|
| ElizaOS | [`@madeonsol/plugin-madeonsol`](https://www.npmjs.com/package/@madeonsol/plugin-madeonsol) |
|
|
209
220
|
|
|
210
221
|
## License
|
|
@@ -20,13 +20,13 @@ export declare const kolAlertsRecentAction: {
|
|
|
20
20
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
21
21
|
}, "strip", z.ZodTypeAny, {
|
|
22
22
|
limit: number;
|
|
23
|
-
window: "
|
|
23
|
+
window: "15m" | "5m" | "1h" | "6h" | "24h";
|
|
24
24
|
types?: ("consensus_cluster" | "fresh_token_kol_buy" | "heating_up")[] | undefined;
|
|
25
25
|
min_severity?: "high" | "medium" | "low" | undefined;
|
|
26
26
|
}, {
|
|
27
27
|
limit?: number | undefined;
|
|
28
28
|
types?: ("consensus_cluster" | "fresh_token_kol_buy" | "heating_up")[] | undefined;
|
|
29
|
-
window?: "
|
|
29
|
+
window?: "15m" | "5m" | "1h" | "6h" | "24h" | undefined;
|
|
30
30
|
min_severity?: "high" | "medium" | "low" | undefined;
|
|
31
31
|
}>;
|
|
32
32
|
handler: (agent: unknown, input: {
|
|
@@ -18,11 +18,11 @@ export declare const kolCoordinationAction: {
|
|
|
18
18
|
min_kols: z.ZodDefault<z.ZodNumber>;
|
|
19
19
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
20
20
|
}, "strip", z.ZodTypeAny, {
|
|
21
|
-
period: "
|
|
21
|
+
period: "1h" | "6h" | "24h" | "7d";
|
|
22
22
|
min_kols: number;
|
|
23
23
|
limit: number;
|
|
24
24
|
}, {
|
|
25
|
-
period?: "
|
|
25
|
+
period?: "1h" | "6h" | "24h" | "7d" | undefined;
|
|
26
26
|
min_kols?: number | undefined;
|
|
27
27
|
limit?: number | undefined;
|
|
28
28
|
}>;
|
|
@@ -18,11 +18,11 @@ export declare const kolTrendingTokensAction: {
|
|
|
18
18
|
min_kols: z.ZodDefault<z.ZodNumber>;
|
|
19
19
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
20
20
|
}, "strip", z.ZodTypeAny, {
|
|
21
|
-
period: "
|
|
21
|
+
period: "15m" | "5m" | "1h" | "30m" | "2h" | "4h" | "12h";
|
|
22
22
|
min_kols: number;
|
|
23
23
|
limit: number;
|
|
24
24
|
}, {
|
|
25
|
-
period?: "
|
|
25
|
+
period?: "15m" | "5m" | "1h" | "30m" | "2h" | "4h" | "12h" | undefined;
|
|
26
26
|
min_kols?: number | undefined;
|
|
27
27
|
limit?: number | undefined;
|
|
28
28
|
}>;
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const walletStatsAction: {
|
|
3
|
+
name: string;
|
|
4
|
+
similes: string[];
|
|
5
|
+
description: string;
|
|
6
|
+
examples: {
|
|
7
|
+
input: {
|
|
8
|
+
address: string;
|
|
9
|
+
};
|
|
10
|
+
output: {
|
|
11
|
+
status: string;
|
|
12
|
+
};
|
|
13
|
+
explanation: string;
|
|
14
|
+
}[][];
|
|
15
|
+
schema: z.ZodObject<{
|
|
16
|
+
address: z.ZodString;
|
|
17
|
+
}, "strip", z.ZodTypeAny, {
|
|
18
|
+
address: string;
|
|
19
|
+
}, {
|
|
20
|
+
address: string;
|
|
21
|
+
}>;
|
|
22
|
+
handler: (agent: unknown, input: {
|
|
23
|
+
address: string;
|
|
24
|
+
}) => Promise<{
|
|
25
|
+
status: string;
|
|
26
|
+
result: any;
|
|
27
|
+
message?: undefined;
|
|
28
|
+
} | {
|
|
29
|
+
status: string;
|
|
30
|
+
message: string;
|
|
31
|
+
result?: undefined;
|
|
32
|
+
}>;
|
|
33
|
+
};
|
|
34
|
+
export declare const walletPnlAction: {
|
|
35
|
+
name: string;
|
|
36
|
+
similes: string[];
|
|
37
|
+
description: string;
|
|
38
|
+
examples: {
|
|
39
|
+
input: {
|
|
40
|
+
address: string;
|
|
41
|
+
};
|
|
42
|
+
output: {
|
|
43
|
+
status: string;
|
|
44
|
+
};
|
|
45
|
+
explanation: string;
|
|
46
|
+
}[][];
|
|
47
|
+
schema: z.ZodObject<{
|
|
48
|
+
address: z.ZodString;
|
|
49
|
+
}, "strip", z.ZodTypeAny, {
|
|
50
|
+
address: string;
|
|
51
|
+
}, {
|
|
52
|
+
address: string;
|
|
53
|
+
}>;
|
|
54
|
+
handler: (agent: unknown, input: {
|
|
55
|
+
address: string;
|
|
56
|
+
}) => Promise<{
|
|
57
|
+
status: string;
|
|
58
|
+
result: any;
|
|
59
|
+
message?: undefined;
|
|
60
|
+
} | {
|
|
61
|
+
status: string;
|
|
62
|
+
message: string;
|
|
63
|
+
result?: undefined;
|
|
64
|
+
}>;
|
|
65
|
+
};
|
|
66
|
+
export declare const walletPositionsAction: {
|
|
67
|
+
name: string;
|
|
68
|
+
similes: string[];
|
|
69
|
+
description: string;
|
|
70
|
+
examples: {
|
|
71
|
+
input: {
|
|
72
|
+
address: string;
|
|
73
|
+
};
|
|
74
|
+
output: {
|
|
75
|
+
status: string;
|
|
76
|
+
};
|
|
77
|
+
explanation: string;
|
|
78
|
+
}[][];
|
|
79
|
+
schema: z.ZodObject<{
|
|
80
|
+
address: z.ZodString;
|
|
81
|
+
}, "strip", z.ZodTypeAny, {
|
|
82
|
+
address: string;
|
|
83
|
+
}, {
|
|
84
|
+
address: string;
|
|
85
|
+
}>;
|
|
86
|
+
handler: (agent: unknown, input: {
|
|
87
|
+
address: string;
|
|
88
|
+
}) => Promise<{
|
|
89
|
+
status: string;
|
|
90
|
+
result: any;
|
|
91
|
+
message?: undefined;
|
|
92
|
+
} | {
|
|
93
|
+
status: string;
|
|
94
|
+
message: string;
|
|
95
|
+
result?: undefined;
|
|
96
|
+
}>;
|
|
97
|
+
};
|
|
98
|
+
export declare const walletTradesAction: {
|
|
99
|
+
name: string;
|
|
100
|
+
similes: string[];
|
|
101
|
+
description: string;
|
|
102
|
+
examples: {
|
|
103
|
+
input: {
|
|
104
|
+
address: string;
|
|
105
|
+
limit: number;
|
|
106
|
+
action: string;
|
|
107
|
+
};
|
|
108
|
+
output: {
|
|
109
|
+
status: string;
|
|
110
|
+
};
|
|
111
|
+
explanation: string;
|
|
112
|
+
}[][];
|
|
113
|
+
schema: z.ZodObject<{
|
|
114
|
+
address: z.ZodString;
|
|
115
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
116
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
117
|
+
action: z.ZodOptional<z.ZodEnum<["buy", "sell"]>>;
|
|
118
|
+
token_mint: z.ZodOptional<z.ZodString>;
|
|
119
|
+
since: z.ZodOptional<z.ZodNumber>;
|
|
120
|
+
until: z.ZodOptional<z.ZodNumber>;
|
|
121
|
+
}, "strip", z.ZodTypeAny, {
|
|
122
|
+
address: string;
|
|
123
|
+
limit?: number | undefined;
|
|
124
|
+
action?: "buy" | "sell" | undefined;
|
|
125
|
+
cursor?: string | undefined;
|
|
126
|
+
token_mint?: string | undefined;
|
|
127
|
+
since?: number | undefined;
|
|
128
|
+
until?: number | undefined;
|
|
129
|
+
}, {
|
|
130
|
+
address: string;
|
|
131
|
+
limit?: number | undefined;
|
|
132
|
+
action?: "buy" | "sell" | undefined;
|
|
133
|
+
cursor?: string | undefined;
|
|
134
|
+
token_mint?: string | undefined;
|
|
135
|
+
since?: number | undefined;
|
|
136
|
+
until?: number | undefined;
|
|
137
|
+
}>;
|
|
138
|
+
handler: (agent: unknown, input: {
|
|
139
|
+
address: string;
|
|
140
|
+
limit?: number;
|
|
141
|
+
cursor?: string;
|
|
142
|
+
action?: "buy" | "sell";
|
|
143
|
+
token_mint?: string;
|
|
144
|
+
since?: number;
|
|
145
|
+
until?: number;
|
|
146
|
+
}) => Promise<{
|
|
147
|
+
status: string;
|
|
148
|
+
result: any;
|
|
149
|
+
message?: undefined;
|
|
150
|
+
} | {
|
|
151
|
+
status: string;
|
|
152
|
+
message: string;
|
|
153
|
+
result?: undefined;
|
|
154
|
+
}>;
|
|
155
|
+
};
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { walletStats, walletPnl, walletPositions, walletTrades } from "../tools/index.js";
|
|
3
|
+
export const walletStatsAction = {
|
|
4
|
+
name: "MADEONSOL_WALLET_STATS_ACTION",
|
|
5
|
+
similes: [
|
|
6
|
+
"wallet stats",
|
|
7
|
+
"wallet info",
|
|
8
|
+
"wallet profile",
|
|
9
|
+
"check wallet",
|
|
10
|
+
"wallet cross-product flags",
|
|
11
|
+
"is wallet a kol or deployer",
|
|
12
|
+
],
|
|
13
|
+
description: "Get aggregate stats for any Solana wallet over the last 90 days (trade count, buys/sells split, SOL in/out, unique tokens) plus cross-product flags from kol_wallets, mv_alpha_wallets (incl. bot_confidence), and deployers. Works on any wallet โ not just curated KOLs. PRO+.",
|
|
14
|
+
examples: [
|
|
15
|
+
[
|
|
16
|
+
{
|
|
17
|
+
input: { address: "ASVzakePP6GNg9r95d4LPZHJDMXun6L6E4um4pu5ybJk" },
|
|
18
|
+
output: { status: "success" },
|
|
19
|
+
explanation: "Get stats + flags for a wallet",
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
],
|
|
23
|
+
schema: z.object({
|
|
24
|
+
address: z.string().describe("Solana wallet address (base58, 32-44 chars)"),
|
|
25
|
+
}),
|
|
26
|
+
handler: async (agent, input) => {
|
|
27
|
+
try {
|
|
28
|
+
const data = await walletStats(agent, input);
|
|
29
|
+
return { status: "success", result: data };
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
return { status: "error", message: err.message };
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
export const walletPnlAction = {
|
|
37
|
+
name: "MADEONSOL_WALLET_PNL_ACTION",
|
|
38
|
+
similes: [
|
|
39
|
+
"wallet pnl",
|
|
40
|
+
"wallet profit and loss",
|
|
41
|
+
"is wallet profitable",
|
|
42
|
+
"wallet performance",
|
|
43
|
+
"wallet win rate",
|
|
44
|
+
"wallet equity curve",
|
|
45
|
+
"wallet best trades",
|
|
46
|
+
],
|
|
47
|
+
description: "Get full FIFO cost-basis PnL for any Solana wallet: realized + unrealized SOL, profit factor, max drawdown, avg + median hold minutes, daily UTC PnL curve, closed positions sorted by pnl desc (with ROI %, hold time, win/loss/breakeven), and open positions hydrated with current prices from the market-cap tracker. Cached in wallet_analyses with dynamic TTL (5min/1h/24h based on activity). Cache hits don't count against your daily quota. Cost basis only observable in the 90-day data window โ overflow sells are silently discarded rather than fabricated. PRO+.",
|
|
48
|
+
examples: [
|
|
49
|
+
[
|
|
50
|
+
{
|
|
51
|
+
input: { address: "ASVzakePP6GNg9r95d4LPZHJDMXun6L6E4um4pu5ybJk" },
|
|
52
|
+
output: { status: "success" },
|
|
53
|
+
explanation: "Full PnL breakdown for the wallet",
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
],
|
|
57
|
+
schema: z.object({
|
|
58
|
+
address: z.string().describe("Solana wallet address"),
|
|
59
|
+
}),
|
|
60
|
+
handler: async (agent, input) => {
|
|
61
|
+
try {
|
|
62
|
+
const data = await walletPnl(agent, input);
|
|
63
|
+
return { status: "success", result: data };
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
return { status: "error", message: err.message };
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
export const walletPositionsAction = {
|
|
71
|
+
name: "MADEONSOL_WALLET_POSITIONS_ACTION",
|
|
72
|
+
similes: [
|
|
73
|
+
"wallet positions",
|
|
74
|
+
"wallet holdings",
|
|
75
|
+
"wallet open bags",
|
|
76
|
+
"what does wallet hold",
|
|
77
|
+
"wallet active positions",
|
|
78
|
+
"wallet unrealized pnl",
|
|
79
|
+
],
|
|
80
|
+
description: "Open positions only for any Solana wallet โ lighter slice of MADEONSOL_WALLET_PNL_ACTION for use cases that don't need the full PnL summary or curve. Each position carries token_mint, token_amount, cost_basis_sol, avg_entry_price_sol, current_price_sol (live from mc-tracker; null if delisted), current_value_sol, unrealized_sol, unrealized_pct, first_buy_at. Shares the /pnl cache. PRO+.",
|
|
81
|
+
examples: [
|
|
82
|
+
[
|
|
83
|
+
{
|
|
84
|
+
input: { address: "ASVzakePP6GNg9r95d4LPZHJDMXun6L6E4um4pu5ybJk" },
|
|
85
|
+
output: { status: "success" },
|
|
86
|
+
explanation: "List the wallet's open positions",
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
],
|
|
90
|
+
schema: z.object({
|
|
91
|
+
address: z.string().describe("Solana wallet address"),
|
|
92
|
+
}),
|
|
93
|
+
handler: async (agent, input) => {
|
|
94
|
+
try {
|
|
95
|
+
const data = await walletPositions(agent, input);
|
|
96
|
+
return { status: "success", result: data };
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
return { status: "error", message: err.message };
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
export const walletTradesAction = {
|
|
104
|
+
name: "MADEONSOL_WALLET_TRADES_ACTION",
|
|
105
|
+
similes: [
|
|
106
|
+
"wallet trades",
|
|
107
|
+
"wallet trade history",
|
|
108
|
+
"wallet activity",
|
|
109
|
+
"recent trades of wallet",
|
|
110
|
+
"paginated wallet trades",
|
|
111
|
+
],
|
|
112
|
+
description: "Cursor-paginated raw trades for any Solana wallet. Filter by action (buy/sell), token_mint, and time window (since/until Unix seconds; default last 90 days). Cursor encodes (block_time, id) for stable DESC pagination โ pass next_cursor from the previous response to fetch older trades. Limit 1-500 (default 100). PRO+.",
|
|
113
|
+
examples: [
|
|
114
|
+
[
|
|
115
|
+
{
|
|
116
|
+
input: { address: "ASVzakePP6GNg9r95d4LPZHJDMXun6L6E4um4pu5ybJk", limit: 50, action: "buy" },
|
|
117
|
+
output: { status: "success" },
|
|
118
|
+
explanation: "Get 50 recent buys for the wallet",
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
],
|
|
122
|
+
schema: z.object({
|
|
123
|
+
address: z.string().describe("Solana wallet address"),
|
|
124
|
+
limit: z.number().min(1).max(500).optional().describe("Trades per page (1-500, default 100)"),
|
|
125
|
+
cursor: z.string().optional().describe("Cursor from previous response's next_cursor field"),
|
|
126
|
+
action: z.enum(["buy", "sell"]).optional().describe("Filter to buys or sells only"),
|
|
127
|
+
token_mint: z.string().optional().describe("Filter to a single token mint"),
|
|
128
|
+
since: z.number().optional().describe("Unix epoch seconds โ default now-90d"),
|
|
129
|
+
until: z.number().optional().describe("Unix epoch seconds โ default now"),
|
|
130
|
+
}),
|
|
131
|
+
handler: async (agent, input) => {
|
|
132
|
+
try {
|
|
133
|
+
const data = await walletTrades(agent, input);
|
|
134
|
+
return { status: "success", result: data };
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
return { status: "error", message: err.message };
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
};
|