getTokenDetails
Retrieve detailed token information, including address and network ID, for analysis and tracking across multiple blockchains using DexPaprika MCP server.
Instructions
Get detailed information about a specific token on a network. First use getNetworks to get valid network IDs.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| network | Yes | Network ID from getNetworks (e.g., "ethereum", "solana") | |
| tokenAddress | Yes | Token address or identifier |
Implementation Reference
- src/index.js:161-164 (handler)Handler function that fetches token details from the DexPaprika API endpoint `/networks/{network}/tokens/{tokenAddress}` and formats the MCP response.async ({ network, tokenAddress }) => { const data = await fetchFromAPI(`/networks/${network}/tokens/${tokenAddress}`); return formatMcpResponse(data); }
- src/index.js:157-160 (schema)Zod input schema defining required parameters: network (string) and tokenAddress (string).{ network: z.string().describe('Network ID from getNetworks (e.g., "ethereum", "solana")'), tokenAddress: z.string().describe('Token address or identifier') },
- src/index.js:154-165 (registration)MCP server.tool registration for 'getTokenDetails', including name, description, input schema, and handler function.server.tool( 'getTokenDetails', 'Get detailed information about a specific token on a network. First use getNetworks to get valid network IDs.', { network: z.string().describe('Network ID from getNetworks (e.g., "ethereum", "solana")'), tokenAddress: z.string().describe('Token address or identifier') }, async ({ network, tokenAddress }) => { const data = await fetchFromAPI(`/networks/${network}/tokens/${tokenAddress}`); return formatMcpResponse(data); } );
- src/index.js:37-46 (helper)Helper function to format API response data into MCP-compatible content structure.function formatMcpResponse(data) { return { content: [ { type: "text", text: JSON.stringify(data) } ] }; }
- src/index.js:10-34 (helper)Helper function to make API requests to DexPaprika, including error handling for rate limits and deprecated endpoints.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; } }