Skip to main content
Glama

get_pairs

Retrieve trading pairs from CSPR.trade DEX with real-time reserves and pricing data for informed trading decisions.

Instructions

List trading pairs on CSPR.trade with reserves and pricing data

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1)
page_sizeNoItems per page (default 10, max 250)
order_byNo
order_directionNo
currencyNoFiat currency code for pricing

Implementation Reference

  • The handler function that executes the logic for the 'get_pairs' tool by calling the client.getPairs method.
    async (args) => {
      const result = await client.getPairs({
        page: args.page,
        pageSize: args.page_size,
        orderBy: args.order_by,
        orderDirection: args.order_direction,
        currency: args.currency,
      });
      return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };
    },
  • The registration block for the 'get_pairs' tool using the server.tool method.
    server.tool(
      'get_pairs',
      'List trading pairs on CSPR.trade with reserves and pricing data',
      {
        page: z.number().optional().describe('Page number (default 1)'),
        page_size: z.number().optional().describe('Items per page (default 10, max 250)'),
        order_by: z.enum(['timestamp', 'reserve0', 'reserve1']).optional(),
        order_direction: z.enum(['asc', 'desc']).optional(),
        currency: z.string().optional().describe('Fiat currency code for pricing'),
      },
      async (args) => {
        const result = await client.getPairs({
          page: args.page,
          pageSize: args.page_size,
          orderBy: args.order_by,
          orderDirection: args.order_direction,
          currency: args.currency,
        });
        return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };
      },
    );
  • The Zod input schema definition for the 'get_pairs' tool.
    {
      page: z.number().optional().describe('Page number (default 1)'),
      page_size: z.number().optional().describe('Items per page (default 10, max 250)'),
      order_by: z.enum(['timestamp', 'reserve0', 'reserve1']).optional(),
      order_direction: z.enum(['asc', 'desc']).optional(),
      currency: z.string().optional().describe('Fiat currency code for pricing'),
    },
Behavior2/5

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

With no annotations provided, the description carries full disclosure burden. While it mentions 'reserves and pricing data' (output content), it omits critical behavioral traits: pagination is required (page/page_size exist but behavior isn't described), no indication of real-time vs cached data, and no safety hints (read-only assumed but not stated).

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?

Single sentence, efficiently front-loaded with action verb. However, extreme brevity is insufficient for a zero-annotation, 5-parameter tool requiring pagination awareness. One additional sentence on differentiation from get_pair_details or pagination behavior would improve utility without sacrificing clarity.

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

Completeness3/5

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

Names the API domain (CSPR.trade) and data returned, satisfying basic needs. Gaps remain: no pagination explanation despite page params, no output schema hints beyond 'reserves/pricing', and no contrast with singular 'get_pair_details'. Acceptable but minimal for the complexity level.

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 60% (3/5 params described). Description mentions 'pricing data' which provides semantic context for the 'currency' parameter, but offers no guidance on 'order_by' or 'order_direction' enums (reserves vs timestamp sorting logic). Baseline 3 appropriate for medium coverage without full compensation.

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

Purpose4/5

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

Clear verb 'List' and resource 'trading pairs on CSPR.trade'. Effectively distinguishes from transaction-building siblings (build_*, submit_transaction) and other getters like get_tokens. However, fails to explicitly differentiate from sibling 'get_pair_details' (singular vs plural), which could cause selection ambiguity.

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 bulk list view versus 'get_pair_details' for specific pair queries. No mention of pagination workflow or when to provide currency parameter. Users must infer usage from parameter schema alone.

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/make-software/cspr-trade-mcp'

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