web3-tools-mcp 2.0.2 → 3.1.0

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 (180) hide show
  1. package/CHANGELOG.md +182 -1
  2. package/README.md +76 -47
  3. package/dist/anvil.d.ts +17 -19
  4. package/dist/anvil.d.ts.map +1 -1
  5. package/dist/anvil.js +124 -228
  6. package/dist/anvil.js.map +1 -1
  7. package/dist/chain-meta.d.ts.map +1 -1
  8. package/dist/chain-meta.js +19 -8
  9. package/dist/chain-meta.js.map +1 -1
  10. package/dist/chains.d.ts +9 -1
  11. package/dist/chains.d.ts.map +1 -1
  12. package/dist/chains.js +11 -2
  13. package/dist/chains.js.map +1 -1
  14. package/dist/clear-signing.d.ts.map +1 -1
  15. package/dist/clear-signing.js +17 -6
  16. package/dist/clear-signing.js.map +1 -1
  17. package/dist/client.d.ts.map +1 -1
  18. package/dist/client.js.map +1 -1
  19. package/dist/context.d.ts +22 -0
  20. package/dist/context.d.ts.map +1 -0
  21. package/dist/context.js +24 -0
  22. package/dist/context.js.map +1 -0
  23. package/dist/hosted.d.ts +12 -0
  24. package/dist/hosted.d.ts.map +1 -0
  25. package/dist/hosted.js +12 -0
  26. package/dist/hosted.js.map +1 -0
  27. package/dist/http-server.d.ts +13 -0
  28. package/dist/http-server.d.ts.map +1 -1
  29. package/dist/http-server.js +22 -7
  30. package/dist/http-server.js.map +1 -1
  31. package/dist/index.js +20 -12
  32. package/dist/index.js.map +1 -1
  33. package/dist/kv-storage.d.ts +2 -1
  34. package/dist/kv-storage.d.ts.map +1 -1
  35. package/dist/kv-storage.js +5 -2
  36. package/dist/kv-storage.js.map +1 -1
  37. package/dist/lib.d.ts +24 -0
  38. package/dist/lib.d.ts.map +1 -0
  39. package/dist/lib.js +23 -0
  40. package/dist/lib.js.map +1 -0
  41. package/dist/mcp-server.d.ts +4 -0
  42. package/dist/mcp-server.d.ts.map +1 -0
  43. package/dist/mcp-server.js +43 -0
  44. package/dist/mcp-server.js.map +1 -0
  45. package/dist/oauth.d.ts +57 -8
  46. package/dist/oauth.d.ts.map +1 -1
  47. package/dist/oauth.js +133 -63
  48. package/dist/oauth.js.map +1 -1
  49. package/dist/preview.d.ts +7 -0
  50. package/dist/preview.d.ts.map +1 -1
  51. package/dist/preview.js +21 -7
  52. package/dist/preview.js.map +1 -1
  53. package/dist/signing-requests.d.ts +81 -0
  54. package/dist/signing-requests.d.ts.map +1 -0
  55. package/dist/signing-requests.js +138 -0
  56. package/dist/signing-requests.js.map +1 -0
  57. package/dist/tools/index.d.ts +27 -1
  58. package/dist/tools/index.d.ts.map +1 -1
  59. package/dist/tools/index.js +50 -15
  60. package/dist/tools/index.js.map +1 -1
  61. package/dist/tools/{advanced.d.ts → read/advanced.d.ts} +39 -30
  62. package/dist/tools/read/advanced.d.ts.map +1 -0
  63. package/dist/tools/{advanced.js → read/advanced.js} +53 -41
  64. package/dist/tools/read/advanced.js.map +1 -0
  65. package/dist/tools/{balance.d.ts → read/balance.d.ts} +8 -7
  66. package/dist/tools/read/balance.d.ts.map +1 -0
  67. package/dist/tools/{balance.js → read/balance.js} +18 -33
  68. package/dist/tools/read/balance.js.map +1 -0
  69. package/dist/tools/{contract-info.d.ts → read/contract-info.d.ts} +20 -15
  70. package/dist/tools/read/contract-info.d.ts.map +1 -0
  71. package/dist/tools/{contract-info.js → read/contract-info.js} +54 -123
  72. package/dist/tools/read/contract-info.js.map +1 -0
  73. package/dist/tools/{contract.d.ts → read/contract.d.ts} +14 -12
  74. package/dist/tools/read/contract.d.ts.map +1 -0
  75. package/dist/tools/{contract.js → read/contract.js} +3 -2
  76. package/dist/tools/read/contract.js.map +1 -0
  77. package/dist/tools/read/ens.d.ts +104 -0
  78. package/dist/tools/read/ens.d.ts.map +1 -0
  79. package/dist/tools/{ens.js → read/ens.js} +25 -33
  80. package/dist/tools/read/ens.js.map +1 -0
  81. package/dist/tools/read/gas.d.ts +171 -0
  82. package/dist/tools/read/gas.d.ts.map +1 -0
  83. package/dist/tools/read/gas.js +333 -0
  84. package/dist/tools/read/gas.js.map +1 -0
  85. package/dist/tools/read/logs.d.ts +101 -0
  86. package/dist/tools/read/logs.d.ts.map +1 -0
  87. package/dist/tools/read/logs.js +211 -0
  88. package/dist/tools/read/logs.js.map +1 -0
  89. package/dist/tools/{signatures.d.ts → read/signatures.d.ts} +8 -4
  90. package/dist/tools/read/signatures.d.ts.map +1 -0
  91. package/dist/tools/{signatures.js → read/signatures.js} +4 -3
  92. package/dist/tools/read/signatures.js.map +1 -0
  93. package/dist/tools/read/signing.d.ts +27 -0
  94. package/dist/tools/read/signing.d.ts.map +1 -0
  95. package/dist/tools/read/signing.js +81 -0
  96. package/dist/tools/read/signing.js.map +1 -0
  97. package/dist/tools/sign/errors.d.ts +9 -0
  98. package/dist/tools/sign/errors.d.ts.map +1 -0
  99. package/dist/tools/sign/errors.js +29 -0
  100. package/dist/tools/sign/errors.js.map +1 -0
  101. package/dist/tools/sign/transactions.d.ts +141 -0
  102. package/dist/tools/sign/transactions.d.ts.map +1 -0
  103. package/dist/tools/sign/transactions.js +361 -0
  104. package/dist/tools/sign/transactions.js.map +1 -0
  105. package/dist/tools/sign/wallet.d.ts +50 -0
  106. package/dist/tools/sign/wallet.d.ts.map +1 -0
  107. package/dist/tools/sign/wallet.js +180 -0
  108. package/dist/tools/sign/wallet.js.map +1 -0
  109. package/dist/utils.d.ts +23 -2
  110. package/dist/utils.d.ts.map +1 -1
  111. package/dist/utils.js +48 -3
  112. package/dist/utils.js.map +1 -1
  113. package/dist/wallet-client.d.ts +34 -4
  114. package/dist/wallet-client.d.ts.map +1 -1
  115. package/dist/wallet-client.js +106 -27
  116. package/dist/wallet-client.js.map +1 -1
  117. package/dist/walletconnect.d.ts +100 -13
  118. package/dist/walletconnect.d.ts.map +1 -1
  119. package/dist/walletconnect.js +215 -50
  120. package/dist/walletconnect.js.map +1 -1
  121. package/package.json +12 -9
  122. package/src/anvil.ts +150 -271
  123. package/src/chain-meta.ts +16 -7
  124. package/src/chains.ts +14 -2
  125. package/src/clear-signing.ts +15 -9
  126. package/src/client.ts +0 -1
  127. package/src/context.ts +27 -0
  128. package/src/hosted.ts +11 -0
  129. package/src/http-server.ts +38 -8
  130. package/src/index.ts +20 -13
  131. package/src/kv-storage.ts +6 -3
  132. package/src/lib.ts +24 -0
  133. package/src/mcp-server.ts +47 -0
  134. package/src/oauth.ts +181 -69
  135. package/src/preview.ts +28 -7
  136. package/src/signing-requests.ts +198 -0
  137. package/src/tools/index.ts +78 -16
  138. package/src/tools/{advanced.ts → read/advanced.ts} +74 -43
  139. package/src/tools/{balance.ts → read/balance.ts} +20 -35
  140. package/src/tools/{contract-info.ts → read/contract-info.ts} +66 -146
  141. package/src/tools/{contract.ts → read/contract.ts} +4 -3
  142. package/src/tools/{ens.ts → read/ens.ts} +27 -34
  143. package/src/tools/read/gas.ts +443 -0
  144. package/src/tools/read/logs.ts +281 -0
  145. package/src/tools/{signatures.ts → read/signatures.ts} +5 -5
  146. package/src/tools/read/signing.ts +92 -0
  147. package/src/tools/sign/errors.ts +28 -0
  148. package/src/tools/sign/transactions.ts +479 -0
  149. package/src/tools/sign/wallet.ts +216 -0
  150. package/src/utils.ts +52 -3
  151. package/src/wallet-client.ts +107 -24
  152. package/src/walletconnect.ts +250 -48
  153. package/dist/tools/advanced.d.ts.map +0 -1
  154. package/dist/tools/advanced.js.map +0 -1
  155. package/dist/tools/balance.d.ts.map +0 -1
  156. package/dist/tools/balance.js.map +0 -1
  157. package/dist/tools/contract-info.d.ts.map +0 -1
  158. package/dist/tools/contract-info.js.map +0 -1
  159. package/dist/tools/contract.d.ts.map +0 -1
  160. package/dist/tools/contract.js.map +0 -1
  161. package/dist/tools/ens.d.ts +0 -119
  162. package/dist/tools/ens.d.ts.map +0 -1
  163. package/dist/tools/ens.js.map +0 -1
  164. package/dist/tools/gas.d.ts +0 -99
  165. package/dist/tools/gas.d.ts.map +0 -1
  166. package/dist/tools/gas.js +0 -181
  167. package/dist/tools/gas.js.map +0 -1
  168. package/dist/tools/logs.d.ts +0 -39
  169. package/dist/tools/logs.d.ts.map +0 -1
  170. package/dist/tools/logs.js +0 -230
  171. package/dist/tools/logs.js.map +0 -1
  172. package/dist/tools/signatures.d.ts.map +0 -1
  173. package/dist/tools/signatures.js.map +0 -1
  174. package/dist/tools/transactions.d.ts +0 -155
  175. package/dist/tools/transactions.d.ts.map +0 -1
  176. package/dist/tools/transactions.js +0 -365
  177. package/dist/tools/transactions.js.map +0 -1
  178. package/src/tools/gas.ts +0 -219
  179. package/src/tools/logs.ts +0 -293
  180. package/src/tools/transactions.ts +0 -456
