dexSpotPairsLatest
Retrieve a paginated list of active decentralized exchange (DEX) spot pairs with updated market data, filtered by network, assets, liquidity, and trading volume, for detailed analysis.
Instructions
Returns a paginated list of all active dex spot pairs with latest market data.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| aux | No | ||
| base_asset_contract_address | No | ||
| base_asset_id | No | ||
| base_asset_symbol | No | ||
| base_asset_ucid | No | ||
| convert_id | No | ||
| dex_id | No | ||
| dex_slug | No | ||
| limit | No | ||
| liquidity_max | No | ||
| liquidity_min | No | ||
| network_id | No | ||
| network_slug | No | ||
| no_of_transactions_24h_max | No | ||
| no_of_transactions_24h_min | No | ||
| percent_change_24h_max | No | ||
| percent_change_24h_min | No | ||
| quote_asset_contract_address | No | ||
| quote_asset_id | No | ||
| quote_asset_symbol | No | ||
| quote_asset_ucid | No | ||
| reverse_order | No | ||
| scroll_id | No | ||
| sort | No | ||
| sort_dir | No | ||
| volume_24h_max | No | ||
| volume_24h_min | No |
Implementation Reference
- index.js:345-350 (handler)Handler function that executes the tool logic: calls handleEndpoint which makes an API request to the CoinMarketCap /v4/dex/spot-pairs/latest endpoint with the provided params and formats the response.async (params) => { return handleEndpoint(async () => { const data = await makeApiRequest(apiKey, '/v4/dex/spot-pairs/latest', params) return formatResponse(data) }) }
- index.js:316-344 (schema)Zod schema defining all optional input parameters for filtering and sorting DEX spot pairs data.{ network_id: z.string().optional(), network_slug: z.string().optional(), dex_id: z.string().optional(), dex_slug: z.string().optional(), base_asset_id: z.string().optional(), base_asset_symbol: z.string().optional(), base_asset_contract_address: z.string().optional(), base_asset_ucid: z.string().optional(), quote_asset_id: z.string().optional(), quote_asset_symbol: z.string().optional(), quote_asset_contract_address: z.string().optional(), quote_asset_ucid: z.string().optional(), scroll_id: z.string().optional(), limit: z.string().optional(), liquidity_min: z.string().optional(), liquidity_max: z.string().optional(), volume_24h_min: z.string().optional(), volume_24h_max: z.string().optional(), no_of_transactions_24h_min: z.string().optional(), no_of_transactions_24h_max: z.string().optional(), percent_change_24h_min: z.string().optional(), percent_change_24h_max: z.string().optional(), sort: z.enum(['name', 'date_added', 'price', 'volume_24h', 'percent_change_1h', 'percent_change_24h', 'liquidity', 'fully_diluted_value', 'no_of_transactions_24h']).optional(), sort_dir: z.enum(['desc', 'asc']).optional(), aux: z.string().optional(), reverse_order: z.string().optional(), convert_id: z.string().optional() },
- index.js:314-351 (registration)MCP server.tool call registering the 'dexSpotPairsLatest' tool with its description, input schema, and handler function.server.tool("dexSpotPairsLatest", "Returns a paginated list of all active dex spot pairs with latest market data.", { network_id: z.string().optional(), network_slug: z.string().optional(), dex_id: z.string().optional(), dex_slug: z.string().optional(), base_asset_id: z.string().optional(), base_asset_symbol: z.string().optional(), base_asset_contract_address: z.string().optional(), base_asset_ucid: z.string().optional(), quote_asset_id: z.string().optional(), quote_asset_symbol: z.string().optional(), quote_asset_contract_address: z.string().optional(), quote_asset_ucid: z.string().optional(), scroll_id: z.string().optional(), limit: z.string().optional(), liquidity_min: z.string().optional(), liquidity_max: z.string().optional(), volume_24h_min: z.string().optional(), volume_24h_max: z.string().optional(), no_of_transactions_24h_min: z.string().optional(), no_of_transactions_24h_max: z.string().optional(), percent_change_24h_min: z.string().optional(), percent_change_24h_max: z.string().optional(), sort: z.enum(['name', 'date_added', 'price', 'volume_24h', 'percent_change_1h', 'percent_change_24h', 'liquidity', 'fully_diluted_value', 'no_of_transactions_24h']).optional(), sort_dir: z.enum(['desc', 'asc']).optional(), aux: z.string().optional(), reverse_order: z.string().optional(), convert_id: z.string().optional() }, async (params) => { return handleEndpoint(async () => { const data = await makeApiRequest(apiKey, '/v4/dex/spot-pairs/latest', params) return formatResponse(data) }) } )
- index.js:50-73 (helper)Primary helper function that constructs and performs the HTTP GET request to the CoinMarketCap API endpoint using the provided API key and parameters.async function makeApiRequest(apiKey, endpoint, params = {}) { const queryParams = new URLSearchParams() Object.entries(params).forEach(([key, value]) => { if (value !== undefined) { queryParams.append(key, value.toString()) } }) const url = `https://pro-api.coinmarketcap.com${endpoint}${queryParams.toString() ? `?${queryParams.toString()}` : ''}` const response = await fetch(url, { method: 'GET', headers: { 'Accept': 'application/json', 'X-CMC_PRO_API_KEY': apiKey, } }) if (!response.ok) { throw new Error(`Error fetching data from CoinMarketCap: ${response.statusText}`) } return await response.json() }
- index.js:83-88 (helper)Wrapper helper that handles errors in API calls by catching exceptions and returning formatted error responses.try { return await apiCall() } catch (error) { return formatErrorResponse(error.message, error.status || 403) } }