web3-tools-mcp 1.5.0 → 2.0.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 (109) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/README.md +346 -164
  3. package/dist/anvil.d.ts +1 -1
  4. package/dist/anvil.d.ts.map +1 -1
  5. package/dist/anvil.js +11 -9
  6. package/dist/anvil.js.map +1 -1
  7. package/dist/chain-meta.d.ts.map +1 -1
  8. package/dist/chain-meta.js +7 -3
  9. package/dist/chain-meta.js.map +1 -1
  10. package/dist/chains.d.ts +960 -0
  11. package/dist/chains.d.ts.map +1 -0
  12. package/dist/chains.js +108 -0
  13. package/dist/chains.js.map +1 -0
  14. package/dist/client.d.ts +10 -1717
  15. package/dist/client.d.ts.map +1 -1
  16. package/dist/client.js +33 -216
  17. package/dist/client.js.map +1 -1
  18. package/dist/http-server.d.ts +18 -0
  19. package/dist/http-server.d.ts.map +1 -0
  20. package/dist/http-server.js +89 -0
  21. package/dist/http-server.js.map +1 -0
  22. package/dist/index.js +77 -32
  23. package/dist/index.js.map +1 -1
  24. package/dist/kv-storage.d.ts +23 -0
  25. package/dist/kv-storage.d.ts.map +1 -0
  26. package/dist/kv-storage.js +69 -0
  27. package/dist/kv-storage.js.map +1 -0
  28. package/dist/oauth.d.ts +31 -0
  29. package/dist/oauth.d.ts.map +1 -0
  30. package/dist/oauth.js +227 -0
  31. package/dist/oauth.js.map +1 -0
  32. package/dist/preview.d.ts.map +1 -1
  33. package/dist/preview.js +14 -4
  34. package/dist/preview.js.map +1 -1
  35. package/dist/tools/advanced.d.ts +4 -4
  36. package/dist/tools/advanced.d.ts.map +1 -1
  37. package/dist/tools/advanced.js +228 -247
  38. package/dist/tools/advanced.js.map +1 -1
  39. package/dist/tools/balance.d.ts +1 -1
  40. package/dist/tools/balance.d.ts.map +1 -1
  41. package/dist/tools/balance.js +97 -103
  42. package/dist/tools/balance.js.map +1 -1
  43. package/dist/tools/contract-info.d.ts +3 -3
  44. package/dist/tools/contract-info.d.ts.map +1 -1
  45. package/dist/tools/contract-info.js +150 -161
  46. package/dist/tools/contract-info.js.map +1 -1
  47. package/dist/tools/contract.d.ts +4 -4
  48. package/dist/tools/contract.d.ts.map +1 -1
  49. package/dist/tools/contract.js +91 -110
  50. package/dist/tools/contract.js.map +1 -1
  51. package/dist/tools/ens.d.ts +6 -6
  52. package/dist/tools/ens.d.ts.map +1 -1
  53. package/dist/tools/ens.js +239 -297
  54. package/dist/tools/ens.js.map +1 -1
  55. package/dist/tools/gas.d.ts +4 -4
  56. package/dist/tools/gas.d.ts.map +1 -1
  57. package/dist/tools/gas.js +90 -138
  58. package/dist/tools/gas.js.map +1 -1
  59. package/dist/tools/index.d.ts +1 -1
  60. package/dist/tools/index.d.ts.map +1 -1
  61. package/dist/tools/logs.d.ts +1 -1
  62. package/dist/tools/logs.d.ts.map +1 -1
  63. package/dist/tools/logs.js +36 -37
  64. package/dist/tools/logs.js.map +1 -1
  65. package/dist/tools/signatures.d.ts.map +1 -1
  66. package/dist/tools/signatures.js +67 -89
  67. package/dist/tools/signatures.js.map +1 -1
  68. package/dist/tools/transactions.d.ts +48 -4
  69. package/dist/tools/transactions.d.ts.map +1 -1
  70. package/dist/tools/transactions.js +228 -44
  71. package/dist/tools/transactions.js.map +1 -1
  72. package/dist/types.d.ts +2 -1
  73. package/dist/types.d.ts.map +1 -1
  74. package/dist/utils.d.ts +3 -8
  75. package/dist/utils.d.ts.map +1 -1
  76. package/dist/utils.js +36 -98
  77. package/dist/utils.js.map +1 -1
  78. package/dist/wallet-client.d.ts +11 -1
  79. package/dist/wallet-client.d.ts.map +1 -1
  80. package/dist/wallet-client.js +27 -9
  81. package/dist/wallet-client.js.map +1 -1
  82. package/dist/walletconnect.d.ts +52 -0
  83. package/dist/walletconnect.d.ts.map +1 -0
  84. package/dist/walletconnect.js +221 -0
  85. package/dist/walletconnect.js.map +1 -0
  86. package/package.json +21 -9
  87. package/src/anvil.ts +15 -18
  88. package/src/chain-meta.ts +8 -4
  89. package/src/chains.ts +145 -0
  90. package/src/client.ts +39 -252
  91. package/src/http-server.ts +117 -0
  92. package/src/index.ts +98 -49
  93. package/src/kv-storage.ts +83 -0
  94. package/src/oauth.ts +270 -0
  95. package/src/preview.ts +15 -14
  96. package/src/tools/advanced.ts +195 -213
  97. package/src/tools/balance.ts +103 -108
  98. package/src/tools/contract-info.ts +163 -184
  99. package/src/tools/contract.ts +123 -144
  100. package/src/tools/ens.ts +290 -345
  101. package/src/tools/gas.ts +122 -170
  102. package/src/tools/index.ts +2 -2
  103. package/src/tools/logs.ts +45 -43
  104. package/src/tools/signatures.ts +68 -86
  105. package/src/tools/transactions.ts +283 -50
  106. package/src/types.ts +2 -15
  107. package/src/utils.ts +56 -127
  108. package/src/wallet-client.ts +31 -9
  109. package/src/walletconnect.ts +269 -0