@@ -1,41 +1,63 @@
1
1
  import { isAddress } from 'viem';
2
2
  import { z } from 'zod';
3
- import { getClientManager, SUPPORTED_CHAINS } from '../client.js';
4
- import { createTool, formatResponse } from '../utils.js';
5
- const contractCache = new Map();
6
- // No TTL - contracts are immutable, cache never expires
3
+ import { getClientManager, SUPPORTED_CHAINS } from '../../client.js';
4
+ import { createTool, formatResponse, TtlCache } from '../../utils.js';
5
+ // Source is immutable, but a proxy's implementation is not; an hour notices an upgrade.
6
+ const contractCache = new TtlCache(100, 60 * 60 * 1000);
7
7
  // Helper to generate cache key
8
8
  function getCacheKey(chainId, address) {
9
9
  return `${chainId}:${address.toLowerCase()}`;
10
10
  }
11
+ /** Etherscan's `result` for a query, or why there is none: it answers status "0" with the reason there. */
12
+ export async function etherscan(chainId, params, etherscanApiKey) {
13
+ const response = await fetch(`https://api.etherscan.io/v2/api?chainid=${chainId}&${params}&apikey=${etherscanApiKey}`, {
14
+ signal: AbortSignal.timeout(15_000)
15
+ });
16
+ if (!response.ok)
17
+ throw new Error(`Etherscan API error: HTTP ${response.status}`);
18
+ const data = (await response.json());
19
+ if (data.status !== '1') {
20
+ throw new Error(`Etherscan API error: ${typeof data.result === 'string' ? data.result : data.message || 'request failed'}`);
21
+ }
22
+ return data.result;
23
+ }
24
+ /** Etherscan's SourceCode is one file, a `{{…}}`-wrapped standard JSON input, or a plain map of files. */
25
+ function parseSourceFiles(info) {
26
+ const single = { [`${info.ContractName}.sol`]: info.SourceCode };
27
+ if (!info.SourceCode.startsWith('{'))
28
+ return single;
29
+ try {
30
+ const parsed = JSON.parse(info.SourceCode.startsWith('{{') ? info.SourceCode.slice(1, -1) : info.SourceCode);
31
+ const files = (parsed.sources ?? parsed);
32
+ return Object.fromEntries(Object.entries(files).map(([path, data]) => [path, typeof data === 'string' ? data : data.content || '']));
33
+ }
34
+ catch {
35
+ return single;
36
+ }
37
+ }
38
+ function fileStats(sourceFiles) {
39
+ return Object.entries(sourceFiles).map(([path, content]) => ({ path, lines: content.split('\n').length, size: content.length }));
40
+ }
11
41
  // Shared helper to fetch contract info from Etherscan (with caching)
