@covalenthq/goldrush-mcp-server 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +460 -0
  3. package/dist/example-client.d.ts +2 -0
  4. package/dist/example-client.d.ts.map +1 -0
  5. package/dist/example-client.js +124 -0
  6. package/dist/example-client.js.map +1 -0
  7. package/dist/index.d.ts +4 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +5 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/resources/dynamicResources.d.ts +4 -0
  12. package/dist/resources/dynamicResources.d.ts.map +1 -0
  13. package/dist/resources/dynamicResources.js +59 -0
  14. package/dist/resources/dynamicResources.js.map +1 -0
  15. package/dist/resources/staticResources.d.ts +3 -0
  16. package/dist/resources/staticResources.d.ts.map +1 -0
  17. package/dist/resources/staticResources.js +21 -0
  18. package/dist/resources/staticResources.js.map +1 -0
  19. package/dist/server.d.ts +6 -0
  20. package/dist/server.d.ts.map +1 -0
  21. package/dist/server.js +53 -0
  22. package/dist/server.js.map +1 -0
  23. package/dist/services/AllChainsService.d.ts +4 -0
  24. package/dist/services/AllChainsService.d.ts.map +1 -0
  25. package/dist/services/AllChainsService.js +124 -0
  26. package/dist/services/AllChainsService.js.map +1 -0
  27. package/dist/services/BalanceService.d.ts +4 -0
  28. package/dist/services/BalanceService.d.ts.map +1 -0
  29. package/dist/services/BalanceService.js +228 -0
  30. package/dist/services/BalanceService.js.map +1 -0
  31. package/dist/services/BaseService.d.ts +4 -0
  32. package/dist/services/BaseService.d.ts.map +1 -0
  33. package/dist/services/BaseService.js +170 -0
  34. package/dist/services/BaseService.js.map +1 -0
  35. package/dist/services/BitcoinService.d.ts +4 -0
  36. package/dist/services/BitcoinService.d.ts.map +1 -0
  37. package/dist/services/BitcoinService.js +97 -0
  38. package/dist/services/BitcoinService.js.map +1 -0
  39. package/dist/services/NftService.d.ts +4 -0
  40. package/dist/services/NftService.d.ts.map +1 -0
  41. package/dist/services/NftService.js +70 -0
  42. package/dist/services/NftService.js.map +1 -0
  43. package/dist/services/PricingService.d.ts +4 -0
  44. package/dist/services/PricingService.d.ts.map +1 -0
  45. package/dist/services/PricingService.js +40 -0
  46. package/dist/services/PricingService.js.map +1 -0
  47. package/dist/services/SecurityService.d.ts +4 -0
  48. package/dist/services/SecurityService.d.ts.map +1 -0
  49. package/dist/services/SecurityService.js +30 -0
  50. package/dist/services/SecurityService.js.map +1 -0
  51. package/dist/services/TransactionService.d.ts +4 -0
  52. package/dist/services/TransactionService.d.ts.map +1 -0
  53. package/dist/services/TransactionService.js +150 -0
  54. package/dist/services/TransactionService.js.map +1 -0
  55. package/dist/utils/constants.d.ts +5 -0
  56. package/dist/utils/constants.d.ts.map +1 -0
  57. package/dist/utils/constants.js +21 -0
  58. package/dist/utils/constants.js.map +1 -0
  59. package/dist/utils/helpers.d.ts +2 -0
  60. package/dist/utils/helpers.d.ts.map +1 -0
  61. package/dist/utils/helpers.js +4 -0
  62. package/dist/utils/helpers.js.map +1 -0
  63. package/package.json +89 -0