@@ -1,10 +1,16 @@
1
+ import { randomBytes } from 'node:crypto';
2
+ import qrcode from 'qrcode-terminal';
3
+ import { encodeFunctionData, isAddress, parseAbiItem, parseUnits, toHex } from 'viem';
1
4
  import { z } from 'zod';
2
- import { getWalletClient } from '../wallet-client.js';
3
5
  import { getClientManager, SUPPORTED_CHAINS } from '../client.js';
4
- import { encodeFunctionData, isAddress, parseAbiItem, parseUnits } from 'viem';
5
- import { randomBytes } from 'node:crypto';
6
6
  import { buildTxPreview } from '../preview.js';
7
7
  import { createTool, formatResponse } from '../utils.js';
8
+ import { getWalletClient } from '../wallet-client.js';
9
+ import { getPhoneSigner, pairingLinks } from '../walletconnect.js';
10
+ /** Render a pairing URI as an ASCII QR, so it can be scanned straight from the chat. */
11
+ function qrFor(uri) {
12
+ return new Promise((resolve) => qrcode.generate(uri, { small: true }, resolve));
13
+ }
8
14
  function generateRequestId() {
9
15
  return randomBytes(16).toString('hex');
10
16
  }
@@ -14,13 +20,38 @@ function requireAddress(label, address) {
14
20
  return address;
15
21
  }
16
22
  function explorerTxUrl(chain, txHash) {
17
- return `https://${getClientManager().getEtherscanDomain(chain)}/tx/${txHash}`;
23
+ return getClientManager().explorerUrl(chain, `/tx/${txHash}`);
18
24
  }
