get_cosmos_validator
Retrieve detailed validator information for Cosmos-based blockchains, including staking metrics and network participation data through Grove's blockchain data service.
Instructions
Get specific validator details
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| blockchain | Yes | Blockchain name | |
| network | No | Network type (defaults to mainnet) | |
| validatorAddress | Yes | Validator address |
Implementation Reference
- src/handlers/cosmos-handlers.ts:476-492 (handler)Handler case in handleCosmosTool function that executes the get_cosmos_validator tool by extracting parameters and delegating to CosmosService.getValidatorcase 'get_cosmos_validator': { const blockchain = args?.blockchain as string; const validatorAddress = args?.validatorAddress as string; const network = (args?.network as 'mainnet' | 'testnet') || 'mainnet'; const result = await cosmosService.getValidator(blockchain, validatorAddress, network); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], isError: !result.success, }; }
- Tool definition including name, description, and input schema for get_cosmos_validator, returned by registerCosmosHandlers{ name: 'get_cosmos_validator', description: 'Get specific validator details', inputSchema: { type: 'object', properties: { blockchain: { type: 'string', description: 'Blockchain name', }, validatorAddress: { type: 'string', description: 'Validator address', }, network: { type: 'string', enum: ['mainnet', 'testnet'], description: 'Network type (defaults to mainnet)', }, }, required: ['blockchain', 'validatorAddress'], }, },
- Implements the core logic for fetching specific validator details via Cosmos REST API /cosmos/staking/v1beta1/validators/{validatorAddress}async getValidator( blockchain: string, validatorAddress: string, network: 'mainnet' | 'testnet' = 'mainnet' ): Promise<EndpointResponse> { try { const baseUrl = this.getRestUrl(blockchain, network); const url = `${baseUrl}/cosmos/staking/v1beta1/validators/${validatorAddress}`; return this.fetchRest(url); } catch (error) { return { success: false, error: error instanceof Error ? error.message : 'Failed to get Cosmos validator', }; } }
- src/index.ts:88-101 (registration)Registers all tools including cosmos tools (via registerCosmosHandlers) into the tools list provided to MCP ListToolsRequestconst 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), ];
- src/index.ts:114-126 (registration)Tool execution dispatcher that routes get_cosmos_validator to handleCosmosTool in the main CallToolRequestHandlerlet result = (await handleBlockchainTool(name, args, blockchainService)) || (await handleDomainTool(name, args, domainResolver)) || (await handleTransactionTool(name, args, advancedBlockchain)) || (await handleTokenTool(name, args, advancedBlockchain)) || (await handleMultichainTool(name, args, advancedBlockchain)) || (await handleContractTool(name, args, advancedBlockchain)) || (await handleUtilityTool(name, args, advancedBlockchain)) || (await handleEndpointTool(name, args, endpointManager)) || (await handleSolanaTool(name, args, solanaService)) || (await handleCosmosTool(name, args, cosmosService)) || (await handleSuiTool(name, args, suiService)) || (await handleDocsTool(name, args, docsManager));