madeonsol_kol_pnl
Get per-wallet PnL breakdown for Solana KOLs: realized PnL, win rate, profit factor, max drawdown, daily equity curve, and closed/open positions. Input a wallet address and time period to evaluate trading performance.
Instructions
Deep per-wallet PnL breakdown — realized PnL, win rate, profit factor, max drawdown, daily equity curve, closed/open positions. BASIC: summary only. PRO: + curve + closed. ULTRA: + open positions.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | KOL wallet address (base58) | |
| period | No | Time period for PnL calculation | 30d |
Implementation Reference
- src/index.ts:298-315 (handler)Handler: The tool handler for madeonsol_kol_pnl. It accepts a wallet (base58) and period (7d/30d/90d/180d). If authMode is 'madeonsol' (API key), it fetches from GET /api/v1/kol/{wallet}/pnl?period={period}; otherwise returns an error message saying a MadeOnSol API key is required.
server.tool( "madeonsol_kol_pnl", "Deep per-wallet PnL breakdown — realized PnL, win rate, profit factor, max drawdown, daily equity curve, closed/open positions. BASIC: summary only. PRO: + curve + closed. ULTRA: + open positions.", { wallet: z.string().describe("KOL wallet address (base58)"), period: z.enum(["7d", "30d", "90d", "180d"]).default("30d").describe("Time period for PnL calculation"), }, readOnlyAnnotations, async ({ wallet, period }) => { if (authMode === "madeonsol") { const headers: Record<string, string> = { ...apiKeyHeaders() }; const res = await fetch(`${BASE_URL}/api/v1/kol/${wallet}/pnl?period=${period}`, { headers }); if (!res.ok) { const body = await res.text().catch(() => ""); return { content: [{ type: "text" as const, text: `Error ${res.status}: ${body}` }] }; } return { content: [{ type: "text" as const, text: JSON.stringify(await res.json(), null, 2) }] }; } return { content: [{ type: "text" as const, text: "KOL PnL requires MADEONSOL_API_KEY (msk_) — get one free at madeonsol.com/pricing." }] }; } ); - src/index.ts:299-305 (schema)Schema: Input validation for madeonsol_kol_pnl using Zod. Accepts 'wallet' (base58 string, required) and 'period' (enum of 7d/30d/90d/180d, default '30d').
"madeonsol_kol_pnl", "Deep per-wallet PnL breakdown — realized PnL, win rate, profit factor, max drawdown, daily equity curve, closed/open positions. BASIC: summary only. PRO: + curve + closed. ULTRA: + open positions.", { wallet: z.string().describe("KOL wallet address (base58)"), period: z.enum(["7d", "30d", "90d", "180d"]).default("30d").describe("Time period for PnL calculation"), }, readOnlyAnnotations, - src/index.ts:298-298 (registration)Registration: The tool named 'madeonsol_kol_pnl' is registered via server.tool() call within the registerTools function in src/index.ts. No separate registration file exists; all tools are registered inline.
server.tool(