Skip to main content
Glama

Whale Changes

whale_changes

Retrieve 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

TableJSON Schema
NameRequiredDescriptionDefault
sinceYesISO 8601 timestamp to get changes since (e.g. 2026-03-01T00:00:00Z)
limitNoMaximum results (default 50)

Implementation Reference

  • 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}` }],
      };
    },
  • 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)"),
    },
  • 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);
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must carry full burden. Only mentions cost and source, but omits whether operation is read-only, any side effects, rate limits, or exact nature of 'changes'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff. Efficient but could include more detail without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema absent; description does not explain return format or field types. Lacks details to distinguish from similar tools fully.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description adds no extra meaning beyond schema; cost mention is per query, not per parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb 'Get', resource 'recent changes to whale wallet data', and scope 'since a given timestamp'. Distinct from sibling 'changes' tools through specific resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives like holder_changes or whale_movements. Mentions cost and source but not context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/carrierone/verilexdata-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server