Skip to main content
Glama

get_lighter_trades

Read-onlyIdempotent

Retrieve trade history for a specific coin on Lighter.xyz. Get price, size, side, and timestamps with cursor-based pagination.

Instructions

Get Lighter.xyz trade history for a coin over a time range. Returns price, size, side, and timestamps. Supports cursor pagination.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
coinYesLighter.xyz coin symbol, e.g. 'BTC', 'ETH'
startNoStart timestamp (Unix ms or ISO). Defaults to 24h ago.
endNoEnd timestamp (Unix ms or ISO). Defaults to now.
limitNoMax records to return (default 100, max 1000)
cursorNoPagination cursor from previous response's nextCursor

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
recordsYesArray of result records
countYesTotal number of records in the full result set
nextCursorNoCursor for next page, if more results available

Implementation Reference

  • src/index.ts:817-825 (registration)
    Registration of the 'get_lighter_trades' tool using the registerHistoryTool helper. It passes the LighterCoinParam schema and normalizeLighterCoin normalizer to set up a history tool that calls api().lighter.trades.list(coin, params).
    // 25. Lighter Trades
    registerHistoryTool(
      "get_lighter_trades",
      "Get Lighter.xyz trade history for a coin over a time range. Returns price, size, side, and timestamps. Supports cursor pagination.",
      (coin, params) =>
        api().lighter.trades.list(coin, params as any),
      LighterCoinParam,
      normalizeLighterCoin
    );
  • LighterCoinParam — the Zod schema for the 'coin' input parameter, describing a Lighter.xyz coin symbol like 'BTC' or 'ETH'.
    const LighterCoinParam = z
      .string()
      .describe("Lighter.xyz coin symbol, e.g. 'BTC', 'ETH'");
  • normalizeLighterCoin — a normalization helper that uppercases the coin symbol before passing it to the SDK.
    function normalizeLighterCoin(coin: string): string {
      return coin.toUpperCase();
    }
  • registerHistoryTool — the generic handler factory used by get_lighter_trades. It resolves time range, limit, and cursor parameters, passes them to the SDK call, and formats the cursor-paginated response.
    // Pattern 4: History with cursor pagination (coin + time range)
    function registerHistoryTool(
      name: string,
      description: string,
      sdkCall: (coin: string, params: Record<string, unknown>) => Promise<{ data: unknown; nextCursor?: string }>,
      coinSchema: z.ZodString,
      normFn: (coin: string) => string,
      extraSchema?: ZodRawShape
    ): void {
      const schema: ZodRawShape = { coin: coinSchema, ...HistoryParams };
      if (extraSchema) Object.assign(schema, extraSchema);
    
      registerTool(name, description, schema, ListOutputSchema, async (params) => {
        const { coin, start, end, limit, cursor, ...extra } = params;
    
        const timeRange = resolveTimeRange(start, end);
        const sdkParams: Record<string, unknown> = {
          ...timeRange,
          limit: resolveLimit(limit),
        };
    
        if (cursor) sdkParams.cursor = cursor;
    
        // Pass through extra params (interval, side, etc.)
        for (const [k, v] of Object.entries(extra)) {
          if (v !== undefined) sdkParams[k] = v;
        }
    
        const result = await sdkCall(normFn(coin), sdkParams);
        return formatCursorResponse(result);
      });
    }
Behavior4/5

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

Annotations already declare readOnlyHint true, so the description adds value by specifying returned fields and pagination support. No contradictions. Could mention rate limits or data freshness but adequate.

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

Conciseness5/5

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

Two concise sentences, front-loaded with purpose, no redundant information. Efficiently conveys the core functionality and key features.

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

Completeness5/5

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

Given the output schema and comprehensive annotations, the description covers essential aspects: what data is returned, pagination support, and time range capability. No missing critical information for an agent to use the tool.

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

Parameters4/5

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

All parameters are documented in the schema, and the description adds context about returned fields and pagination. The mention of 'price, size, side, and timestamps' helps the agent understand output, though output schema exists.

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 it retrieves Lighter.xyz trade history for a coin within a time range, listing specific returned fields. The name includes 'lighter' to distinguish from other trade history tools, making it unambiguous.

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

Usage Guidelines3/5

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

The description mentions cursor pagination and time range but does not explicitly guide when to use this tool over siblings like get_lighter_trades_recent or get_trades. The implied use case is historical trades with custom range, but no direct comparison or exclusion criteria.

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/0xArchiveIO/0xarchive-mcp'

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