get_solana_token_metadata
Retrieve SPL token metadata including decimals, supply, and authorities from Solana blockchain networks using Grove's Pocket Network server.
Instructions
Get SPL token metadata (decimals, supply, authorities)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mintAddress | Yes | SPL token mint address | |
| network | No | Network type (defaults to mainnet) |
Implementation Reference
- src/services/solana-service.ts:132-192 (handler)Core implementation of the get_solana_token_metadata tool. Fetches the SPL token mint account info via RPC, parses metadata including decimals, supply, mint/freeze authorities.async getTokenMetadata( mintAddress: string, network: 'mainnet' | 'testnet' = 'mainnet' ): Promise<EndpointResponse> { const service = this.blockchainService.getServiceByBlockchain('solana', network); if (!service) { return { success: false, error: `Solana service not found for ${network}`, }; } try { // Get account info for the mint const result = await this.blockchainService.callRPCMethod( service.id, 'getAccountInfo', [ mintAddress, { encoding: 'jsonParsed', }, ] ); if (!result.success || !result.data?.value) { return { success: false, error: 'Token mint not found or invalid', }; } const mintInfo = result.data.value.data?.parsed?.info; if (!mintInfo) { return { success: false, error: 'Invalid token mint data', }; } return { success: true, data: { mint: mintAddress, decimals: mintInfo.decimals, supply: mintInfo.supply, mintAuthority: mintInfo.mintAuthority, freezeAuthority: mintInfo.freezeAuthority, isInitialized: mintInfo.isInitialized, }, metadata: result.metadata, }; } catch (error) { return { success: false, error: error instanceof Error ? error.message : 'Failed to get Solana token metadata', }; } }
- src/handlers/solana-handlers.ts:271-286 (handler)Wrapper handler in handleSolanaTool function that extracts input arguments and delegates to SolanaService.getTokenMetadata, formats the response for MCP.case 'get_solana_token_metadata': { const mintAddress = args?.mintAddress as string; const network = (args?.network as 'mainnet' | 'testnet') || 'mainnet'; const result = await solanaService.getTokenMetadata(mintAddress, network); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], isError: !result.success, }; }
- Input schema definition for the tool, specifying required mintAddress and optional network parameters.{ name: 'get_solana_token_metadata', description: 'Get SPL token metadata (decimals, supply, authorities)', inputSchema: { type: 'object', properties: { mintAddress: { type: 'string', description: 'SPL token mint address', }, network: { type: 'string', enum: ['mainnet', 'testnet'], description: 'Network type (defaults to mainnet)', }, }, required: ['mintAddress'], }, },
- src/index.ts:88-101 (registration)Registration of all tools including Solana tools via registerSolanaHandlers, collected into tools list used for listTools response.const tools: Tool[] = [ ...registerBlockchainHandlers(server, blockchainService), ...registerDomainHandlers(server, domainResolver), ...registerTransactionHandlers(server, advancedBlockchain), ...registerTokenHandlers(server, advancedBlockchain), ...registerMultichainHandlers(server, advancedBlockchain), ...registerContractHandlers(server, advancedBlockchain), ...registerUtilityHandlers(server, advancedBlockchain), ...registerEndpointHandlers(server, endpointManager), ...registerSolanaHandlers(server, solanaService), ...registerCosmosHandlers(server, cosmosService), ...registerSuiHandlers(server, suiService), ...registerDocsHandlers(server, docsManager), ];