UNPKG

@covalenthq/goldrush-mcp-server

Version:

GoldRush MCP Server for interacting with Covalent GoldRush API

118 lines 4.55 kB
import { PARAM_DESCRIPTIONS, TOOL_DESCRIPTIONS, } from "../utils/generated-descriptions.js"; import { stringifyWithBigInt } from "../utils/helpers.js"; import { ChainName, } from "@covalenthq/client-sdk"; import { z } from "zod"; export function addNftServiceTools(server, goldRushClient) { server.tool("nft_for_address", TOOL_DESCRIPTIONS["nft_for_address"], { chainName: z .enum(Object.values(ChainName)) .describe(PARAM_DESCRIPTIONS["nft_for_address"]["chainName"]), walletAddress: z .string() .describe(PARAM_DESCRIPTIONS["nft_for_address"]["walletAddress"]), noSpam: z .boolean() .optional() .default(true) .describe(PARAM_DESCRIPTIONS["nft_for_address"]["noSpam"]), noNftAssetMetadata: z .boolean() .optional() .default(true) .describe(PARAM_DESCRIPTIONS["nft_for_address"]["noNftAssetMetadata"]), }, async (params) => { try { const response = await goldRushClient.NftService.getNftsForAddress(params.chainName, params.walletAddress, { noSpam: params.noSpam, noNftAssetMetadata: params.noNftAssetMetadata, }); return { content: [ { type: "text", text: stringifyWithBigInt(response.data), }, ], }; } catch (err) { return { content: [{ type: "text", text: `Error: ${err}` }], isError: true, }; } }); server.tool("nft_check_ownership", TOOL_DESCRIPTIONS["nft_check_ownership"], { chainName: z .enum(Object.values(ChainName)) .describe(PARAM_DESCRIPTIONS["nft_check_ownership"]["chainName"]), walletAddress: z .string() .describe(PARAM_DESCRIPTIONS["nft_check_ownership"]["walletAddress"]), collectionContract: z .string() .describe(PARAM_DESCRIPTIONS["nft_check_ownership"]["collectionContract"]), traitsFilter: z .string() .optional() .describe(PARAM_DESCRIPTIONS["nft_check_ownership"]["traitsFilter"]), valuesFilter: z .string() .optional() .describe(PARAM_DESCRIPTIONS["nft_check_ownership"]["valuesFilter"]), }, async (params) => { try { const response = await goldRushClient.NftService.checkOwnershipInNft(params.chainName, params.walletAddress, params.collectionContract, { traitsFilter: params.traitsFilter, valuesFilter: params.valuesFilter, }); return { content: [ { type: "text", text: stringifyWithBigInt(response.data), }, ], }; } catch (err) { return { content: [{ type: "text", text: `Error: ${err}` }], isError: true, }; } }); server.tool("nft_check_ownership_token_id", TOOL_DESCRIPTIONS["nft_check_ownership_token_id"], { chainName: z .enum(Object.values(ChainName)) .describe(PARAM_DESCRIPTIONS["nft_check_ownership_token_id"]["chainName"]), walletAddress: z .string() .describe(PARAM_DESCRIPTIONS["nft_check_ownership_token_id"]["walletAddress"]), collectionContract: z .string() .describe(PARAM_DESCRIPTIONS["nft_check_ownership_token_id"]["collectionContract"]), tokenId: z .string() .describe(PARAM_DESCRIPTIONS["nft_check_ownership_token_id"]["tokenId"]), }, async (params) => { try { const response = await goldRushClient.NftService.checkOwnershipInNftForSpecificTokenId(params.chainName, params.walletAddress, params.collectionContract, params.tokenId); return { content: [ { type: "text", text: stringifyWithBigInt(response.data), }, ], }; } catch (err) { return { content: [{ type: "text", text: `Error: ${err}` }], isError: true, }; } }); } //# sourceMappingURL=NftService.js.map