get_cosmos_rewards
Retrieve staking rewards for a delegator on Cosmos-based blockchains using Grove's public endpoints. Specify blockchain, delegator address, and optionally validator address to access reward data.
Instructions
Get staking rewards for a delegator
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| blockchain | Yes | Blockchain name | |
| delegatorAddress | Yes | Delegator address | |
| validatorAddress | No | Optional: Specific validator address | |
| network | No | Network type (defaults to mainnet) |
Implementation Reference
- src/services/cosmos-service.ts:204-226 (handler)Core handler implementing the get_cosmos_rewards tool by querying the Cosmos distribution REST API endpoint for delegator rewards.
/** * Get staking rewards for a delegator */ async getRewards( blockchain: string, delegatorAddress: string, validatorAddress?: string, network: 'mainnet' | 'testnet' = 'mainnet' ): Promise<EndpointResponse> { try { const baseUrl = this.getRestUrl(blockchain, network); const url = validatorAddress ? `${baseUrl}/cosmos/distribution/v1beta1/delegators/${delegatorAddress}/rewards/${validatorAddress}` : `${baseUrl}/cosmos/distribution/v1beta1/delegators/${delegatorAddress}/rewards`; return this.fetchRest(url); } catch (error) { return { success: false, error: error instanceof Error ? error.message : 'Failed to get Cosmos rewards', }; } } - Tool schema definition including name, description, and input validation schema for get_cosmos_rewards.
{ name: 'get_cosmos_rewards', description: 'Get staking rewards for a delegator', inputSchema: { type: 'object', properties: { blockchain: { type: 'string', description: 'Blockchain name', }, delegatorAddress: { type: 'string', description: 'Delegator address', }, validatorAddress: { type: 'string', description: 'Optional: Specific validator address', }, network: { type: 'string', enum: ['mainnet', 'testnet'], description: 'Network type (defaults to mainnet)', }, }, required: ['blockchain', 'delegatorAddress'], }, }, - src/handlers/cosmos-handlers.ts:494-516 (handler)Handler switch case in handleCosmosTool that extracts arguments and delegates to CosmosService.getRewards, formats response for MCP.
case 'get_cosmos_rewards': { const blockchain = args?.blockchain as string; const delegatorAddress = args?.delegatorAddress as string; const validatorAddress = args?.validatorAddress as string | undefined; const network = (args?.network as 'mainnet' | 'testnet') || 'mainnet'; const result = await cosmosService.getRewards( blockchain, delegatorAddress, validatorAddress, network ); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], isError: !result.success, }; } - src/index.ts:88-101 (registration)Registers the Cosmos tools (including get_cosmos_rewards) by calling registerCosmosHandlers and including in the tools list provided to MCP server handlers.
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), ];