19
25
  /**
20
- * Send a transaction for signing, with a decoded + simulated preview attached so the
21
- * wallet page can show what it actually does instead of raw calldata.
26
+ * Which wallet to send the request to. Deliberately required on every signing tool: both
27
+ * signers can be live at once, and only the person holding the devices knows which one is
28
+ * actually to hand. Guessing strands the request in front of a screen nobody is looking at.
29
+ *
30
+ * Either way the transaction is decoded and simulated first — the wallet shows its own
31
+ * summary, so the preview is returned to the caller too, to be read before approving.
22
32
  */
23
- async function requestSignature(chain, tx) {
33
+ const SignWithSchema = z
34
+ .enum(['phone', 'browser'])
35
+ .describe('Where to approve this: "phone" for a paired WalletConnect wallet, "browser" for the wallet signing page. Ask the user which they want — do not assume, even when only one is connected. Call wallet_status first: it says which signers are ready, and when no signing page is open it returns walletUrl. In that case give the user that link, ask them to open it and connect a wallet, and only call this once they confirm — a signing request cannot reach a page nobody has open.');
36
+ async function signOnPhone(chain, tx) {
37
+ const phone = getPhoneSigner();
38
+ if (!phone) {
39
+ throw new Error('Phone signing is not configured on this server. Set WALLETCONNECT_PROJECT_ID, or sign in the browser instead.');
40
+ }
41
+ if (!(await phone.isPaired())) {
42
+ throw new Error('No phone wallet is paired. Run pair_phone_wallet and scan the QR, or sign in the browser instead.');
43
+ }
44
+ const session = await phone.session();
45
+ const from = session?.accounts[0];
46
+ const preview = await buildTxPreview(chain, tx, from);
47
+ const txHash = await phone.request(chain, 'eth_sendTransaction', [
48
+ { from, to: tx.to, value: tx.value ?? '0x0', ...(tx.data && { data: tx.data }) }
49
+ ]);
50
+ return { txHash, preview, signedWith: 'phone' };
51
+ }
52
+ async function requestSignature(chain, tx, signWith) {
53
+ if (signWith === 'phone')
54
+ return signOnPhone(chain, tx);
24
55
  const wallet = getWalletClient();
25
56
  await wallet.waitForSigner();
26
57
  const preview = await buildTxPreview(chain, tx, wallet.getAddress());
@@ -32,34 +63,64 @@ async function requestSignature(chain, tx) {
32
63
  data: { to: tx.to, value: tx.value ?? '0x0', ...(tx.data && { data: tx.data }) },
33
64
  preview
34
65
  }),
35
- preview
66
+ preview,
67
+ signedWith: 'browser'
68
+ };
69
+ }
70
+ /** What the caller should see about a transaction before it is approved. */
71
+ function previewSummary(preview) {
72
+ return {
73
+ action: preview.decoded?.intent ?? preview.decoded?.functionName,
74
+ protocol: preview.decoded?.protocol ?? preview.toLabel,
75
+ details: preview.decoded?.fields.map((f) => `${f.name}: ${f.value}${f.warning ? ` (${f.warning})` : ''}`),
76
+ simulation: preview.simulation
36
77
  };
37
78
  }
79
+ /**
80
+ * WalletConnect rejects with a plain `{ code, message }` rather than an Error, which
81
+ * String() renders as "[object Object]" — the reason a wallet gave for refusing is the
82
+ * whole point of the message, so dig it out.
83
+ */
84
+ function describeError(error) {
85
+ if (error instanceof Error)
86
+ return error.message;
87
+ if (error && typeof error === 'object') {
88
+ const { message, code, reason } = error;
89
+ const text = message ?? reason;
90
+ if (text)
91
+ return code === undefined ? text : `${text} (code ${code})`;
92
+ return JSON.stringify(error);
93
+ }
94
+ return String(error);
95
+ }
38
96
  function failure(error, message) {
97
+ console.error('[Transaction]', message, '—', describeError(error));
39
98
  return formatResponse({
40
99
  success: false,
41
- error: error instanceof Error ? error.message : String(error),
100
+ error: describeError(error),
42
101
  message
43
102
  });
44
103
  }
