UNPKG

@covalenthq/goldrush-mcp-server

Version:

GoldRush MCP Server for interacting with Covalent GoldRush API

237 lines 8.75 kB
import { validQuoteValues } from "../utils/constants.js"; import { TOOL_DESCRIPTIONS, PARAM_DESCRIPTIONS, } from "../utils/generated-descriptions.js"; import { stringifyWithBigInt } from "../utils/helpers.js"; import { ChainName, } from "@covalenthq/client-sdk"; import { z } from "zod"; export function addBaseServiceTools(server, goldRushClient) { server.tool("gas_prices", TOOL_DESCRIPTIONS["gas_prices"], { chainName: z .enum(Object.values(ChainName)) .describe(PARAM_DESCRIPTIONS["gas_prices"]["chainName"]), eventType: z .enum(["erc20", "nativetokens", "uniswapv3"]) .describe(PARAM_DESCRIPTIONS["gas_prices"]["eventType"]), quoteCurrency: z .enum(Object.values(validQuoteValues)) .optional() .describe(PARAM_DESCRIPTIONS["gas_prices"]["quoteCurrency"]), }, async (params) => { try { const response = await goldRushClient.BaseService.getGasPrices(params.chainName, params.eventType, { quoteCurrency: params.quoteCurrency, }); return { content: [ { type: "text", text: stringifyWithBigInt(response.data), }, ], }; } catch (err) { return { content: [{ type: "text", text: `Error: ${err}` }], isError: true, }; } }); server.tool("block", TOOL_DESCRIPTIONS["block"], { chainName: z .enum(Object.values(ChainName)) .describe(PARAM_DESCRIPTIONS["block"]["chainName"]), blockHeight: z .string() .describe(PARAM_DESCRIPTIONS["block"]["blockHeight"]), }, async (params) => { try { const response = await goldRushClient.BaseService.getBlock(params.chainName, params.blockHeight); return { content: [ { type: "text", text: stringifyWithBigInt(response.data), }, ], }; } catch (err) { return { content: [{ type: "text", text: `Error: ${err}` }], isError: true, }; } }); server.tool("block_heights", TOOL_DESCRIPTIONS["block_heights"], { chainName: z .enum(Object.values(ChainName)) .describe(PARAM_DESCRIPTIONS["block_heights"]["chainName"]), startDate: z .string() .describe(PARAM_DESCRIPTIONS["block_heights"]["startDate"]), endDate: z .union([z.string(), z.literal("latest")]) .describe(PARAM_DESCRIPTIONS["block_heights"]["endDate"]), pageSize: z .number() .optional() .default(10) .describe(PARAM_DESCRIPTIONS["block_heights"]["pageSize"]), pageNumber: z .number() .optional() .default(0) .describe(PARAM_DESCRIPTIONS["block_heights"]["pageNumber"]), }, async (params) => { try { const response = await goldRushClient.BaseService.getBlockHeightsByPage(params.chainName, params.startDate, params.endDate, { pageSize: params.pageSize, pageNumber: params.pageNumber, }); return { content: [ { type: "text", text: stringifyWithBigInt(response.data), }, ], }; } catch (err) { return { content: [{ type: "text", text: `Error: ${err}` }], isError: true, }; } }); server.tool("log_events_by_address", TOOL_DESCRIPTIONS["log_events_by_address"], { chainName: z .enum(Object.values(ChainName)) .describe(PARAM_DESCRIPTIONS["log_events_by_address"]["chainName"]), contractAddress: z .string() .describe(PARAM_DESCRIPTIONS["log_events_by_address"]["contractAddress"]), startingBlock: z .union([z.string(), z.number()]) .optional() .describe(PARAM_DESCRIPTIONS["log_events_by_address"]["startingBlock"]), endingBlock: z .union([z.string(), z.number()]) .optional() .describe(PARAM_DESCRIPTIONS["log_events_by_address"]["endingBlock"]), pageSize: z .number() .optional() .default(10) .describe(PARAM_DESCRIPTIONS["log_events_by_address"]["pageSize"]), pageNumber: z .number() .optional() .default(0) .describe(PARAM_DESCRIPTIONS["log_events_by_address"]["pageNumber"]), }, async (params) => { try { const response = await goldRushClient.BaseService.getLogEventsByAddressByPage(params.chainName, params.contractAddress, { startingBlock: params.startingBlock, endingBlock: params.endingBlock, pageSize: params.pageSize, pageNumber: params.pageNumber, }); return { content: [ { type: "text", text: stringifyWithBigInt(response.data), }, ], }; } catch (err) { return { content: [{ type: "text", text: `Error: ${err}` }], isError: true, }; } }); server.tool("log_events_by_topic", TOOL_DESCRIPTIONS["log_events_by_topic"], { chainName: z .enum(Object.values(ChainName)) .describe(PARAM_DESCRIPTIONS["log_events_by_topic"]["chainName"]), topicHash: z .string() .describe(PARAM_DESCRIPTIONS["log_events_by_topic"]["topicHash"]), startingBlock: z .union([z.string(), z.number()]) .optional() .describe(PARAM_DESCRIPTIONS["log_events_by_topic"]["startingBlock"]), endingBlock: z .union([z.string(), z.number()]) .optional() .describe(PARAM_DESCRIPTIONS["log_events_by_topic"]["endingBlock"]), secondaryTopics: z .string() .optional() .describe(PARAM_DESCRIPTIONS["log_events_by_topic"]["secondaryTopics"]), pageSize: z .number() .optional() .default(10) .describe(PARAM_DESCRIPTIONS["log_events_by_topic"]["pageSize"]), pageNumber: z .number() .optional() .default(0) .describe(PARAM_DESCRIPTIONS["log_events_by_topic"]["pageNumber"]), }, async (params) => { try { const response = await goldRushClient.BaseService.getLogEventsByTopicHashByPage(params.chainName, params.topicHash, { startingBlock: params.startingBlock, endingBlock: params.endingBlock, secondaryTopics: params.secondaryTopics, pageSize: params.pageSize, pageNumber: params.pageNumber, }); return { content: [ { type: "text", text: stringifyWithBigInt(response.data), }, ], }; } catch (err) { return { content: [{ type: "text", text: `Error: ${err}` }], isError: true, }; } }); server.tool("resolve_address", TOOL_DESCRIPTIONS["resolve_address"], { chainName: z .enum(Object.values(ChainName)) .describe(PARAM_DESCRIPTIONS["resolve_address"]["chainName"]), walletAddress: z .string() .describe(PARAM_DESCRIPTIONS["resolve_address"]["walletAddress"]), }, async (params) => { try { const response = await goldRushClient.BaseService.getResolvedAddress(params.chainName, params.walletAddress); return { content: [ { type: "text", text: stringifyWithBigInt(response.data), }, ], }; } catch (err) { return { content: [{ type: "text", text: `Error: ${err}` }], isError: true, }; } }); } //# sourceMappingURL=BaseService.js.map