Whale Changes
whale_changesRetrieve recent changes to whale wallet data from a specified timestamp. Analyze on-chain movements of large cryptocurrency holders.
Instructions
Get recent changes to whale wallet data since a given timestamp. Cost: $0.01 per query. Source: On-chain analytics.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| since | Yes | ISO 8601 timestamp to get changes since (e.g. 2026-03-01T00:00:00Z) | |
| limit | No | Maximum results (default 50) |
Implementation Reference
- src/tools/whales.ts:232-258 (handler)Handler function for the whale_changes tool. Accepts `since` (ISO 8601 timestamp) and optional `limit` (1-100, default 50). Calls GET /api/v1/whales/changes and returns formatted results with count and data.
async ({ since, limit }) => { const res = await apiGet<WhaleQueryResponse>("/api/v1/whales/changes", { since, limit: limit ?? 50, }); if (!res.ok) { return { content: [ { type: "text" as const, text: `API error (${res.status}): ${JSON.stringify(res.data)}`, }, ], isError: true, }; } const { count, data } = res.data; const warn = stalenessWarning(res); const summary = `${warn}Found ${count} whale change(s) since ${since}.`; const json = JSON.stringify(data, null, 2); return { content: [{ type: "text" as const, text: `${summary}\n\n${json}` }], }; }, - src/tools/whales.ts:219-230 (schema)Input schema for whale_changes using Zod: `since` (required string, ISO 8601) and `limit` (optional integer, 1-100, default 50).
inputSchema: { since: z .string() .describe("ISO 8601 timestamp to get changes since (e.g. 2026-03-01T00:00:00Z)"), limit: z .number() .int() .min(1) .max(100) .optional() .describe("Maximum results (default 50)"), }, - src/tools/whales.ts:212-259 (registration)Registration of the whale_changes tool via server.registerTool() with name 'whale_changes', title 'Whale Changes', description, input schema, and handler.
server.registerTool( "whale_changes", { title: "Whale Changes", description: "Get recent changes to whale wallet data since a given timestamp. " + "Cost: $0.01 per query. Source: On-chain analytics.", inputSchema: { since: z .string() .describe("ISO 8601 timestamp to get changes since (e.g. 2026-03-01T00:00:00Z)"), limit: z .number() .int() .min(1) .max(100) .optional() .describe("Maximum results (default 50)"), }, }, async ({ since, limit }) => { const res = await apiGet<WhaleQueryResponse>("/api/v1/whales/changes", { since, limit: limit ?? 50, }); if (!res.ok) { return { content: [ { type: "text" as const, text: `API error (${res.status}): ${JSON.stringify(res.data)}`, }, ], isError: true, }; } const { count, data } = res.data; const warn = stalenessWarning(res); const summary = `${warn}Found ${count} whale change(s) since ${since}.`; const json = JSON.stringify(data, null, 2); return { content: [{ type: "text" as const, text: `${summary}\n\n${json}` }], }; }, ); - src/index.ts:49-49 (registration)The registerWhaleTools function (containing whale_changes) is called during server setup in src/index.ts.
registerWhaleTools(server);