getBlockDetails
Retrieve detailed blockchain data for a specific block using a block number or 'latest' tag. Works with custom RPC URLs or named networks, providing essential Ethereum network insights.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| blockTag | Yes | The block number or the string 'latest' | |
| chainId | No | Optional. The chain ID to use. If provided with a named network and they don't match, the RPC's chain ID will be used. | |
| provider | No | Optional. Either a network name or custom RPC URL. Use getAllNetworks to see available networks and their details, or getNetwork to get info about a specific network. You can use any network name returned by these tools as a provider value. |
Implementation Reference
- src/tools/core.ts:421-452 (registration)Registration and handler for the 'getBlockDetails' MCP tool. Includes inline Zod schema for parameters (blockTag, optional provider, optional chainId). The handler fetches block details via ethersService and returns formatted JSON response, with error handling.server.tool( "getBlockDetails", { blockTag: z.union([z.string(), z.number()]).describe( "The block number or the string 'latest'" ), provider: z.string().optional().describe(PROVIDER_DESCRIPTION), chainId: z.number().optional().describe( "Optional. The chain ID to use. If provided with a named network and they don't match, the RPC's chain ID will be used." ) }, async ({ blockTag, provider, chainId }) => { try { const blockDetails = await ethersService.getBlockDetails(blockTag, provider, chainId); return { content: [{ type: "text", text: JSON.stringify(blockDetails, null, 2) }] }; } catch (error) { return { isError: true, content: [{ type: "text", text: `Error getting block details: ${error instanceof Error ? error.message : String(error)}` }] }; } } );
- src/tools/core.ts:423-431 (schema)Zod input schema for getBlockDetails tool parameters.{ blockTag: z.union([z.string(), z.number()]).describe( "The block number or the string 'latest'" ), provider: z.string().optional().describe(PROVIDER_DESCRIPTION), chainId: z.number().optional().describe( "Optional. The chain ID to use. If provided with a named network and they don't match, the RPC's chain ID will be used." ) },
- src/tools/core.ts:432-451 (handler)Handler function for getBlockDetails tool that calls ethersService.getBlockDetails and formats the response as MCP content.async ({ blockTag, provider, chainId }) => { try { const blockDetails = await ethersService.getBlockDetails(blockTag, provider, chainId); return { content: [{ type: "text", text: JSON.stringify(blockDetails, null, 2) }] }; } catch (error) { return { isError: true, content: [{ type: "text", text: `Error getting block details: ${error instanceof Error ? error.message : String(error)}` }] }; } }