get_block_summary
Generate AI-powered summaries for specific Ethereum blocks to understand blockchain activity and data insights.
Instructions
Get AI-generated summary for a specific block
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| block_number | Yes | The block number to get summary for |
Implementation Reference
- index.js:730-731 (handler)Handler case for the get_block_summary tool. Executes by calling makeRequest to the ChainFETCH blocks summary API endpoint with the provided arguments.case 'get_block_summary': return await this.makeRequest('/api/v1/ethereum/blocks/summary', 'GET', args, null, token);
- index.js:354-367 (schema)Schema definition for the get_block_summary tool, including name, description, and input schema requiring a block_number string.{ name: 'get_block_summary', description: 'Get AI-generated summary for a specific block', inputSchema: { type: 'object', properties: { block_number: { type: 'string', description: 'The block number to get summary for', }, }, required: ['block_number'], }, },
- index.js:634-682 (helper)Supporting utility method makeRequest that handles all API calls to ChainFETCH, including authentication with API token, query parameter building, and error handling. This is the core implementation behind the tool's API proxy logic.async makeRequest(endpoint, method = 'GET', params = {}, body = null, token = null) { const chainfetchToken = token || process.env.CHAINFETCH_API_TOKEN; if (!chainfetchToken) { throw new McpError( ErrorCode.InvalidRequest, 'CHAINFETCH_API_TOKEN is required' ); } const url = new URL(`${API_BASE_URL}${endpoint}`); // Add query parameters for GET requests if (method === 'GET' && Object.keys(params).length > 0) { Object.entries(params).forEach(([key, value]) => { if (value !== undefined && value !== null) { if (Array.isArray(value)) { value.forEach(v => url.searchParams.append(`${key}[]`, v)); } else { url.searchParams.append(key, value.toString()); } } }); } const fetchOptions = { method, headers: { 'Authorization': `Bearer ${chainfetchToken}`, 'Content-Type': 'application/json', }, }; if (body && method !== 'GET') { fetchOptions.body = JSON.stringify(body); } const response = await fetch(url.toString(), fetchOptions); if (!response.ok) { const errorText = await response.text(); throw new McpError( ErrorCode.InternalError, `API request failed: ${response.status} ${response.statusText} - ${errorText}` ); } return await response.json(); }