Skip to main content
Glama

getDexPools

Retrieve trading pools from a specific decentralized exchange (DEX) on a blockchain network to analyze liquidity, trading volumes, and pool metrics for cryptocurrency analysis.

Instructions

Get pools from a specific DEX on a network. First use getNetworks, then getNetworkDexes to find valid DEX IDs.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dexYesDEX identifier from getNetworkDexes (e.g., "uniswap_v3")
limitNoNumber of items per page (max 100)
networkYesNetwork ID from getNetworks (e.g., "ethereum", "solana")
orderByNoField to order byvolume_usd
pageNoPage number for pagination
sortNoSort orderdesc

Implementation Reference

  • The handler function that performs the core logic of the getDexPools tool: constructs the API endpoint for a specific network and DEX, fetches data using fetchFromAPI, and returns formatted response.
    async ({ network, dex, page, limit, sort, orderBy }) => { const data = await fetchFromAPI(`/networks/${network}/dexes/${dex}/pools?page=${page}&limit=${limit}&sort=${sort}&order_by=${orderBy}`); return formatMcpResponse(data); }
  • Input schema using Zod for validating parameters: network, dex, pagination options (page, limit), sorting (sort, orderBy).
    { network: z.string().describe('Network ID from getNetworks (e.g., "ethereum", "solana")'), dex: z.string().describe('DEX identifier from getNetworkDexes (e.g., "uniswap_v3")'), page: z.number().optional().default(0).describe('Page number for pagination'), limit: z.number().optional().default(10).describe('Number of items per page (max 100)'), sort: z.enum(['asc', 'desc']).optional().default('desc').describe('Sort order'), orderBy: z.enum(['volume_usd', 'price_usd', 'transactions', 'last_price_change_usd_24h', 'created_at']).optional().default('volume_usd').describe('Field to order by') },
  • src/index.js:114-130 (registration)
    Complete registration of the getDexPools tool via server.tool(), including tool name, description, input schema, and inline handler function.
    // getDexPools server.tool( 'getDexPools', 'Get pools from a specific DEX on a network. First use getNetworks, then getNetworkDexes to find valid DEX IDs.', { network: z.string().describe('Network ID from getNetworks (e.g., "ethereum", "solana")'), dex: z.string().describe('DEX identifier from getNetworkDexes (e.g., "uniswap_v3")'), page: z.number().optional().default(0).describe('Page number for pagination'), limit: z.number().optional().default(10).describe('Number of items per page (max 100)'), sort: z.enum(['asc', 'desc']).optional().default('desc').describe('Sort order'), orderBy: z.enum(['volume_usd', 'price_usd', 'transactions', 'last_price_change_usd_24h', 'created_at']).optional().default('volume_usd').describe('Field to order by') }, async ({ network, dex, page, limit, sort, orderBy }) => { const data = await fetchFromAPI(`/networks/${network}/dexes/${dex}/pools?page=${page}&limit=${limit}&sort=${sort}&order_by=${orderBy}`); return formatMcpResponse(data); } );
  • Shared helper function used by getDexPools (and other tools) to make API requests to DexPaprika, with custom error handling for deprecated endpoints and rate limits.
    async function fetchFromAPI(endpoint) { try { const response = await fetch(`${API_BASE_URL}${endpoint}`); if (!response.ok) { if (response.status === 410) { throw new Error( 'This endpoint has been permanently removed. Please use network-specific endpoints instead. ' + 'For example, use /networks/{network}/pools instead of /pools. ' + 'Get available networks first using the getNetworks function.' ); } if (response.status === 429) { throw new Error( 'Rate limit exceeded. You have reached the maximum number of requests allowed for the free tier. ' + 'To increase your rate limits and access additional features, please consider upgrading to a paid plan at https://docs.dexpaprika.com/' ); } throw new Error(`API request failed with status ${response.status}`); } return await response.json(); } catch (error) { console.error(`Error fetching from API: ${error.message}`); throw error; } }
  • Shared helper function used by getDexPools (and other tools) to format API responses into MCP-compatible structure.
    function formatMcpResponse(data) { return { content: [ { type: "text", text: JSON.stringify(data) } ] }; }

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/infinity-smithpl/dexpaprika-mcp'

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