45
104
  export default {
46
- send_native_token: createTool('Send Native Token', 'Send native tokens (ETH, MATIC, BNB, etc.) to an address. Simulates the transaction, then opens the browser wallet for approval.', z.object({
105
+ send_native_token: createTool('Send Native Token', 'Send native tokens (ETH, MATIC, BNB, etc.) to an address. Simulates the transaction, then sends it to the signer you choose for approval.', z.object({
47
106
  chain: z.enum(SUPPORTED_CHAINS).describe('Blockchain network'),
48
107
  to: z.string().describe('Recipient address'),
49
108
  amount: z.string().describe('Amount in native token (e.g., "0.1" for 0.1 ETH)'),
50
- data: z.string().optional().describe('Optional hex-encoded data to include with transaction')
109
+ data: z.string().optional().describe('Optional hex-encoded data to include with transaction'),
110
+ signWith: SignWithSchema
51
111
  }), async (args) => {
52
112
  try {
53
113
  const to = requireAddress('recipient address', args.to);
54
114
  const value = `0x${parseUnits(args.amount, 18).toString(16)}`;
55
- const { txHash, preview } = await requestSignature(args.chain, { to, value, data: args.data });
115
+ const { txHash, preview, signedWith } = await requestSignature(args.chain, { to, value, data: args.data }, args.signWith);
56
116
  return formatResponse({
57
117
  success: true,
58
118
  chain: args.chain,
59
119
  transactionHash: txHash,
60
120
  to,
61
121
  amount: args.amount,
62
- simulation: preview.simulation,
122
+ signedWith,
123
+ preview: previewSummary(preview),
63
124
  explorerUrl: explorerTxUrl(args.chain, txHash)
64
125
  });
65
126
  }
@@ -67,12 +128,13 @@ export default {
67
128
  return failure(error, 'Transaction failed or was rejected');
68
129
  }
69
130
  }),
70
- send_erc20_token: createTool('Send ERC20 Token', 'Send ERC20 tokens to an address. Simulates the transfer, then opens the browser wallet for approval.', z.object({
131
+ send_erc20_token: createTool('Send ERC20 Token', 'Send ERC20 tokens to an address. Simulates the transfer, then sends it to the signer you choose for approval.', z.object({
71
132
  chain: z.enum(SUPPORTED_CHAINS).describe('Blockchain network'),
72
133
  tokenAddress: z.string().describe('ERC20 token contract address'),
73
134
  to: z.string().describe('Recipient address'),
74
135
  amount: z.string().describe('Amount in token units (e.g., "100" for 100 USDC)'),
75
- decimals: z.number().optional().default(18).describe('Token decimals (default: 18)')
136
+ decimals: z.number().optional().default(18).describe('Token decimals (default: 18)'),
137
+ signWith: SignWithSchema
76
138
  }), async (args) => {
77
139
  try {
78
140
  const tokenAddress = requireAddress('token address', args.tokenAddress);
@@ -81,7 +143,11 @@ export default {
81
143
  abi: [parseAbiItem('function transfer(address to, uint256 amount)')],
82
144
  args: [to, parseUnits(args.amount, args.decimals ?? 18)]
83
145
  });
84
- const { txHash, preview } = await requestSignature(args.chain, { to: tokenAddress, data, value: '0x0' });
146
+ const { txHash, preview, signedWith } = await requestSignature(args.chain, {
147
+ to: tokenAddress,
148
+ data,
149
+ value: '0x0'
150
+ }, args.signWith);
85
151
  return formatResponse({
86
152
  success: true,
87
153
  chain: args.chain,
@@ -89,7 +155,8 @@ export default {
89
155
  tokenAddress,
90
156
  to,
91
157
  amount: args.amount,
92
- simulation: preview.simulation,
158
+ signedWith,
159
+ preview: previewSummary(preview),
93
160
  explorerUrl: explorerTxUrl(args.chain, txHash)
94
161
  });
95
162
  }
@@ -97,7 +164,7 @@ export default {
97
164
  return failure(error, 'Token transfer failed or was rejected');
98
165
  }
99
166
  }),
100
- call_contract_write: createTool('Call Contract (Write)', 'Call a state-changing contract function. Simulates the call, then opens the browser wallet for approval.', z.object({
167
+ write_contract: createTool('Write Contract', 'Send a transaction that calls a state-changing contract function. Simulates it first, then asks your wallet to approve. Costs gas.', z.object({
101
168
  chain: z.enum(SUPPORTED_CHAINS).describe('Blockchain network'),
102
169
  contractAddress: z.string().describe('Contract address'),
103
170
  functionAbi: z.string().describe('Function ABI definition (e.g., "function transfer(address to, uint256 amount)")'),
@@ -105,7 +172,8 @@ export default {
105
172
  .array(z.union([z.string(), z.number(), z.boolean()]))
106
173
  .optional()
107
174
  .describe('Function arguments in order matching the ABI signature'),
108
- value: z.string().optional().describe('Optional native value to send with transaction (in ETH units, e.g., "0.1")')
175
+ value: z.string().optional().describe('Optional native value to send with transaction (in ETH units, e.g., "0.1")'),
176
+ signWith: SignWithSchema
109
177
  }), async (args) => {
110
178
  try {
111
179
  const contractAddress = requireAddress('contract address', args.contractAddress);
@@ -116,14 +184,19 @@ export default {
116
184
  args: (args.args || [])
117
185
  });
118
186
  const value = args.value ? `0x${parseUnits(args.value, 18).toString(16)}` : '0x0';
119
- const { txHash, preview } = await requestSignature(args.chain, { to: contractAddress, data, value });
187
+ const { txHash, preview, signedWith } = await requestSignature(args.chain, {
188
+ to: contractAddress,
189
+ data,
190
+ value
191
+ }, args.signWith);
120
192
  return formatResponse({
121
193
  success: true,
122
194
  chain: args.chain,
123
195
  transactionHash: txHash,
124
196
  contractAddress,
125
197
  functionName: abiItem.name,
126
- simulation: preview.simulation,
198
+ signedWith,
199
+ preview: previewSummary(preview),
127
200
  explorerUrl: explorerTxUrl(args.chain, txHash)
128
201
  });
129
202
  }
@@ -131,20 +204,34 @@ export default {
131
204
  return failure(error, 'Contract call failed or was rejected');
132
205
  }
133
206
  }),
134
- sign_message: createTool('Sign Message', 'Sign a message with the connected wallet. Opens browser wallet for approval.', z.object({
135
- message: z.string().describe('Message to sign')
207
+ sign_message: createTool('Sign Message', 'Sign a message with your wallet, on whichever signer you choose.', z.object({
208
+ message: z.string().describe('Message to sign'),
209
+ signWith: SignWithSchema
136
210
  }), async (args) => {
137
211
  try {
138
- const signature = await getWalletClient().request({
139
- id: generateRequestId(),
140
- type: 'sign_message',
141
- chain: 'any',
142
- data: { message: args.message }
143
- });
212
+ let signature;
213
+ if (args.signWith === 'phone') {
214
+ const phone = getPhoneSigner();
215
+ const session = await phone?.session();
216
+ if (!session) {
217
+ throw new Error('No phone wallet is paired. Run pair_phone_wallet and scan the QR, or sign in the browser instead.');
218
+ }
219
+ signature = await phone.request('mainnet', 'personal_sign', [toHex(args.message), session.accounts[0]]);
220
+ }
221
+ else {
222
+ await getWalletClient().waitForSigner();
223
+ signature = await getWalletClient().request({
224
+ id: generateRequestId(),
225
+ type: 'sign_message',
226
+ chain: 'any',
227
+ data: { message: args.message }
228
+ });
229
+ }
144
230
  return formatResponse({
145
231
  success: true,
146
232
  message: args.message,
147
233
  signature,
234
+ signedWith: args.signWith,
148
235
  signatureType: 'personal_sign'
149
236
  });
150
237
  }
@@ -152,26 +239,123 @@ export default {
152
239
  return failure(error, 'Message signing failed or was rejected');
153
240
  }
154
241
  }),
155
- wallet_status: createTool('Wallet Status', 'Check if a wallet is connected to the browser interface', z.object({}), async () => {
156
- const wallet = getWalletClient();
242
+ pair_phone_wallet: createTool('Pair Phone Wallet', 'Pair a phone wallet over WalletConnect, so transactions are signed on the phone instead of in a browser. ' +
243
+ 'Returns a QR to scan plus links that open a wallet directly — show those to the user as clickable links. ' +
244
+ 'Requires a WalletConnect project id.', z.object({
245
+ chains: z
246
+ .array(z.enum(SUPPORTED_CHAINS))
247
+ .optional()
248
+ .describe('Chains to request access to (defaults to every supported network)'),
249
+ wallet: z.string().optional().describe('Name of the wallet to open, e.g. "rabby" — omit to list the common ones'),
250
+ agent: z
251
+ .string()
252
+ .optional()
253
+ .describe('Who is asking, shown in the wallet approval dialog, e.g. "Claude Code". Say who you actually are — ' +
254
+ 'the user reads this when deciding whether to grant signing access.')
255
+ }), async (args) => {
256
+ const phone = getPhoneSigner();
257
+ if (!phone) {
258
+ return formatResponse({
259
+ success: false,
260
+ message: 'No WalletConnect project id configured. Get a free one at https://dashboard.walletconnect.com and pass --walletconnect-project-id or set WALLETCONNECT_PROJECT_ID.'
261
+ });
262
+ }
263
+ try {
264
+ const existing = await phone.session();
265
+ if (existing) {
266
+ return formatResponse({
267
+ alreadyPaired: true,
268
+ address: existing.accounts[0],
269
+ wallet: existing.peer,
270
+ message: 'A phone wallet is already paired. Transactions will be sent to it.'
271
+ });
272
+ }
273
+ const chains = (args.chains ?? SUPPORTED_CHAINS.filter((c) => c !== 'localhost'));
274
+ const uri = await phone.pair(chains, args.agent);
275
+ const projectId = getClientManager().getConfig().walletConnectProjectId;
276
+ return formatResponse({
277
+ qr: await qrFor(uri),
278
+ uri,
279
+ // For an agent running on the phone itself there is nothing to scan, so hand over
280
+ // links that open the wallet directly. `wallet` narrows the list to one.
281
+ openOnThisDevice: await pairingLinks(projectId, uri, args.wallet),
282
+ // Approving grants an agent standing permission to request signatures, so the
283
+ // wallet dialog names the agent rather than implying a website is connecting.
284
+ shownInWallet: args.agent ? `${args.agent} via web3-tools-mcp` : 'web3-tools-mcp (AI agent)',
285
+ howToPresent: 'Render each openOnThisDevice entry as a clickable link labelled with the wallet name, and show the ' +
286
+ 'uri as copyable text. On a phone that tap is the whole flow. Show the QR only when the user is on a ' +
287
+ 'different device from their wallet — it is unreadable inline on the phone that holds the wallet. ' +
288
+ 'If a link does nothing, some clients drop custom schemes like rabby://, so tell them to paste the uri.',
289
+ message: 'On another device: scan the QR with your wallet. On this device: tap one of the openOnThisDevice ' +
290
+ 'links, or copy the uri and paste it into your wallet under WalletConnect — every wallet supports ' +
291
+ 'that, and it is the one that always works. Then run wallet_status to confirm.'
292
+ });
293
+ }
294
+ catch (error) {
295
+ return failure(error, 'Could not start WalletConnect pairing');
296
+ }
297
+ }),
298
+ disconnect_phone_wallet: createTool('Disconnect Phone Wallet', 'End every WalletConnect session and drop the pairings underneath them. Use before pairing a different wallet, or to clear out attempts that were never approved.', z.object({}), async () => {
299
+ const phone = getPhoneSigner();
300
+ if (!phone) {
301
+ return formatResponse({ success: false, message: 'No WalletConnect project id configured — nothing to disconnect.' });
302
+ }
157
303
  try {
158
- await wallet.connect();
304
+ const before = await phone.sessions();
305
+ const removed = await phone.disconnectAll();
306
+ return formatResponse({
307
+ success: true,
308
+ disconnectedSessions: removed.sessions,
309
+ droppedPairings: removed.pairings,
310
+ wallets: before.map((session) => `${session.peer ?? 'unknown wallet'} (${session.accounts[0]})`),
311
+ message: removed.sessions || removed.pairings
312
+ ? 'Disconnected. Transactions fall back to the browser wallet until a phone is paired again.'
313
+ : 'Nothing was connected.'
314
+ });
159
315
  }
160
316
  catch (error) {
161
- return failure(error, 'Wallet relay unavailable');
317
+ return failure(error, 'Could not disconnect the phone wallet');
162
318
  }
163
- if (!wallet.isConnected())
319
+ }),
320
+ wallet_status: createTool('Wallet Status', 'Report every signer and whether it is ready, so a signing tool can be given the right signWith.', z.object({}), async () => {
321
+ // Both signers are reported, never just the first one found: signWith makes this a
322
+ // choice the user owns, so the agent has to see everything available.
323
+ const phone = getPhoneSigner();
324
+ const phoneSession = await phone?.session().catch(() => undefined);
325
+ const wallet = getWalletClient();
326
+ const relayError = await wallet
327
+ .connect()
328
+ .then(() => undefined)
329
+ .catch((error) => describeError(error));
330
+ const browserReady = !relayError && wallet.isConnected();
331
+ // Only raise a tab when there is no other way to sign — a status check should not
332
+ // open a window at someone who is about to use their phone.
333
+ if (!browserReady && !phoneSession && !relayError)
164
334
  wallet.openBrowser();
165
- return formatResponse({
166
- connected: wallet.isConnected(),
167
- address: wallet.getAddress(),
168
- walletUrl: wallet.getUrl(),
169
- openTab: wallet.getPageUrl(),
170
- hosted: wallet.isRemote,
171
- message: wallet.isConnected()
172
- ? 'Wallet is connected and ready to sign transactions'
173
- : `No wallet connected. Open ${wallet.getUrl()} and connect your wallet.`
174
- });
335
+ const signers = {
336
+ phone: phoneSession
337
+ ? { ready: true, address: phoneSession.accounts[0], wallet: phoneSession.peer, chains: phoneSession.chains }
338
+ : {
339
+ ready: false,
340
+ reason: phone
341
+ ? 'No phone paired. Run pair_phone_wallet and scan the QR.'
342
+ : 'Phone signing is not configured — set WALLETCONNECT_PROJECT_ID.'
343
+ },
344
+ browser: browserReady
345
+ ? { ready: true, address: wallet.getAddress(), openTab: wallet.getPageUrl() }
346
+ : {
347
+ ready: false,
348
+ reason: relayError ?? 'No signing page is open.',
349
+ walletUrl: relayError ? undefined : wallet.getUrl()
350
+ }
351
+ };
352
+ const ready = [phoneSession ? 'phone' : undefined, browserReady ? 'browser' : undefined].filter(Boolean);
353
+ const message = ready.length === 2
354
+ ? 'Both signers are ready. Ask the user which one to use, then pass it as signWith.'
355
+ : ready.length === 1
356
+ ? `Only ${ready[0]} is ready. Confirm with the user before signing there, or set the other one up.`
357
+ : `No signer is ready. For a browser, give the user this link and ask them to open it and connect a wallet: ${signers.browser.walletUrl ?? '(relay unavailable)'}. For a phone, run pair_phone_wallet.`;
358
+ return formatResponse({ ready, signers, message });
175
359
  })
176
360
  };
177
361
  //# sourceMappingURL=transactions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../src/tools/transactions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../src/tools/transactions.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -10,8 +10,9 @@ export interface Config {
10
10
  infuraApiKey?: string;
11
11
  customRpcUrls?: Record<string, string>;
12
12
  hypersyncApiKey?: string;
13
+ walletConnectProjectId?: string;
13
14
  }
14
- export type ChainName = 'mainnet' | 'arbitrum' | 'avalanche' | 'base' | 'bnb' | 'gnosis' | 'sonic' | 'optimism' | 'polygon' | 'zksync' | 'linea' | 'unichain' | 'localhost';
15
+ export type { ChainName } from './chains.js';
15
16
  export interface ToolResult {
16
17
  [x: string]: unknown;
17
18
  content: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAGxC,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,SAAS,YAAY,EAAE,CAAA;CAChC;AAGD,MAAM,WAAW,MAAM;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAGD,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,UAAU,GACV,WAAW,GACX,MAAM,GACN,KAAK,GACL,QAAQ,GACR,OAAO,GACP,UAAU,GACV,SAAS,GACT,QAAQ,GACR,OAAO,GACP,UAAU,GACV,WAAW,CAAA;AAGf,MAAM,WAAW,UAAU;IACzB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACpB,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;KACb,CAAC,CAAA;CACH"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAGxC,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,SAAS,YAAY,EAAE,CAAA;CAChC;AAGD,MAAM,WAAW,MAAM;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAChC;AAED,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAG5C,MAAM,WAAW,UAAU;IACzB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACpB,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;KACb,CAAC,CAAA;CACH"}
package/dist/utils.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { AbiParameter } from 'viem';
2
- import type { ToolResult } from './types.js';
3
- import { z } from 'zod';
2
+ import type { z } from 'zod';
3
+ import type { Config, ToolResult } from './types.js';
4
4
  export declare function createTool<T extends z.ZodType>(title: string, description: string, schema: T, handler: (args: z.infer<T>) => Promise<ToolResult>): {
5
5
  title: string;
6
6
  description: string;
@@ -24,12 +24,7 @@ export declare function summarizeTrace(trace: unknown): {
24
24
  export declare function convertArgumentsToTypes(args: (string | number | boolean | null)[], abiInputs: readonly AbiParameter[]): unknown[];
25
25
  export declare function convertEventArgsToTypes(eventArgs: Record<string, unknown>, abiInputs: readonly AbiParameter[]): Record<string, unknown>;
26
26
  export declare function formatResponse(data: unknown): ToolResult;
27
- export declare function parseCommandLineArgs(): {
28
- etherscanApiKey?: string;
29
- alchemyApiKey?: string;
30
- infuraApiKey?: string;
31
- customRpcUrls?: Record<string, string>;
32
- hypersyncApiKey?: string;
27
+ export declare function parseCommandLineArgs(): Config & {
33
28
  showHelp?: boolean;
34
29
  };
35
30
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,wBAAgB,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAC5C,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC;;;;oBAAlC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC;EAQnD;AAGD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAe3D;AAID,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAgCzH;AAqDD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,EAC1C,SAAS,EAAE,SAAS,YAAY,EAAE,GACjC,OAAO,EAAE,CAiDX;AAGD,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,SAAS,EAAE,SAAS,YAAY,EAAE,GACjC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA2DzB;AAGD,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAUxD;AAGD,wBAAgB,oBAAoB,IAAI;IACtC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CA2CA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACxC,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAGpD,wBAAgB,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAC5C,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC;;;;oBAAlC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC;EAQnD;AAGD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAe3D;AAGD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAgCzH;AAgFD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,EAC1C,SAAS,EAAE,SAAS,YAAY,EAAE,GACjC,OAAO,EAAE,CAYX;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,SAAS,EAAE,SAAS,YAAY,EAAE,GACjC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB;AAGD,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAUxD;AAGD,wBAAgB,oBAAoB,IAAI,MAAM,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAqCtE"}