@@ -0,0 +1,170 @@
1
+ import { validQuoteValues } from "../utils/constants.js";
2
+ import { stringifyWithBigInt } from "../utils/helpers.js";
3
+ import { ChainName, } from "@covalenthq/client-sdk";
4
+ import { z } from "zod";
5
+ export function addBaseServiceTools(server, goldRushClient) {
6
+ server.tool("gas_prices", "Get real-time gas estimates for different transaction speeds on a specific network, enabling users to optimize transaction costs and confirmation times. " +
7
+ "Requires chainName (blockchain network) and eventType (erc20, nativetokens, or uniswapv3). " +
8
+ "Optional parameter quoteCurrency allows conversion to different currencies (USD, EUR, etc). " +
9
+ "Returns estimated gas prices for low, medium, and high priority transactions for the specified event type.", {
10
+ chainName: z.enum(Object.values(ChainName)),
11
+ eventType: z.enum(["erc20", "nativetokens", "uniswapv3"]),
12
+ quoteCurrency: z
13
+ .enum(Object.values(validQuoteValues))
14
+ .optional(),
15
+ }, async (params) => {
16
+ try {
17
+ const response = await goldRushClient.BaseService.getGasPrices(params.chainName, params.eventType, {
18
+ quoteCurrency: params.quoteCurrency,
19
+ });
20
+ return {
21
+ content: [
22
+ {
23
+ type: "text",
24
+ text: stringifyWithBigInt(response.data),
25
+ },
26
+ ],
27
+ };
28
+ }
29
+ catch (err) {
30
+ return {
31
+ content: [{ type: "text", text: `Error: ${err}` }],
32
+ isError: true,
33
+ };
34
+ }
35
+ });
36
+ server.tool("block", "Commonly used to fetch and render a single block for a block explorer." +
37
+ "Requires chainName (blockchain network) and blockHeight (block number). " +
38
+ "Returns comprehensive block data including timestamp, transaction count, size, " +
39
+ "miner information, and other blockchain-specific details.", {
40
+ chainName: z.enum(Object.values(ChainName)),
41
+ blockHeight: z.string(),
42
+ }, async (params) => {
43
+ try {
44
+ const response = await goldRushClient.BaseService.getBlock(params.chainName, params.blockHeight);
45
+ return {
46
+ content: [
47
+ {
48
+ type: "text",
49
+ text: stringifyWithBigInt(response.data),
50
+ },
51
+ ],
52
+ };
53
+ }
54
+ catch (err) {
55
+ return {
56
+ content: [{ type: "text", text: `Error: ${err}` }],
57
+ isError: true,
58
+ };
59
+ }
60
+ });
61
+ server.tool("block_heights", "Commonly used to get all the block heights within a particular date range. " +
62
+ "Requires chainName (blockchain network), startDate (YYYY-MM-DD format), and endDate (YYYY-MM-DD or 'latest'). " +
63
+ "Optional pagination parameters include pageSize (default 10) and pageNumber (default 0). " +
64
+ "Returns block heights, timestamps, and related data for blocks within the specified date range, " +
65
+ "useful for historical analysis and time-based blockchain queries.", {
66
+ chainName: z.enum(Object.values(ChainName)),
67
+ startDate: z.string(),
68
+ endDate: z.union([z.string(), z.literal("latest")]),
69
+ pageSize: z.number().optional().default(10),
70
+ pageNumber: z.number().optional().default(0),
71
+ }, async (params) => {
72
+ try {
73
+ const response = await goldRushClient.BaseService.getBlockHeightsByPage(params.chainName, params.startDate, params.endDate, {
74
+ pageSize: params.pageSize,
75
+ pageNumber: params.pageNumber,
76
+ });
77
+ return {
78
+ content: [
79
+ {
80
+ type: "text",
81
+ text: stringifyWithBigInt(response.data),
82
+ },
83
+ ],
84
+ };
85
+ }
86
+ catch (err) {
87
+ return {
88
+ content: [{ type: "text", text: `Error: ${err}` }],
89
+ isError: true,
90
+ };
91
+ }
92
+ });
93
+ server.tool("log_events_by_address", "Commonly used to get all the event logs emitted from a particular contract address. " +
94
+ "Useful for building dashboards that examine on-chain interactions." +
95
+ "Requires chainName (blockchain network) and contractAddress (the address emitting events). " +
96
+ "Optional parameters include block range (startingBlock, endingBlock) and pagination settings " +
97
+ "(pageSize default 10, pageNumber default 0). " +
98
+ "Returns decoded event logs for the specified contract, useful for monitoring specific " +
99
+ "smart contract activity and analyzing on-chain events.", {
100
+ chainName: z.enum(Object.values(ChainName)),
101
+ contractAddress: z.string(),
102
+ startingBlock: z.union([z.string(), z.number()]).optional(),
103
+ endingBlock: z.union([z.string(), z.number()]).optional(),
104
+ pageSize: z.number().optional().default(10),
105
+ pageNumber: z.number().optional().default(0),
106
+ }, async (params) => {
107
+ try {
108
+ const response = await goldRushClient.BaseService.getLogEventsByAddressByPage(params.chainName, params.contractAddress, {
109
+ startingBlock: params.startingBlock,
110
+ endingBlock: params.endingBlock,
111
+ pageSize: params.pageSize,
112
+ pageNumber: params.pageNumber,
113
+ });
114
+ return {
115
+ content: [
116
+ {
117
+ type: "text",
118
+ text: stringifyWithBigInt(response.data),
119
+ },
120
+ ],
121
+ };
122
+ }
123
+ catch (err) {
124
+ return {
125
+ content: [{ type: "text", text: `Error: ${err}` }],
126
+ isError: true,
127
+ };
128
+ }
129
+ });
130
+ server.tool("log_events_by_topic", "Commonly used to get all event logs of the same topic hash across all contracts within a particular chain. " +
131
+ "Useful for cross-sectional analysis of event logs that are emitted on-chain." +
132
+ "Requires chainName (blockchain network) and topicHash (the event signature hash). " +
133
+ "Optional parameters include block range (startingBlock, endingBlock), secondaryTopics for " +
134
+ "filtering by additional parameters, and pagination settings (pageSize default 10, pageNumber default 0). " +
135
+ "Returns decoded event logs matching the specified topic hash, ideal for tracking specific " +
136
+ "event types across multiple contracts on a blockchain.", {
137
+ chainName: z.enum(Object.values(ChainName)),
138
+ topicHash: z.string(),
139
+ startingBlock: z.union([z.string(), z.number()]).optional(),
140
+ endingBlock: z.union([z.string(), z.number()]).optional(),
141
+ secondaryTopics: z.string().optional(),
142
+ pageSize: z.number().optional().default(10),
143
+ pageNumber: z.number().optional().default(0),
144
+ }, async (params) => {
145
+ try {
146
+ const response = await goldRushClient.BaseService.getLogEventsByTopicHashByPage(params.chainName, params.topicHash, {
147
+ startingBlock: params.startingBlock,
148
+ endingBlock: params.endingBlock,
149
+ secondaryTopics: params.secondaryTopics,
150
+ pageSize: params.pageSize,
151
+ pageNumber: params.pageNumber,
152
+ });
153
+ return {
154
+ content: [
155
+ {
156
+ type: "text",
157
+ text: stringifyWithBigInt(response.data),
158
+ },
159
+ ],
160
+ };
161
+ }
162
+ catch (err) {
163
+ return {
164
+ content: [{ type: "text", text: `Error: ${err}` }],
165
+ isError: true,
166
+ };
167
+ }
168
+ });
169
+ }
170
+ //# sourceMappingURL=BaseService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseService.js","sourceRoot":"","sources":["../../src/services/BaseService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { GoldRushClient } from "@covalenthq/client-sdk";
2
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ export declare function addBitcoinServiceTools(server: McpServer, goldRushClient: GoldRushClient): void;
4
+ //# sourceMappingURL=BitcoinService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BitcoinService.d.ts","sourceRoot":"","sources":["../../src/services/BitcoinService.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAS,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgBzE,wBAAgB,sBAAsB,CAClC,MAAM,EAAE,SAAS,EACjB,cAAc,EAAE,cAAc,QAsHjC"}
@@ -0,0 +1,97 @@
1
+ import { validQuoteValues } from "../utils/constants.js";
2
+ import { stringifyWithBigInt } from "../utils/helpers.js";
3
+ import { z } from "zod";
4
+ export function addBitcoinServiceTools(server, goldRushClient) {
5
+ server.tool("bitcoin_hd_wallet_balances", "Fetch balances for each active child address derived from a Bitcoin HD wallet.\n" +
6
+ "This tool provides detailed balance data for Bitcoin wallets identified by an xpub key.\n" +
7
+ "Required: walletAddress - The xpub key of the HD wallet.\n" +
8
+ "Optional: quoteCurrency - The currency for price conversion (USD, EUR, etc).\n" +
9
+ "Returns complete balance details including total balance, available balance, and transaction history summary.", {
10
+ walletAddress: z.string(),
11
+ quoteCurrency: z
12
+ .enum(Object.values(validQuoteValues))
13
+ .optional(),
14
+ }, async (params) => {
15
+ try {
16
+ const response = await goldRushClient.BitcoinService.getBitcoinHdWalletBalances(params.walletAddress, {
17
+ quoteCurrency: params.quoteCurrency,
18
+ });
19
+ return {
20
+ content: [
21
+ {
22
+ type: "text",
23
+ text: stringifyWithBigInt(response.data),
24
+ },
25
+ ],
26
+ };
27
+ }
28
+ catch (error) {
29
+ return {
30
+ content: [{ type: "text", text: `Error: ${error}` }],
31
+ isError: true,
32
+ };
33
+ }
34
+ });
35
+ server.tool("bitcoin_transactions", "Used to fetch the full transaction history of a Bitcoin wallet.\n" +
36
+ "Required: address - The Bitcoin address to query transactions for.\n" +
37
+ "Optional: pageSize - Number of results per page (default: 10).\n" +
38
+ "Optional: pageNumber - Page number for pagination (default: 0, first page).\n" +
39
+ "Returns comprehensive transaction details including timestamps, amounts, and transaction IDs.", {
40
+ address: z.string(),
41
+ pageSize: z.number().optional().default(10),
42
+ pageNumber: z.number().optional().default(0),
43
+ }, async (params) => {
44
+ try {
45
+ const response = await goldRushClient.BitcoinService.getTransactionsForBtcAddress({
46
+ address: params.address,
47
+ pageSize: params.pageSize,
48
+ pageNumber: params.pageNumber,
49
+ });
50
+ return {
51
+ content: [
52
+ {
53
+ type: "text",
54
+ text: stringifyWithBigInt(response.data),
55
+ },
56
+ ],
57
+ };
58
+ }
59
+ catch (error) {
60
+ return {
61
+ content: [{ type: "text", text: `Error: ${error}` }],
62
+ isError: true,
63
+ };
64
+ }
65
+ });
66
+ server.tool("bitcoin_non_hd_wallet_balances", "Fetch Bitcoin balance for a non-HD address. Response includes spot prices and other metadata.\n" +
67
+ "This tool provides detailed balance data for regular Bitcoin addresses.\n" +
68
+ "Required: walletAddress - The Bitcoin address to query.\n" +
69
+ "Optional: quoteCurrency - The currency for price conversion (USD, EUR, etc).\n" +
70
+ "Returns complete balance details including total balance, available balance, and transaction count.", {
71
+ walletAddress: z.string(),
72
+ quoteCurrency: z
73
+ .enum(Object.values(validQuoteValues))
74
+ .optional(),
75
+ }, async (params) => {
76
+ try {
77
+ const response = await goldRushClient.BitcoinService.getBitcoinNonHdWalletBalances(params.walletAddress, {
78
+ quoteCurrency: params.quoteCurrency,
79
+ });
80
+ return {
81
+ content: [
82
+ {
83
+ type: "text",
84
+ text: stringifyWithBigInt(response.data),
85
+ },
86
+ ],
87
+ };
88
+ }
89
+ catch (error) {
90
+ return {
91
+ content: [{ type: "text", text: `Error: ${error}` }],
92
+ isError: true,
93
+ };
94
+ }
95
+ });
96
+ }
97
+ //# sourceMappingURL=BitcoinService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BitcoinService.js","sourceRoot":"","sources":["../../src/services/BitcoinService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type GoldRushClient } from "@covalenthq/client-sdk";
2
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ export declare function addNftServiceTools(server: McpServer, goldRushClient: GoldRushClient): void;
4
+ //# sourceMappingURL=NftService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NftService.d.ts","sourceRoot":"","sources":["../../src/services/NftService.ts"],"names":[],"mappings":"AACA,OAAO,EAGH,KAAK,cAAc,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,SAAS,EACjB,cAAc,EAAE,cAAc,QA0FjC"}
@@ -0,0 +1,70 @@
1
+ import { stringifyWithBigInt } from "../utils/helpers.js";
2
+ import { ChainName, } from "@covalenthq/client-sdk";
3
+ import { z } from "zod";
4
+ export function addNftServiceTools(server, goldRushClient) {
5
+ server.tool("nft_for_address", "Commonly used to render the NFTs (including ERC721 and ERC1155) held by an address.\n" +
6
+ "Required: chainName (blockchain network name), walletAddress (wallet address or ENS/domain).\n" +
7
+ "Optional: noSpam (filter spam, default true), noNftAssetMetadata (exclude metadata for faster response, default true), " +
8
+ "withUncached (fetch uncached metadata, may be slower, default false).\n" +
9
+ "Returns complete details of NFTs in the wallet including metadata.", {
10
+ chainName: z.enum(Object.values(ChainName)),
11
+ walletAddress: z.string(),
12
+ noSpam: z.boolean().optional().default(true),
13
+ noNftAssetMetadata: z.boolean().optional().default(true),
14
+ withUncached: z.boolean().optional().default(false),
15
+ }, async (params) => {
16
+ try {
17
+ const response = await goldRushClient.NftService.getNftsForAddress(params.chainName, params.walletAddress, {
18
+ noSpam: params.noSpam,
19
+ noNftAssetMetadata: params.noNftAssetMetadata,
20
+ withUncached: params.withUncached,
21
+ });
22
+ return {
23
+ content: [
24
+ {
25
+ type: "text",
26
+ text: stringifyWithBigInt(response.data),
27
+ },
28
+ ],
29
+ };
30
+ }
31
+ catch (err) {
32
+ return {
33
+ content: [{ type: "text", text: `Error: ${err}` }],
34
+ isError: true,
35
+ };
36
+ }
37
+ });
38
+ server.tool("nft_check_ownership", "Commonly used to verify ownership of NFTs (including ERC-721 and ERC-1155) within a collection.\n" +
39
+ "Required: chainName (blockchain network), walletAddress (wallet address), collectionContract (NFT collection).\n" +
40
+ "Optional: traitsFilter (filter by trait types), valuesFilter (filter by trait values).\n" +
41
+ "Returns ownership status and matching NFTs if owned.", {
42
+ chainName: z.enum(Object.values(ChainName)),
43
+ walletAddress: z.string(),
44
+ collectionContract: z.string(),
45
+ traitsFilter: z.string().optional(),
46
+ valuesFilter: z.string().optional(),
47
+ }, async (params) => {
48
+ try {
49
+ const response = await goldRushClient.NftService.checkOwnershipInNft(params.chainName, params.walletAddress, params.collectionContract, {
50
+ traitsFilter: params.traitsFilter,
51
+ valuesFilter: params.valuesFilter,
52
+ });
53
+ return {
54
+ content: [
55
+ {
56
+ type: "text",
57
+ text: stringifyWithBigInt(response.data),
58
+ },
59
+ ],
60
+ };
61
+ }
62
+ catch (err) {
63
+ return {
64
+ content: [{ type: "text", text: `Error: ${err}` }],
65
+ isError: true,
66
+ };
67
+ }
68
+ });
69
+ }
70
+ //# sourceMappingURL=NftService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NftService.js","sourceRoot":"","sources":["../../src/services/NftService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type GoldRushClient } from "@covalenthq/client-sdk";
2
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ export declare function addPricingServiceTools(server: McpServer, goldRushClient: GoldRushClient): void;
4
+ //# sourceMappingURL=PricingService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PricingService.d.ts","sourceRoot":"","sources":["../../src/services/PricingService.ts"],"names":[],"mappings":"AAEA,OAAO,EAGH,KAAK,cAAc,EAEtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,wBAAgB,sBAAsB,CAClC,MAAM,EAAE,SAAS,EACjB,cAAc,EAAE,cAAc,QAiDjC"}
@@ -0,0 +1,40 @@
1
+ import { validQuoteValues } from "../utils/constants.js";
2
+ import { stringifyWithBigInt } from "../utils/helpers.js";
3
+ import { ChainName, } from "@covalenthq/client-sdk";
4
+ import { z } from "zod";
5
+ export function addPricingServiceTools(server, goldRushClient) {
6
+ server.tool("historical_token_prices", "Commonly used to get historic prices of a token between date ranges. Supports native tokens.\n" +
7
+ "Required: chainName (blockchain network), quoteCurrency (price currency), contractAddress (token contract), from (start date YYYY-MM-DD), to (end date YYYY-MM-DD).\n" +
8
+ "Optional: pricesAtAsc (set to true for chronological ascending order, default is false for descending order).\n" +
9
+ "Returns historical token prices for the specified time range.", {
10
+ chainName: z.enum(Object.values(ChainName)),
11
+ quoteCurrency: z.enum(Object.values(validQuoteValues)),
12
+ contractAddress: z.string(),
13
+ from: z.string(),
14
+ to: z.string(),
15
+ pricesAtAsc: z.boolean().optional(),
16
+ }, async (params) => {
17
+ try {
18
+ const response = await goldRushClient.PricingService.getTokenPrices(params.chainName, params.quoteCurrency, params.contractAddress, {
19
+ from: params.from,
20
+ to: params.to,
21
+ pricesAtAsc: params.pricesAtAsc,
22
+ });
23
+ return {
24
+ content: [
25
+ {
26
+ type: "text",
27
+ text: stringifyWithBigInt(response.data),
28
+ },
29
+ ],
30
+ };
31
+ }
32
+ catch (error) {
33
+ return {
34
+ content: [{ type: "text", text: `Error: ${error}` }],
35
+ isError: true,
36
+ };
37
+ }
38
+ });
39
+ }
40
+ //# sourceMappingURL=PricingService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PricingService.js","sourceRoot":"","sources":["../../src/services/PricingService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAEH,SAAS,GAGZ,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,MAAM,UAAU,sBAAsB,CAClC,MAAiB,EACjB,cAA8B;IAE9B,MAAM,CAAC,IAAI,CACP,yBAAyB,EACzB,gGAAgG;QAC5F,uKAAuK;QACvK,iHAAiH;QACjH,+DAA+D,EACnE;QACI,SAAS,EAAE,CAAC,CAAC,IAAI,CACb,MAAM,CAAC,MAAM,CAAC,SAAS,CAA0B,CACpD;QACD,aAAa,EAAE,CAAC,CAAC,IAAI,CACjB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAA0B,CAC3D;QACD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;QAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;KACtC,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACb,IAAI,CAAC;YACD,MAAM,QAAQ,GACV,MAAM,cAAc,CAAC,cAAc,CAAC,cAAc,CAC9C,MAAM,CAAC,SAAkB,EACzB,MAAM,CAAC,aAAsB,EAC7B,MAAM,CAAC,eAAe,EACtB;gBACI,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,WAAW,EAAE,MAAM,CAAC,WAAW;aAClC,CACJ,CAAC;YACN,OAAO;gBACH,OAAO,EAAE;oBACL;wBACI,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC;qBAC3C;iBACJ;aACJ,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO;gBACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,EAAE,EAAE,CAAC;gBACpD,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,CAAC;IACL,CAAC,CACJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type GoldRushClient } from "@covalenthq/client-sdk";
2
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ export declare function addSecurityServiceTools(server: McpServer, goldRushClient: GoldRushClient): void;
4
+ //# sourceMappingURL=SecurityService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecurityService.d.ts","sourceRoot":"","sources":["../../src/services/SecurityService.ts"],"names":[],"mappings":"AACA,OAAO,EAGH,KAAK,cAAc,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,wBAAgB,uBAAuB,CACnC,MAAM,EAAE,SAAS,EACjB,cAAc,EAAE,cAAc,QAoCjC"}
@@ -0,0 +1,30 @@
1
+ import { stringifyWithBigInt } from "../utils/helpers.js";
2
+ import { ChainName, } from "@covalenthq/client-sdk";
3
+ import { z } from "zod";
4
+ export function addSecurityServiceTools(server, goldRushClient) {
5
+ server.tool("token_approvals", "Commonly used to get a list of approvals across all token contracts categorized by spenders for a wallet's assets.\n" +
6
+ "Required: chainName (blockchain network, e.g. eth-mainnet or 1), walletAddress (wallet address, supports ENS, RNS, Lens Handle, or Unstoppable Domain).\n" +
7
+ "Returns a list of ERC20 token approvals and their associated security risk levels.", {
8
+ chainName: z.enum(Object.values(ChainName)),
9
+ walletAddress: z.string(),
10
+ }, async (params) => {
11
+ try {
12
+ const response = await goldRushClient.SecurityService.getApprovals(params.chainName, params.walletAddress);
13
+ return {
14
+ content: [
15
+ {
16
+ type: "text",
17
+ text: stringifyWithBigInt(response.data),
18
+ },
19
+ ],
20
+ };
21
+ }
22
+ catch (error) {
23
+ return {
24
+ content: [{ type: "text", text: `Error: ${error}` }],
25
+ isError: true,
26
+ };
27
+ }
28
+ });
29
+ }
30
+ //# sourceMappingURL=SecurityService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecurityService.js","sourceRoot":"","sources":["../../src/services/SecurityService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAEH,SAAS,GAEZ,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,MAAM,UAAU,uBAAuB,CACnC,MAAiB,EACjB,cAA8B;IAE9B,MAAM,CAAC,IAAI,CACP,iBAAiB,EACjB,sHAAsH;QAClH,2JAA2J;QAC3J,oFAAoF,EACxF;QACI,SAAS,EAAE,CAAC,CAAC,IAAI,CACb,MAAM,CAAC,MAAM,CAAC,SAAS,CAA0B,CACpD;QACD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;KAC5B,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACb,IAAI,CAAC;YACD,MAAM,QAAQ,GACV,MAAM,cAAc,CAAC,eAAe,CAAC,YAAY,CAC7C,MAAM,CAAC,SAAkB,EACzB,MAAM,CAAC,aAAa,CACvB,CAAC;YACN,OAAO;gBACH,OAAO,EAAE;oBACL;wBACI,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC;qBAC3C;iBACJ;aACJ,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO;gBACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,EAAE,EAAE,CAAC;gBACpD,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,CAAC;IACL,CAAC,CACJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type GoldRushClient } from "@covalenthq/client-sdk";
2
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ export declare function addTransactionServiceTools(server: McpServer, goldRushClient: GoldRushClient): void;
4
+ //# sourceMappingURL=TransactionService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionService.d.ts","sourceRoot":"","sources":["../../src/services/TransactionService.ts"],"names":[],"mappings":"AAEA,OAAO,EAGH,KAAK,cAAc,EAEtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAezE,wBAAgB,0BAA0B,CACtC,MAAM,EAAE,SAAS,EACjB,cAAc,EAAE,cAAc,QAkMjC"}
@@ -0,0 +1,150 @@
1
+ import { validQuoteValues } from "../utils/constants.js";
2
+ import { stringifyWithBigInt } from "../utils/helpers.js";
3
+ import { ChainName, } from "@covalenthq/client-sdk";
4
+ import { z } from "zod";
5
+ export function addTransactionServiceTools(server, goldRushClient) {
6
+ server.tool("transaction", "Commonly used to fetch and render a single transaction including its decoded log events.\n" +
7
+ "Required: chainName (blockchain network), txHash (transaction hash).\n" +
8
+ "Optional: quoteCurrency (currency to convert to, USD by default), " +
9
+ "noLogs (exclude event logs, true by default), " +
10
+ "withInternal (include internal transactions, false by default), " +
11
+ "withState (include state changes, false by default), " +
12
+ "withInputData (include input data, false by default).\n" +
13
+ "Tracing features (withInternal, withState, withInputData) supported on the following chains: eth-mainnet\n" +
14
+ "Returns comprehensive details about the specified transaction.", {
15
+ chainName: z.enum(Object.values(ChainName)),
16
+ txHash: z.string(),
17
+ quoteCurrency: z
18
+ .enum(Object.values(validQuoteValues))
19
+ .optional(),
20
+ noLogs: z.boolean().optional().default(true),
21
+ withInternal: z.boolean().optional(),
22
+ withState: z.boolean().optional(),
23
+ withInputData: z.boolean().optional(),
24
+ }, async (params) => {
25
+ try {
26
+ const response = await goldRushClient.TransactionService.getTransaction(params.chainName, params.txHash, {
27
+ quoteCurrency: params.quoteCurrency,
28
+ noLogs: params.noLogs,
29
+ withInternal: params.withInternal,
30
+ withState: params.withState,
31
+ withInputData: params.withInputData,
32
+ });
33
+ return {
34
+ content: [
35
+ {
36
+ type: "text",
37
+ text: stringifyWithBigInt(response.data),
38
+ },
39
+ ],
40
+ };
41
+ }
42
+ catch (error) {
43
+ return {
44
+ content: [{ type: "text", text: `Error: ${error}` }],
45
+ isError: true,
46
+ };
47
+ }
48
+ });
49
+ server.tool("transaction_summary", "Commonly used to fetch the earliest and latest transactions, and the transaction count for a wallet.\n" +
50
+ "Required: chainName (blockchain network), walletAddress (wallet address).\n" +
51
+ "Optional: quoteCurrency, withGas (include gas usage statistics).\n" +
52
+ "Returns summary of transaction activity for the specified wallet.", {
53
+ chainName: z.enum(Object.values(ChainName)),
54
+ walletAddress: z.string(),
55
+ quoteCurrency: z
56
+ .enum(Object.values(validQuoteValues))
57
+ .optional(),
58
+ withGas: z.boolean().optional(),
59
+ }, async (params) => {
60
+ try {
61
+ const response = await goldRushClient.TransactionService.getTransactionSummary(params.chainName, params.walletAddress, {
62
+ quoteCurrency: params.quoteCurrency,
63
+ withGas: params.withGas,
64
+ });
65
+ return {
66
+ content: [
67
+ {
68
+ type: "text",
69
+ text: stringifyWithBigInt(response.data),
70
+ },
71
+ ],
72
+ };
73
+ }
74
+ catch (err) {
75
+ return {
76
+ content: [{ type: "text", text: `Error: ${err}` }],
77
+ isError: true,
78
+ };
79
+ }
80
+ });
81
+ server.tool("transactions_for_address", "Commonly used to fetch and render the most recent transactions involving an address.\n" +
82
+ "Required: chainName (blockchain network), walletAddress (wallet address), page (page number).\n" +
83
+ "Optional: quoteCurrency, noLogs, blockSignedAtAsc (chronological order).\n" +
84
+ "Returns transactions for the specified page of results.", {
85
+ chainName: z.enum(Object.values(ChainName)),
86
+ walletAddress: z.string(),
87
+ page: z.number(),
88
+ quoteCurrency: z
89
+ .enum(Object.values(validQuoteValues))
90
+ .optional(),
91
+ noLogs: z.boolean().optional().default(true),
92
+ blockSignedAtAsc: z.boolean().optional(),
93
+ }, async (params) => {
94
+ try {
95
+ const response = await goldRushClient.TransactionService.getPaginatedTransactionsForAddress(params.chainName, params.walletAddress, params.page, {
96
+ quoteCurrency: params.quoteCurrency,
97
+ noLogs: params.noLogs,
98
+ blockSignedAtAsc: params.blockSignedAtAsc,
99
+ });
100
+ return {
101
+ content: [
102
+ {
103
+ type: "text",
104
+ text: stringifyWithBigInt(response.data),
105
+ },
106
+ ],
107
+ };
108
+ }
109
+ catch (err) {
110
+ return {
111
+ content: [{ type: "text", text: `Error: ${err}` }],
112
+ isError: true,
113
+ };
114
+ }
115
+ });
116
+ server.tool("transactions_for_block", "Commonly used to fetch all transactions including their decoded log events in a block and further flag interesting wallets or transactions.\n" +
117
+ "Required: chainName (blockchain network), blockHeight (block number or latest).\n" +
118
+ "Optional: quoteCurrency, noLogs (exclude event logs).\n" +
119
+ "Returns all transactions from the specified block.", {
120
+ chainName: z.enum(Object.values(ChainName)),
121
+ blockHeight: z.union([z.string(), z.number(), z.literal("latest")]),
122
+ page: z.number(),
123
+ quoteCurrency: z
124
+ .enum(Object.values(validQuoteValues))
125
+ .optional(),
126
+ noLogs: z.boolean().optional(),
127
+ }, async (params) => {
128
+ try {
129
+ const response = await goldRushClient.TransactionService.getTransactionsForBlockByPage(params.chainName, params.blockHeight, params.page, {
130
+ quoteCurrency: params.quoteCurrency,
131
+ noLogs: params.noLogs,
132
+ });
133
+ return {
134
+ content: [
135
+ {
136
+ type: "text",
137
+ text: stringifyWithBigInt(response.data),
138
+ },
139
+ ],
140
+ };
141
+ }
142
+ catch (err) {
143
+ return {
144
+ content: [{ type: "text", text: `Error: ${err}` }],
145
+ isError: true,
146
+ };
147
+ }
148
+ });
149
+ }
150
+ //# sourceMappingURL=TransactionService.js.map