12
42
  async function fetchContractInfo(chainId, address, etherscanApiKey) {
13
- // Check cache first
14
43
  const cacheKey = getCacheKey(chainId, address);
15
44
  const cached = contractCache.get(cacheKey);
16
- if (cached?.rawInfo) {
45
+ if (cached)
17
46
  return cached.rawInfo;
18
- }
19
- // Fetch from Etherscan API
20
- const sourceUrl = `https://api.etherscan.io/v2/api?chainid=${chainId}&module=contract&action=getsourcecode&address=${address}&apikey=${etherscanApiKey}`;
21
- const sourceResponse = await fetch(sourceUrl);
22
- const sourceData = (await sourceResponse.json());
23
- if (sourceData.status !== '1' || !sourceData.result || sourceData.result.length === 0) {
24
- throw new Error(`Etherscan API error: ${sourceData.message || 'No contract source found'}`);
25
- }
26
- const contractInfo = sourceData.result[0];
27
- // Cache the raw info immediately
47
+ const result = await etherscan(chainId, `module=contract&action=getsourcecode&address=${address}`, etherscanApiKey);
48
+ const contractInfo = result[0];
49
+ if (!contractInfo)
50
+ throw new Error('Etherscan API error: No contract source found');
28
51
  const isProxy = contractInfo.Proxy === '1';
29
52
  contractCache.set(cacheKey, {
30
53
  rawInfo: contractInfo,
31
- sourceFiles: {},
54
+ sourceFiles: contractInfo.SourceCode ? parseSourceFiles(contractInfo) : {},
32
55
  metadata: {
33
56
  contractName: contractInfo.ContractName,
34
57
  compilerVersion: contractInfo.CompilerVersion,
35
58
  isProxy,
36
59
  implementationAddress: isProxy ? contractInfo.Implementation : undefined
37
- },
38
- timestamp: Date.now()
60
+ }
39
61
  });
