@covalenthq/goldrush-mcp-server
Version:
GoldRush MCP Server for interacting with Covalent GoldRush API
118 lines • 4.55 kB
JavaScript
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