Skip to main content
Glama

getTokenInfo

Retrieve token details from Ethereum blockchain by providing a contract address and network ID to analyze token information.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
addressYes
networkIdNoNetwork ID (1 for Ethereum, 101 for Solana)

Implementation Reference

  • Registration of the getTokenInfo MCP tool, including input schema (address, networkId) and inline async handler that fetches data from API and formats response.
    server.tool("getTokenInfo", { address: z.string().min(1, "Token address is required"), networkId: z.number().int().positive().default(1).describe("Network ID (1 for Ethereum, 101 for Solana)") }, async ({ address, networkId }) => { try { // Get token info from Codex API const tokenInfo = await fetchTokenInfo(address, networkId); if (!tokenInfo) { return { content: [{ type: "text", text: `No token information found for ${address} on network ${networkId}` }] }; } // Format the token info for display const response = formatTokenInfoResponse(tokenInfo); return { content: [{ type: "text", text: response }] }; } catch (error) { return { content: [{ type: "text", text: `Error fetching token info: ${error.message}` }] }; } } );
  • Zod input schema for getTokenInfo tool parameters.
    { address: z.string().min(1, "Token address is required"), networkId: z.number().int().positive().default(1).describe("Network ID (1 for Ethereum, 101 for Solana)") },
  • Inline handler function for executing getTokenInfo tool logic: fetches token info, handles errors, formats and returns text response.
    async ({ address, networkId }) => { try { // Get token info from Codex API const tokenInfo = await fetchTokenInfo(address, networkId); if (!tokenInfo) { return { content: [{ type: "text", text: `No token information found for ${address} on network ${networkId}` }] }; } // Format the token info for display const response = formatTokenInfoResponse(tokenInfo); return { content: [{ type: "text", text: response }] }; } catch (error) { return { content: [{ type: "text", text: `Error fetching token info: ${error.message}` }] }; } }
  • Core helper function that performs GraphQL query to Codex API for getTokenInfo data.
    async function fetchTokenInfo(address, networkId) { try { // Use API key from environment variable const apiKey = process.env.CODEX_API_KEY; if (!apiKey) { throw new Error("CODEX_API_KEY environment variable is not set"); } const response = await axios({ url: API_URL, method: 'post', headers: { 'Content-Type': 'application/json', 'Authorization': apiKey }, data: { query: `{ getTokenInfo(address: "${address}", networkId: ${networkId}) { name symbol totalSupply address circulatingSupply } }` } }); if (response.data && response.data.data && response.data.data.getTokenInfo) { return response.data.data.getTokenInfo; } return null; } catch (error) { console.error('Error fetching token info:', error.response?.data || error.message); throw new Error(`API error: ${error.response?.data?.errors?.[0]?.message || error.message}`); } }
  • Helper function to format the raw token info into a readable text response.
    function formatTokenInfoResponse(info) { let response = `=== Token Information ===\n`; response += `Name: ${info.name || 'N/A'}\n`; response += `Symbol: ${info.symbol || 'N/A'}\n`; response += `Address: ${info.address || 'N/A'}\n`; response += `Total Supply: ${info.totalSupply || 'N/A'}\n`; response += `Circulating Supply: ${info.circulatingSupply || 'N/A'}\n`; // Calculate additional metrics if possible if (info.totalSupply && info.circulatingSupply) { const totalSupply = parseFloat(info.totalSupply); const circulatingSupply = parseFloat(info.circulatingSupply); if (!isNaN(totalSupply) && !isNaN(circulatingSupply) && totalSupply > 0) { const circulationPercentage = (circulatingSupply / totalSupply) * 100; response += `Circulation Percentage: ${circulationPercentage.toFixed(2)}%\n`; } } return response; }

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/0xGval/evm-mcp-tools'

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