40
62
  return contractInfo;
41
63
  }
@@ -49,7 +71,7 @@ export default {
49
71
  .describe('Optional: specify which data to include. Options: "abi" (contract ABI), "implementationAbi" (proxy implementation ABI), "metadata" (name, verification), "compilation" (compiler, optimization), "creation" (creator, tx), "stats" (function/event counts). Defaults to ["abi", "metadata"] for minimal context usage.')
50
72
  }), async (args) => {
51
73
  const clientManager = getClientManager();
52
- const config = clientManager.config;
74
+ const config = clientManager.getConfig();
53
75
  if (!config.etherscanApiKey) {
54
76
  throw new Error('Etherscan API key is required for contract information retrieval. Use --etherscan-api-key or set ETHERSCAN_API_KEY environment variable.');
55
77
  }
@@ -122,21 +144,13 @@ export default {
122
144
  // Try to get creation info if requested
123
145
  if (includeSet.has('creation')) {
124
146
  try {
125
- const creationUrl = `https://api.etherscan.io/v2/api?chainid=${chainId}&module=contract&action=getcontractcreation&contractaddresses=${args.address}&apikey=${config.etherscanApiKey}`;
126
- const creationResponse = await fetch(creationUrl);
127
- const creationData = (await creationResponse.json());
128
- if (creationData.status === '1' && creationData.result && creationData.result.length > 0) {
129
- const result = creationData.result[0];
130
- if (result) {
131
- abiResult.creationInfo = {
132
- creator: result.contractCreator,
133
- transactionHash: result.txHash
134
- };
135
- }
147
+ const [creation] = await etherscan(chainId, `module=contract&action=getcontractcreation&contractaddresses=${args.address}`, config.etherscanApiKey);
148
+ if (creation) {
149
+ abiResult.creationInfo = { creator: creation.contractCreator, transactionHash: creation.txHash };
136
150
  }
137
151
  }
138
- catch {
139
- // Creation info is optional
152
+ catch (error) {
153
+ abiResult.creationError = error.message;
140
154
  }
141
155
  }
142
156
  // If it's a proxy and implementation ABI is requested, try to get it
@@ -168,13 +182,6 @@ export default {
168
182
  // Implementation ABI fetch failed, continue without it
169
183
  }
170
184
  }
171
- // Update cache with ABI (rawInfo already cached by fetchContractInfo)
172
- const cacheKey = getCacheKey(chainId, args.address);
173
- const existing = contractCache.get(cacheKey);
174
- contractCache.set(cacheKey, {
175
- ...existing,
176
- abi
177
- });
178
185
  return formatResponse(abiResult);
179
186
  }),
180
187
  get_contract_source_code: createTool('Get Contract Source Code', 'Retrieve verified contract source code from Etherscan. PROXY AWARE - automatically fetches implementation source for proxies.', z.object({
@@ -192,7 +199,7 @@ export default {
192
199
  .describe('Source code inclusion level: "full" (complete source), "summary" (file list with stats only), "none" (metadata only). Default: summary')
193
200
  }), async (args) => {
194
201
  const clientManager = getClientManager();
195
- const config = clientManager.config;
202
+ const config = clientManager.getConfig();
196
203
  if (!config.etherscanApiKey) {
197
204
  throw new Error('Etherscan API key is required. Use --etherscan-api-key or set ETHERSCAN_API_KEY environment variable.');
198
205
  }
@@ -218,41 +225,8 @@ export default {
218
225
  etherscanUrl: clientManager.explorerUrl(args.chain, `/address/${args.address}`)
219
226
  });
220
227
  }
221
- // Parse source code
222
- let sourceFiles = {};
223
- let sourceCodeString = contractInfo.SourceCode;
224
- // Handle multi-file sources (wrapped in {{ }} or [ ])
225
- if (sourceCodeString.startsWith('{{') || sourceCodeString.startsWith('[')) {
226
- try {
227
- // Remove outer braces/brackets if present
228
- if (sourceCodeString.startsWith('{{')) {
229
- sourceCodeString = sourceCodeString.slice(1, -1);
230
- }
231
- const parsed = JSON.parse(sourceCodeString);
232
- if (parsed.sources) {
233
- // Standard JSON format
234
- sourceFiles = Object.fromEntries(Object.entries(parsed.sources).map(([path, data]) => [path, data.content || '']));
235
- }
236
- else if (typeof parsed === 'object') {
237
- // Simple object format
238
- sourceFiles = parsed;
239
- }
240
- }
241
- catch {
242
- // If parsing fails, treat as single file
243
- sourceFiles = { [`${contractInfo.ContractName}.sol`]: sourceCodeString };
244
- }
245
- }
246
- else {
247
- // Single file source
248
- sourceFiles = { [`${contractInfo.ContractName}.sol`]: sourceCodeString };
249
- }
250
- // Calculate file stats for summary mode
251
- const fileStats = Object.entries(sourceFiles).map(([path, content]) => ({
252
- path,
253
- lines: content.split('\n').length,
254
- size: content.length
255
- }));
228
+ const sourceFiles = parseSourceFiles(contractInfo);
229
+ const files = fileStats(sourceFiles);
256
230
  const result = {
257
231
  success: true,
258
232
  chain: args.chain,
@@ -268,7 +242,7 @@ export default {
268
242
  licenseType: contractInfo.LicenseType,
269
243
  constructorArguments: contractInfo.ConstructorArguments,
270
244
  fileCount: Object.keys(sourceFiles).length,
271
- totalLines: fileStats.reduce((sum, stat) => sum + stat.lines, 0),
245
+ totalLines: files.reduce((sum, stat) => sum + stat.lines, 0),
272
246
  etherscanUrl: clientManager.explorerUrl(args.chain, `/address/${args.address}#code`)
273
247
  };
274
248
  // Add source based on includeSource parameter
@@ -276,7 +250,7 @@ export default {
276
250
  result.sourceFiles = sourceFiles;
277
251
  }
278
252
  else if (args.includeSource === 'summary') {
279
- result.files = fileStats;
253
+ result.files = files;
280
254
  }
281
255
  // 'none' mode: no source files added
282
256
  // If proxy and implementation requested, fetch implementation source
@@ -284,35 +258,8 @@ export default {
284
258
  try {
285
259
  const implInfo = await fetchContractInfo(chainId, contractInfo.Implementation, config.etherscanApiKey);
286
260
  if (implInfo && implInfo.SourceCode !== '') {
287
- // Parse implementation source code
288
- let implSourceFiles = {};
289
- let implSourceCodeString = implInfo.SourceCode;
290
- if (implSourceCodeString.startsWith('{{') || implSourceCodeString.startsWith('[')) {
291
- try {
292
- if (implSourceCodeString.startsWith('{{')) {
293
- implSourceCodeString = implSourceCodeString.slice(1, -1);
294
- }
295
- const parsed = JSON.parse(implSourceCodeString);
296
- if (parsed.sources) {
297
- implSourceFiles = Object.fromEntries(Object.entries(parsed.sources).map(([path, data]) => [path, data.content || '']));
298
- }
299
- else if (typeof parsed === 'object') {
300
- implSourceFiles = parsed;
301
- }
302
- }
303
- catch {
304
- implSourceFiles = { [`${implInfo.ContractName}.sol`]: implSourceCodeString };
305
- }
306
- }
307
- else {
308
- implSourceFiles = { [`${implInfo.ContractName}.sol`]: implSourceCodeString };
309
- }
310
- // Calculate implementation file stats
311
- const implFileStats = Object.entries(implSourceFiles).map(([path, content]) => ({
312
- path,
313
- lines: content.split('\n').length,
314
- size: content.length
315
- }));
261
+ const implSourceFiles = parseSourceFiles(implInfo);
262
+ const implFileStats = fileStats(implSourceFiles);
316
263
  const implResult = {
317
264
  address: contractInfo.Implementation,
318
265
  contractName: implInfo.ContractName,
@@ -333,15 +280,6 @@ export default {
333
280
  implResult.files = implFileStats;
334
281
  }
335
282
  result.implementation = implResult;
336
- // Update cache with implementation source (rawInfo already cached by fetchContractInfo)
337
- if (contractInfo.Implementation) {
338
- const implCacheKey = getCacheKey(chainId, contractInfo.Implementation);
339
- const existingImpl = contractCache.get(implCacheKey);
340
- contractCache.set(implCacheKey, {
341
- ...existingImpl,
342
- sourceFiles: implSourceFiles
343
- });
344
- }
345
283
  }
346
284
  }
347
285
  catch (error) {
@@ -352,13 +290,6 @@ export default {
352
290
  else if (isProxy && contractInfo.Implementation) {
353
291
  result.implementationAddress = contractInfo.Implementation;
354
292
  }
355
- // Update cache with main contract source (rawInfo already cached by fetchContractInfo)
356
- const cacheKey = getCacheKey(chainId, args.address);
357
- const existing = contractCache.get(cacheKey);
358
- contractCache.set(cacheKey, {
359
- ...existing,
360
- sourceFiles
361
- });
362
293
  return formatResponse(result);
363
294
  }),
364
295
  get_contract_source_file: createTool('Get Specific Contract Source File', 'Retrieve a specific source file from a cached contract. Use get_contract_source_code first to cache the contract.', z.object({
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-info.js","sourceRoot":"","sources":["../../../src/tools/read/contract-info.ts"],"names":[],"mappings":"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"}
@@ -5,21 +5,21 @@ declare const _default: {
5
5
  description: string;
6
6
  schema: z.ZodObject<{
7
7
  calls: z.ZodArray<z.ZodObject<{
8
- chain: z.ZodEnum<["arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost", ...("arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost")[]]>;
8
+ chain: z.ZodEnum<["mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost", ...("mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost")[]]>;
9
9
  contractAddress: z.ZodString;
10
10
  functionAbi: z.ZodString;
11
11
  args: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>, "many">>;
12
12
  blockNumber: z.ZodOptional<z.ZodString>;
13
13
  label: z.ZodOptional<z.ZodString>;
14
14
  }, "strip", z.ZodTypeAny, {
15
- chain: "arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
15
+ chain: "mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
16
16
  contractAddress: string;
17
17
  functionAbi: string;
18
18
  blockNumber?: string | undefined;
19
19
  args?: (string | number | boolean | null)[] | undefined;
20
20
  label?: string | undefined;
21
21
  }, {
22
- chain: "arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
22
+ chain: "mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
23
23
  contractAddress: string;
24
24
  functionAbi: string;
25
25
  blockNumber?: string | undefined;
@@ -28,7 +28,7 @@ declare const _default: {
28
28
  }>, "many">;
29
29
  }, "strip", z.ZodTypeAny, {
30
30
  calls: {
31
- chain: "arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
31
+ chain: "mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
32
32
  contractAddress: string;
33
33
  functionAbi: string;
34
34
  blockNumber?: string | undefined;
@@ -37,7 +37,7 @@ declare const _default: {
37
37
  }[];
38
38
  }, {
39
39
  calls: {
40
- chain: "arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
40
+ chain: "mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
41
41
  contractAddress: string;
42
42
  functionAbi: string;
43
43
  blockNumber?: string | undefined;
@@ -47,32 +47,34 @@ declare const _default: {
47
47
  }>;
48
48
  handler: (args: {
49
49
  calls: {
50
- chain: "arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
50
+ chain: "mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
51
51
  contractAddress: string;
52
52
  functionAbi: string;
53
53
  blockNumber?: string | undefined;
54
54
  args?: (string | number | boolean | null)[] | undefined;
55
55
  label?: string | undefined;
56
56
  }[];
57
- }) => Promise<import("../types.js").ToolResult>;
57
+ }, identity: string) => Promise<import("../../types.js").ToolResult>;
58
+ available: (() => boolean) | undefined;
58
59
  };
59
60
  is_contract: {
60
61
  title: string;
61
62
  description: string;
62
63
  schema: z.ZodObject<{
63
- chain: z.ZodEnum<["arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost", ...("arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost")[]]>;
64
+ chain: z.ZodEnum<["mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost", ...("mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost")[]]>;
64
65
  address: z.ZodString;
65
66
  }, "strip", z.ZodTypeAny, {
67
+ chain: "mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
66
68
  address: string;
67
- chain: "arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
68
69
  }, {
70
+ chain: "mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
69
71
  address: string;
70
- chain: "arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
71
72
  }>;
72
73
  handler: (args: {
74
+ chain: "mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
73
75
  address: string;
74
- chain: "arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
75
- }) => Promise<import("../types.js").ToolResult>;
76
+ }, identity: string) => Promise<import("../../types.js").ToolResult>;
77
+ available: (() => boolean) | undefined;
76
78
  };
77
79
  };
78
80
  export default _default;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../../src/tools/read/contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBvB,wBA4IC"}
@@ -1,7 +1,7 @@
1
1
  import { isAddress, parseAbiItem } from 'viem';
2
2
  import { z } from 'zod';
3
- import { getClientManager, SUPPORTED_CHAINS } from '../client.js';
4
- import { convertArgumentsToTypes, createTool, formatResponse } from '../utils.js';
3
+ import { getClientManager, SUPPORTED_CHAINS } from '../../client.js';
4
+ import { convertArgumentsToTypes, createTool, formatResponse, MAX_BATCH } from '../../utils.js';
5
5
  const ContractCallSchema = z.object({
6
6
  chain: z.enum(SUPPORTED_CHAINS).describe('Blockchain network (mainnet, base, arbitrum, polygon, optimism, celo, localhost)'),
7
7
  contractAddress: z.string().describe('Contract address to call (must be valid checksummed address)'),
@@ -19,6 +19,7 @@ export default {
19
19
  read_contract: createTool('Read Contract', 'Read state from contracts by calling view/pure functions. Nothing is sent on-chain and no wallet is involved. BATCH OPTIMIZED - use for reading contract state, token metadata.', z.object({
20
20
  calls: z
21
21
  .array(ContractCallSchema)
22
+ .max(MAX_BATCH)
22
23
  .describe('Array of contract function calls. Automatically batched by chain/block for optimal performance.')
23
24
  }), async (args) => {
24
25
  // Group by chain and blockNumber for efficient multicall
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../src/tools/read/contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ import { z } from 'zod';
2
+ declare const _default: {
3
+ resolve_ens_name: {
4
+ title: string;
5
+ description: string;
6
+ schema: z.ZodObject<{
7
+ chain: z.ZodDefault<z.ZodEnum<["mainnet", "linea", "base"]>>;
8
+ name: z.ZodString;
9
+ }, "strip", z.ZodTypeAny, {
10
+ chain: "mainnet" | "base" | "linea";
11
+ name: string;
12
+ }, {
13
+ name: string;
14
+ chain?: "mainnet" | "base" | "linea" | undefined;
15
+ }>;
16
+ handler: (args: {
17
+ chain: "mainnet" | "base" | "linea";
18
+ name: string;
19
+ }, identity: string) => Promise<import("../../types.js").ToolResult>;
20
+ available: (() => boolean) | undefined;
21
+ };
22
+ reverse_resolve_ens: {
23
+ title: string;
24
+ description: string;
25
+ schema: z.ZodObject<{
26
+ chain: z.ZodDefault<z.ZodEnum<["mainnet", "linea", "base"]>>;
27
+ address: z.ZodString;
28
+ }, "strip", z.ZodTypeAny, {
29
+ chain: "mainnet" | "base" | "linea";
30
+ address: string;
31
+ }, {
32
+ address: string;
33
+ chain?: "mainnet" | "base" | "linea" | undefined;
34
+ }>;
35
+ handler: (args: {
36
+ chain: "mainnet" | "base" | "linea";
37
+ address: string;
38
+ }, identity: string) => Promise<import("../../types.js").ToolResult>;
39
+ available: (() => boolean) | undefined;
40
+ };
41
+ get_ens_text_record: {
42
+ title: string;
43
+ description: string;
44
+ schema: z.ZodObject<{
45
+ chain: z.ZodDefault<z.ZodEnum<["mainnet", "linea", "base"]>>;
46
+ name: z.ZodString;
47
+ key: z.ZodString;
48
+ }, "strip", z.ZodTypeAny, {
49
+ chain: "mainnet" | "base" | "linea";
50
+ key: string;
51
+ name: string;
52
+ }, {
53
+ key: string;
54
+ name: string;
55
+ chain?: "mainnet" | "base" | "linea" | undefined;
56
+ }>;
57
+ handler: (args: {
58
+ chain: "mainnet" | "base" | "linea";
59
+ key: string;
60
+ name: string;
61
+ }, identity: string) => Promise<import("../../types.js").ToolResult>;
62
+ available: (() => boolean) | undefined;
63
+ };
64
+ get_ens_avatar: {
65
+ title: string;
66
+ description: string;
67
+ schema: z.ZodObject<{
68
+ chain: z.ZodDefault<z.ZodEnum<["mainnet", "linea", "base"]>>;
69
+ name: z.ZodString;
70
+ }, "strip", z.ZodTypeAny, {
71
+ chain: "mainnet" | "base" | "linea";
72
+ name: string;
73
+ }, {
74
+ name: string;
75
+ chain?: "mainnet" | "base" | "linea" | undefined;
76
+ }>;
77
+ handler: (args: {
78
+ chain: "mainnet" | "base" | "linea";
79
+ name: string;
80
+ }, identity: string) => Promise<import("../../types.js").ToolResult>;
81
+ available: (() => boolean) | undefined;
82
+ };
83
+ batch_resolve_ens_names: {
84
+ title: string;
85
+ description: string;
86
+ schema: z.ZodObject<{
87
+ chain: z.ZodDefault<z.ZodEnum<["mainnet", "linea", "base"]>>;
88
+ names: z.ZodArray<z.ZodString, "many">;
89
+ }, "strip", z.ZodTypeAny, {
90
+ chain: "mainnet" | "base" | "linea";
91
+ names: string[];
92
+ }, {
93
+ names: string[];
94
+ chain?: "mainnet" | "base" | "linea" | undefined;
95
+ }>;
96
+ handler: (args: {
97
+ chain: "mainnet" | "base" | "linea";
98
+ names: string[];
99
+ }, identity: string) => Promise<import("../../types.js").ToolResult>;
100
+ available: (() => boolean) | undefined;
101
+ };
102
+ };
103
+ export default _default;
104
+ //# sourceMappingURL=ens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ens.d.ts","sourceRoot":"","sources":["../../../src/tools/read/ens.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2LvB,wBAiPC"}