madeonsol_token_cap_table
Retrieve cap table for a Solana token, showing non-deployer early buyers with profit/loss, KOL identity, and bot flags. Use token mint address.
Instructions
First non-deployer early buyers for a token, enriched with PnL, KOL identity, and bot flags. PRO=top 10 (truncated wallets), ULTRA=top 20 (full). BASIC: 403.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mint | Yes | Token mint address (base58) |
Implementation Reference
- src/index.ts:624-632 (handler)Tool handler: makes an HTTP GET request to the MadeOnSol API endpoint /api/v1/tokens/{mint}/cap-table using the restQuery helper, returning first non-deployer early buyers for a token, enriched with PnL, KOL identity, and bot flags.
server.tool( "madeonsol_token_cap_table", "First non-deployer early buyers for a token, enriched with PnL, KOL identity, and bot flags. PRO=top 10 (truncated wallets), ULTRA=top 20 (full). BASIC: 403.", { mint: z.string().describe("Token mint address (base58)") }, { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }, async ({ mint }) => ({ content: [{ type: "text" as const, text: await restQuery("GET", `/tokens/${encodeURIComponent(mint)}/cap-table`) }], }) ); - src/index.ts:627-628 (schema)Input schema: accepts a single required parameter 'mint' (base58 token mint address) validated with Zod.
{ mint: z.string().describe("Token mint address (base58)") }, { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }, - src/index.ts:624-632 (registration)Tool registration via server.tool() with the name 'madeonsol_token_cap_table', description, schema, annotations, and handler. Registered conditionally when authMode is 'madeonsol' (i.e., MADEONSOL_API_KEY is set).
server.tool( "madeonsol_token_cap_table", "First non-deployer early buyers for a token, enriched with PnL, KOL identity, and bot flags. PRO=top 10 (truncated wallets), ULTRA=top 20 (full). BASIC: 403.", { mint: z.string().describe("Token mint address (base58)") }, { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }, async ({ mint }) => ({ content: [{ type: "text" as const, text: await restQuery("GET", `/tokens/${encodeURIComponent(mint)}/cap-table`) }], }) ); - src/index.ts:451-466 (helper)Helper function restQuery used by the handler to make authenticated HTTP requests to the MadeOnSol API. Prepends /api/v1 to the path and handles errors.
async function restQuery(method: string, path: string, body?: unknown): Promise<string> { const headers: Record<string, string> = { "Content-Type": "application/json", ...apiKeyHeaders(), }; const res = await fetch(`${BASE_URL}/api/v1${path}`, { method, headers, ...(body ? { body: JSON.stringify(body) } : {}), }); if (!res.ok) { const text = await res.text().catch(() => ""); return `Error ${res.status}: ${text}`; } return JSON.stringify(await res.json(), null, 2); }