web3-tools-mcp 1.5.0 → 1.6.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.
- package/README.md +90 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +4 -2
- package/dist/client.js.map +1 -1
- package/dist/http-server.d.ts +12 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +74 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.js +37 -13
- package/dist/index.js.map +1 -1
- package/dist/kv-storage.d.ts +23 -0
- package/dist/kv-storage.d.ts.map +1 -0
- package/dist/kv-storage.js +69 -0
- package/dist/kv-storage.js.map +1 -0
- package/dist/preview.d.ts.map +1 -1
- package/dist/preview.js +12 -2
- package/dist/preview.js.map +1 -1
- package/dist/tools/transactions.d.ts +14 -0
- package/dist/tools/transactions.d.ts.map +1 -1
- package/dist/tools/transactions.js +128 -18
- package/dist/tools/transactions.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +2 -7
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +1 -0
- package/dist/utils.js.map +1 -1
- package/dist/walletconnect.d.ts +31 -0
- package/dist/walletconnect.d.ts.map +1 -0
- package/dist/walletconnect.js +128 -0
- package/dist/walletconnect.js.map +1 -0
- package/package.json +7 -3
- package/src/client.ts +4 -2
- package/src/http-server.ts +94 -0
- package/src/index.ts +38 -13
- package/src/kv-storage.ts +83 -0
- package/src/preview.ts +12 -2
- package/src/tools/transactions.ts +146 -20
- package/src/types.ts +1 -0
- package/src/utils.ts +4 -17
- package/src/walletconnect.ts +157 -0
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@ A Model Context Protocol (MCP) server for blockchain interactions using [viem](h
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
7
|
- Multi-chain support (Ethereum, Arbitrum, Avalanche, Base, BNB Chain, Gnosis, Sonic, Optimism, Polygon, zkSync Era, Linea, Unichain)
|
|
8
|
-
- **🔐 Transaction
|
|
8
|
+
- **🔐 Transaction signing** in a browser wallet (MetaMask, Rabby, Coinbase) or on your phone over WalletConnect
|
|
9
9
|
- Clear signing: transactions are decoded, named and simulated before you approve them
|
|
10
10
|
- Smart contract interactions (read & write functions, ABI retrieval, source code)
|
|
11
11
|
- Contract simulation & gas estimation (simulate transactions, estimate costs)
|
|
@@ -46,6 +46,7 @@ All API keys are optional. The server uses public RPCs by default. Add keys to u
|
|
|
46
46
|
- `--alchemy-api-key` or `ALCHEMY_API_KEY` - Enhanced RPC reliability
|
|
47
47
|
- `--infura-api-key` or `INFURA_API_KEY` - Additional RPC provider
|
|
48
48
|
- `--custom-rpc` - Custom RPC URLs as JSON
|
|
49
|
+
- `--walletconnect-project-id` or `WALLETCONNECT_PROJECT_ID` - Sign from a phone
|
|
49
50
|
|
|
50
51
|
**Wallet relay (all optional):**
|
|
51
52
|
- `WALLET_SERVER_URL` + `WALLET_TOKEN` - Use a hosted relay instead of a local one
|
|
@@ -124,6 +125,92 @@ Each request shows what the transaction actually does, not just calldata:
|
|
|
124
125
|
gas estimate and every ERC20 transfer the transaction would cause, marked in/out for your
|
|
125
126
|
account. A reverting transaction is shown as such before you can approve it.
|
|
126
127
|
|
|
128
|
+
### Signing From a Phone
|
|
129
|
+
|
|
130
|
+
A phone cannot run the relay, so it does not have to: with a
|
|
131
|
+
[WalletConnect](https://dashboard.reown.com) project id the MCP server talks to your phone
|
|
132
|
+
wallet directly, over WalletConnect's own (end-to-end encrypted) relay. No page to load,
|
|
133
|
+
nothing to host.
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
npx web3-tools-mcp --walletconnect-project-id YOUR_PROJECT_ID
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Then ask the agent to pair — `pair_phone_wallet` returns a QR code to scan with MetaMask,
|
|
140
|
+
Rabby, Trust or any WalletConnect wallet. The session is stored in
|
|
141
|
+
`~/.config/web3-tools-mcp/walletconnect.db`, so you pair once and it survives restarts.
|
|
142
|
+
|
|
143
|
+
While a phone is paired it signs everything; the browser page takes over again when it is
|
|
144
|
+
not. Either way the transaction is decoded and simulated first, and that summary comes back
|
|
145
|
+
in the tool response — your phone wallet shows its own preview, so read ours before you
|
|
146
|
+
approve theirs.
|
|
147
|
+
|
|
148
|
+
### Hosting Your Own
|
|
149
|
+
|
|
150
|
+
With WalletConnect there is nothing left that has to run next to you — no browser to open,
|
|
151
|
+
no page to reach — so the server can live in the cloud and still have your phone sign.
|
|
152
|
+
|
|
153
|
+
Run your own instance rather than sharing one: it keeps your wallet, your API keys and your
|
|
154
|
+
WalletConnect quota to yourself, and there is no multi-tenant server in the middle that
|
|
155
|
+
could send someone else's transaction to your phone.
|
|
156
|
+
|
|
157
|
+
[](https://render.com/deploy?repo=https://github.com/hajnalben/web3-tools-mcp)
|
|
158
|
+
|
|
159
|
+
Render reads `render.yaml`, generates `MCP_TOKEN` for you and asks for
|
|
160
|
+
`WALLETCONNECT_PROJECT_ID` (free from [dashboard.reown.com](https://dashboard.reown.com)).
|
|
161
|
+
Or on [Fly](https://fly.io), where volumes come with any plan, so the pairing survives
|
|
162
|
+
redeploys without paying for a disk:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
fly launch --no-deploy --copy-config # pick a name and region
|
|
166
|
+
fly volumes create data --size 1
|
|
167
|
+
fly secrets set MCP_TOKEN=$(openssl rand -hex 24) WALLETCONNECT_PROJECT_ID=<id>
|
|
168
|
+
fly deploy
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
There is also a plain `Dockerfile`, so Railway, Cloud Run or your own box work the same way:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
docker build -t web3-tools-mcp .
|
|
175
|
+
docker run -p 8080:8080 \
|
|
176
|
+
-e MCP_TOKEN=<long random string> \
|
|
177
|
+
-e WALLETCONNECT_PROJECT_ID=<id> \
|
|
178
|
+
web3-tools-mcp
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Or without any host at all:
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
MCP_HTTP_PORT=3457 MCP_TOKEN=<long random string> \
|
|
185
|
+
WALLETCONNECT_PROJECT_ID=<id> npx web3-tools-mcp
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
claude mcp add --transport http web3-tools https://your-host/mcp \
|
|
190
|
+
--header "Authorization: Bearer <MCP_TOKEN>"
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
`MCP_TOKEN` is mandatory and the server refuses to start without it: anyone who can reach
|
|
194
|
+
`/mcp` while your phone is paired can push signing prompts at it. You would still approve
|
|
195
|
+
each one, but that is a phishing surface, not a feature.
|
|
196
|
+
|
|
197
|
+
Two things decide whether the pairing survives:
|
|
198
|
+
|
|
199
|
+
- **Keep the instance awake.** Sleeping drops the WalletConnect socket your phone pairing
|
|
200
|
+
depends on, so the first transaction after an idle period waits for the host to wake
|
|
201
|
+
(about a minute on a free tier) before it reaches your phone.
|
|
202
|
+
- **Give the session somewhere durable to live.** Most hosts have an ephemeral filesystem,
|
|
203
|
+
so a plain file is lost on every redeploy and you rescan the QR. Either attach a volume
|
|
204
|
+
and point `XDG_CONFIG_HOME` at it (what `render.yaml` does), or set
|
|
205
|
+
`UPSTASH_REDIS_REST_URL` and `UPSTASH_REDIS_REST_TOKEN`
|
|
206
|
+
([Upstash](https://upstash.com) has a free plan) and the session moves to Redis.
|
|
207
|
+
|
|
208
|
+
Render's own free Key Value instance is not an option for this: it has no persistence, so
|
|
209
|
+
the pairing would disappear on its next maintenance.
|
|
210
|
+
|
|
211
|
+
A hosted server skips the wallet relay entirely — there is no browser on the host to open —
|
|
212
|
+
so WalletConnect is its only way to sign.
|
|
213
|
+
|
|
127
214
|
### Hosting the Wallet Page
|
|
128
215
|
|
|
129
216
|
The relay lives in its own workspace, [`wallet/`](wallet), and depends only on express, cors
|
|
@@ -189,7 +276,8 @@ Visit the wallet URL printed by the server (`wallet_status` also returns it) any
|
|
|
189
276
|
- `send_native_token` - Send ETH/native tokens to an address
|
|
190
277
|
- `send_erc20_token` - Send ERC20 tokens to an address
|
|
191
278
|
- `sign_message` - Sign messages with your wallet
|
|
192
|
-
- `wallet_status` - Check
|
|
279
|
+
- `wallet_status` - Check which signer is connected (phone or browser)
|
|
280
|
+
- `pair_phone_wallet` - Pair a phone wallet over WalletConnect, returning a QR to scan
|
|
193
281
|
|
|
194
282
|
### Gas & Simulation
|
|
195
283
|
- `estimate_gas` - Estimate gas cost for any transaction
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAE,MAAM,MAAM,CAAA;AAgB/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -15,7 +15,8 @@ function getRpcUrl(chainName, config) {
|
|
|
15
15
|
: 'https://ethereum-rpc.publicnode.com',
|
|
16
16
|
base: config.alchemyApiKey
|
|
17
17
|
? `https://base-mainnet.g.alchemy.com/v2/${config.alchemyApiKey}`
|
|
18
|
-
|
|
18
|
+
// publicnode refuses receipts and anything else it calls an archive request
|
|
19
|
+
: 'https://mainnet.base.org',
|
|
19
20
|
arbitrum: config.alchemyApiKey
|
|
20
21
|
? `https://arb-mainnet.g.alchemy.com/v2/${config.alchemyApiKey}`
|
|
21
22
|
: config.infuraApiKey
|
|
@@ -25,7 +26,8 @@ function getRpcUrl(chainName, config) {
|
|
|
25
26
|
? `https://polygon-mainnet.g.alchemy.com/v2/${config.alchemyApiKey}`
|
|
26
27
|
: config.infuraApiKey
|
|
27
28
|
? `https://polygon-mainnet.infura.io/v3/${config.infuraApiKey}`
|
|
28
|
-
|
|
29
|
+
// polygon-rpc.com now answers 401 "API key disabled" to anonymous callers
|
|
30
|
+
: 'https://polygon-bor-rpc.publicnode.com',
|
|
29
31
|
optimism: config.alchemyApiKey
|
|
30
32
|
? `https://opt-mainnet.g.alchemy.com/v2/${config.alchemyApiKey}`
|
|
31
33
|
: config.infuraApiKey
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AAC/C,OAAO,EACL,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,GAAG,EACH,MAAM,EACN,KAAK,EACL,SAAS,EACT,OAAO,EACP,QAAQ,EACR,OAAO,EACP,KAAK,EACL,QAAQ,EACR,MAAM,EACP,MAAM,aAAa,CAAA;AAGpB,2CAA2C;AAC3C,SAAS,SAAS,CAAC,SAAiB,EAAE,MAAc;IAClD,kCAAkC;IAClC,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,OAAO,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;IACxC,CAAC;IAED,kCAAkC;IAClC,MAAM,YAAY,GAA2B;QAC3C,OAAO,EAAE,MAAM,CAAC,aAAa;YAC3B,CAAC,CAAC,wCAAwC,MAAM,CAAC,aAAa,EAAE;YAChE,CAAC,CAAC,MAAM,CAAC,YAAY;gBACnB,CAAC,CAAC,gCAAgC,MAAM,CAAC,YAAY,EAAE;gBACvD,CAAC,CAAC,qCAAqC;QAE3C,IAAI,EAAE,MAAM,CAAC,aAAa;YACxB,CAAC,CAAC,yCAAyC,MAAM,CAAC,aAAa,EAAE;YACjE,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
export interface HttpServerOptions {
|
|
3
|
+
port?: number;
|
|
4
|
+
host?: string;
|
|
5
|
+
token?: string;
|
|
6
|
+
createMcpServer: () => McpServer;
|
|
7
|
+
}
|
|
8
|
+
export declare function startHttpServer(options: HttpServerOptions): Promise<{
|
|
9
|
+
url: string;
|
|
10
|
+
port: number;
|
|
11
|
+
}>;
|
|
12
|
+
//# sourceMappingURL=http-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAyBxE,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,MAAM,SAAS,CAAA;CACjC;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA0DxG"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { createServer } from 'node:http';
|
|
2
|
+
import { timingSafeEqual } from 'node:crypto';
|
|
3
|
+
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
4
|
+
/**
|
|
5
|
+
* Serve the MCP over HTTP instead of stdio, so the server can live somewhere other than the
|
|
6
|
+
* machine running the agent. Only worth doing alongside WalletConnect: a hosted server has
|
|
7
|
+
* no browser to open, so a phone wallet is the only way it can have anything signed.
|
|
8
|
+
*
|
|
9
|
+
* Stateless — a server per request — because every tool here is a one-shot call and the
|
|
10
|
+
* signing state lives in the WalletConnect session, not in the transport.
|
|
11
|
+
*/
|
|
12
|
+
const DEFAULT_PORT = 3457;
|
|
13
|
+
function unauthorized(res) {
|
|
14
|
+
res.writeHead(401, { 'content-type': 'application/json', 'www-authenticate': 'Bearer' });
|
|
15
|
+
res.end(JSON.stringify({ jsonrpc: '2.0', error: { code: -32001, message: 'Unauthorized' } }));
|
|
16
|
+
}
|
|
17
|
+
/** Constant-time compare, so the token cannot be guessed a character at a time. */
|
|
18
|
+
function tokenMatches(presented, expected) {
|
|
19
|
+
const a = Buffer.from(presented);
|
|
20
|
+
const b = Buffer.from(expected);
|
|
21
|
+
return a.length === b.length && timingSafeEqual(a, b);
|
|
22
|
+
}
|
|
23
|
+
export async function startHttpServer(options) {
|
|
24
|
+
const port = options.port ?? Number(process.env.MCP_HTTP_PORT) ?? DEFAULT_PORT;
|
|
25
|
+
const host = options.host ?? process.env.HOST ?? (process.env.MCP_HTTP_HOST ? process.env.MCP_HTTP_HOST : '0.0.0.0');
|
|
26
|
+
const token = options.token ?? process.env.MCP_TOKEN;
|
|
27
|
+
// A reachable MCP server with a paired phone can push signing prompts at that phone. It
|
|
28
|
+
// never runs without a token.
|
|
29
|
+
if (!token) {
|
|
30
|
+
throw new Error('MCP_TOKEN is required to serve MCP over HTTP — anyone reaching the URL could request signatures');
|
|
31
|
+
}
|
|
32
|
+
const server = createServer(async (req, res) => {
|
|
33
|
+
if (req.url === '/health') {
|
|
34
|
+
res.writeHead(200, { 'content-type': 'application/json' });
|
|
35
|
+
res.end(JSON.stringify({ status: 'ok' }));
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (!req.url?.startsWith('/mcp')) {
|
|
39
|
+
res.writeHead(404).end();
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const presented = req.headers.authorization?.replace(/^Bearer /i, '') ?? '';
|
|
43
|
+
if (!tokenMatches(presented, token)) {
|
|
44
|
+
unauthorized(res);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const mcp = options.createMcpServer();
|
|
48
|
+
const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined, enableJsonResponse: true });
|
|
49
|
+
res.on('close', () => {
|
|
50
|
+
transport.close().catch(() => { });
|
|
51
|
+
mcp.close().catch(() => { });
|
|
52
|
+
});
|
|
53
|
+
try {
|
|
54
|
+
await mcp.connect(transport);
|
|
55
|
+
await transport.handleRequest(req, res);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
console.error('[MCP] Request failed:', error);
|
|
59
|
+
if (!res.headersSent) {
|
|
60
|
+
res.writeHead(500, { 'content-type': 'application/json' });
|
|
61
|
+
res.end(JSON.stringify({ jsonrpc: '2.0', error: { code: -32603, message: 'Internal error' } }));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
await new Promise((resolve, reject) => {
|
|
66
|
+
server.once('error', reject);
|
|
67
|
+
server.listen(port, host, () => {
|
|
68
|
+
server.removeListener('error', reject);
|
|
69
|
+
resolve();
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
return { url: `http://${host}:${port}/mcp`, port };
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=http-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import { initializeClientManager } from "./client.js";
|
|
|
6
6
|
import { registerAllTools } from "./tools/index.js";
|
|
7
7
|
import { parseCommandLineArgs } from "./utils.js";
|
|
8
8
|
import { getWalletClient } from "./wallet-client.js";
|
|
9
|
+
import { startHttpServer } from "./http-server.js";
|
|
9
10
|
// Parse configuration
|
|
10
11
|
const config = parseCommandLineArgs();
|
|
11
12
|
// Show help if requested
|
|
@@ -23,6 +24,8 @@ OPTIONS:
|
|
|
23
24
|
--alchemy-api-key <key> Alchemy API key (for enhanced RPC)
|
|
24
25
|
--infura-api-key <key> Infura API key (for alternative RPC)
|
|
25
26
|
--hypersync-api-key <key> Hypersync API key (for fast event queries)
|
|
27
|
+
--walletconnect-project-id <id>
|
|
28
|
+
WalletConnect project id, to sign from a phone
|
|
26
29
|
--custom-rpc <json> Custom RPC URLs as JSON object
|
|
27
30
|
Example: '{"mainnet":"https://...", "base":"https://..."}'
|
|
28
31
|
|
|
@@ -31,6 +34,11 @@ ENVIRONMENT VARIABLES:
|
|
|
31
34
|
ALCHEMY_API_KEY Alternative to --alchemy-api-key
|
|
32
35
|
INFURA_API_KEY Alternative to --infura-api-key
|
|
33
36
|
HYPERSYNC_API_KEY Alternative to --hypersync-api-key
|
|
37
|
+
WALLETCONNECT_PROJECT_ID Alternative to --walletconnect-project-id
|
|
38
|
+
MCP_HTTP_PORT Serve MCP over HTTP on this port instead of stdio
|
|
39
|
+
MCP_TOKEN Bearer token required by the HTTP transport
|
|
40
|
+
UPSTASH_REDIS_REST_URL Keep WalletConnect sessions in Redis, not on disk
|
|
41
|
+
UPSTASH_REDIS_REST_TOKEN
|
|
34
42
|
WALLET_SERVER_URL URL of a hosted wallet relay (omit to run one locally)
|
|
35
43
|
WALLET_TOKEN Shared pairing token for the wallet relay
|
|
36
44
|
|
|
@@ -66,24 +74,32 @@ if (config.alchemyApiKey) {
|
|
|
66
74
|
if (config.infuraApiKey) {
|
|
67
75
|
console.error("[MCP] Infura API key configured");
|
|
68
76
|
}
|
|
77
|
+
if (config.walletConnectProjectId) {
|
|
78
|
+
console.error("[MCP] WalletConnect project id configured — phone signing available");
|
|
79
|
+
}
|
|
69
80
|
if (config.customRpcUrls) {
|
|
70
81
|
console.error("[MCP] Custom RPC URLs:", Object.keys(config.customRpcUrls));
|
|
71
82
|
}
|
|
72
83
|
// Initialize client manager
|
|
73
84
|
initializeClientManager(config);
|
|
74
|
-
|
|
75
|
-
const server = new McpServer({
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
85
|
+
function createMcpServer() {
|
|
86
|
+
const server = new McpServer({
|
|
87
|
+
name: "web3-tools-mcp",
|
|
88
|
+
version: packageJson.version,
|
|
89
|
+
});
|
|
90
|
+
registerAllTools(server);
|
|
91
|
+
return server;
|
|
92
|
+
}
|
|
93
|
+
// Serving over HTTP means there is no browser on this machine to open, so the wallet relay
|
|
94
|
+
// is skipped and signing goes to a paired phone over WalletConnect.
|
|
95
|
+
const httpMode = Boolean(process.env.MCP_HTTP_PORT);
|
|
82
96
|
const wallet = getWalletClient();
|
|
83
|
-
const walletReady =
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
97
|
+
const walletReady = httpMode
|
|
98
|
+
? Promise.resolve()
|
|
99
|
+
: wallet.connect().catch((error) => {
|
|
100
|
+
console.error("[MCP] Wallet relay unavailable:", error.message);
|
|
101
|
+
console.error("[MCP] Transaction signing features will not be available");
|
|
102
|
+
});
|
|
87
103
|
// The wallet relay's listening socket keeps the event loop alive, so this process would
|
|
88
104
|
// outlive the client that spawned it and go on holding its port. Leave when the client does.
|
|
89
105
|
let shuttingDown = false;
|
|
@@ -101,8 +117,16 @@ process.on("SIGTERM", () => shutdown("SIGTERM"));
|
|
|
101
117
|
process.on("SIGINT", () => shutdown("SIGINT"));
|
|
102
118
|
// Start server
|
|
103
119
|
async function main() {
|
|
120
|
+
if (httpMode) {
|
|
121
|
+
const { url } = await startHttpServer({ createMcpServer });
|
|
122
|
+
console.error(`Web3 Tools MCP Server listening on ${url}`);
|
|
123
|
+
if (!config.walletConnectProjectId) {
|
|
124
|
+
console.error("[MCP] No WalletConnect project id — a hosted server has no way to sign transactions");
|
|
125
|
+
}
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
104
128
|
const transport = new StdioServerTransport();
|
|
105
|
-
await
|
|
129
|
+
await createMcpServer().connect(transport);
|
|
106
130
|
console.error("Web3 Tools MCP Server running on stdio");
|
|
107
131
|
// The relay may still be picking a free port, and its URL carries the pairing token.
|
|
108
132
|
await walletReady;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,sBAAsB;AACtB,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;AAEtC,yBAAyB;AACzB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC;yBACW,WAAW,CAAC,OAAO;EAC1C,WAAW,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA4Cb,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAClE,WAAW,CAAC,IAAI,CAAC,GAAG;;;CAG/B,CAAC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,yBAAyB;AACzB,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;AACtD,CAAC;AACD,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;IACzB,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;AACpD,CAAC;AACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;IACxB,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACnD,CAAC;AACD,IAAI,MAAM,CAAC,sBAAsB,EAAE,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;AACvF,CAAC;AACD,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;IACzB,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,4BAA4B;AAC5B,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAEhC,SAAS,eAAe;IACtB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,WAAW,CAAC,OAAO;KAC7B,CAAC,CAAC;IACH,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACzB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,2FAA2F;AAC3F,oEAAoE;AACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAEpD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;AACjC,MAAM,WAAW,GAAG,QAAQ;IAC1B,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;IACnB,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/B,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAChE,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AAEP,wFAAwF;AACxF,6FAA6F;AAC7F,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,KAAK,UAAU,QAAQ,CAAC,MAAc;IACpC,IAAI,YAAY;QAAE,OAAO;IACzB,YAAY,GAAG,IAAI,CAAC;IACpB,OAAO,CAAC,KAAK,CAAC,wBAAwB,MAAM,GAAG,CAAC,CAAC;IACjD,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC/D,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;AACjE,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACjD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE/C,eAAe;AACf,KAAK,UAAU,IAAI;IACjB,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,eAAe,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,KAAK,CAAC,sCAAsC,GAAG,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,qFAAqF,CAAC,CAAC;QACvG,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,eAAe,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3C,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACxD,qFAAqF;IACrF,MAAM,WAAW,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,iCAAiC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WalletConnect session storage backed by Upstash Redis.
|
|
3
|
+
*
|
|
4
|
+
* The default store is a file, which is fine on a laptop and useless on a free-tier host:
|
|
5
|
+
* the filesystem is ephemeral, so every sleep/wake would lose the pairing and ask for the
|
|
6
|
+
* QR again. Everything lives in one Redis hash, which is exactly the shape WalletConnect's
|
|
7
|
+
* key-value interface expects.
|
|
8
|
+
*
|
|
9
|
+
* Uses the REST API over plain fetch — no Redis client, no TCP, works anywhere.
|
|
10
|
+
*/
|
|
11
|
+
export interface KeyValueStorage {
|
|
12
|
+
getKeys(): Promise<string[]>;
|
|
13
|
+
getEntries<T = unknown>(): Promise<[string, T][]>;
|
|
14
|
+
getItem<T = unknown>(key: string): Promise<T | undefined>;
|
|
15
|
+
setItem<T = unknown>(key: string, value: T): Promise<void>;
|
|
16
|
+
removeItem(key: string): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Redis-backed storage when Upstash is configured, otherwise nothing — the caller falls
|
|
20
|
+
* back to WalletConnect's own file store.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getKeyValueStorage(): KeyValueStorage | undefined;
|
|
23
|
+
//# sourceMappingURL=kv-storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kv-storage.d.ts","sourceRoot":"","sources":["../src/kv-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,WAAW,eAAe;IAC9B,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC5B,UAAU,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IACjD,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;IACzD,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1D,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACvC;AAsDD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,GAAG,SAAS,CAKhE"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WalletConnect session storage backed by Upstash Redis.
|
|
3
|
+
*
|
|
4
|
+
* The default store is a file, which is fine on a laptop and useless on a free-tier host:
|
|
5
|
+
* the filesystem is ephemeral, so every sleep/wake would lose the pairing and ask for the
|
|
6
|
+
* QR again. Everything lives in one Redis hash, which is exactly the shape WalletConnect's
|
|
7
|
+
* key-value interface expects.
|
|
8
|
+
*
|
|
9
|
+
* Uses the REST API over plain fetch — no Redis client, no TCP, works anywhere.
|
|
10
|
+
*/
|
|
11
|
+
const HASH_KEY = 'web3-tools-mcp:walletconnect';
|
|
12
|
+
class RedisKeyValueStorage {
|
|
13
|
+
url;
|
|
14
|
+
token;
|
|
15
|
+
constructor(url, token) {
|
|
16
|
+
this.url = url;
|
|
17
|
+
this.token = token;
|
|
18
|
+
}
|
|
19
|
+
/** Upstash takes a command as a JSON array and answers `{ result }`. */
|
|
20
|
+
async command(...parts) {
|
|
21
|
+
const response = await fetch(this.url, {
|
|
22
|
+
method: 'POST',
|
|
23
|
+
headers: { authorization: `Bearer ${this.token}`, 'content-type': 'application/json' },
|
|
24
|
+
body: JSON.stringify(parts)
|
|
25
|
+
});
|
|
26
|
+
if (!response.ok) {
|
|
27
|
+
throw new Error(`Upstash request failed (${response.status}): ${await response.text()}`);
|
|
28
|
+
}
|
|
29
|
+
return (await response.json()).result;
|
|
30
|
+
}
|
|
31
|
+
async getKeys() {
|
|
32
|
+
return (await this.command('HKEYS', HASH_KEY)) ?? [];
|
|
33
|
+
}
|
|
34
|
+
async getEntries() {
|
|
35
|
+
// HGETALL comes back as a flat [field, value, field, value, …] array.
|
|
36
|
+
const flat = (await this.command('HGETALL', HASH_KEY)) ?? [];
|
|
37
|
+
const entries = [];
|
|
38
|
+
for (let i = 0; i < flat.length; i += 2) {
|
|
39
|
+
const key = flat[i];
|
|
40
|
+
const value = flat[i + 1];
|
|
41
|
+
if (key === undefined || value === undefined)
|
|
42
|
+
continue;
|
|
43
|
+
entries.push([key, JSON.parse(value)]);
|
|
44
|
+
}
|
|
45
|
+
return entries;
|
|
46
|
+
}
|
|
47
|
+
async getItem(key) {
|
|
48
|
+
const value = await this.command('HGET', HASH_KEY, key);
|
|
49
|
+
return value == null ? undefined : JSON.parse(value);
|
|
50
|
+
}
|
|
51
|
+
async setItem(key, value) {
|
|
52
|
+
await this.command('HSET', HASH_KEY, key, JSON.stringify(value));
|
|
53
|
+
}
|
|
54
|
+
async removeItem(key) {
|
|
55
|
+
await this.command('HDEL', HASH_KEY, key);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Redis-backed storage when Upstash is configured, otherwise nothing — the caller falls
|
|
60
|
+
* back to WalletConnect's own file store.
|
|
61
|
+
*/
|
|
62
|
+
export function getKeyValueStorage() {
|
|
63
|
+
const url = process.env.UPSTASH_REDIS_REST_URL;
|
|
64
|
+
const token = process.env.UPSTASH_REDIS_REST_TOKEN;
|
|
65
|
+
if (!url || !token)
|
|
66
|
+
return undefined;
|
|
67
|
+
return new RedisKeyValueStorage(url, token);
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=kv-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kv-storage.js","sourceRoot":"","sources":["../src/kv-storage.ts"],"names":[],"mappings":"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"}
|
package/dist/preview.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,MAAM,CAAA;IACV,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,EAAE;QACR,YAAY,EAAE,MAAM,CAAA;QACpB,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,YAAY,EAAE,CAAA;QACtB,kFAAkF;QAClF,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,wFAAwF;QACxF,MAAM,EAAE,UAAU,GAAG,SAAS,CAAA;QAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IACD,UAAU,CAAC,EAAE;QACX,OAAO,EAAE,OAAO,CAAA;QAChB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,YAAY,EAAE,WAAW,EAAE,CAAA;KAC5B,CAAA;CACF;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAyKD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,MAAM,CAAA;IACV,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,EAAE;QACR,YAAY,EAAE,MAAM,CAAA;QACpB,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,YAAY,EAAE,CAAA;QACtB,kFAAkF;QAClF,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,wFAAwF;QACxF,MAAM,EAAE,UAAU,GAAG,SAAS,CAAA;QAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IACD,UAAU,CAAC,EAAE;QACX,OAAO,EAAE,OAAO,CAAA;QAChB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,YAAY,EAAE,WAAW,EAAE,CAAA;KAC5B,CAAA;CACF;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAyKD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAgCnG"}
|
package/dist/preview.js
CHANGED
|
@@ -161,8 +161,18 @@ async function simulate(chain, tx, from) {
|
|
|
161
161
|
export async function buildTxPreview(chain, tx, from) {
|
|
162
162
|
const value = tx.value ? BigInt(tx.value).toString() : undefined;
|
|
163
163
|
const [decoded, simulation, toLabel] = await Promise.all([
|
|
164
|
-
|
|
165
|
-
|
|
164
|
+
// A preview that cannot be built must not block the transaction, but swallowing the
|
|
165
|
+
// reason makes "no details shown" impossible to diagnose.
|
|
166
|
+
decodeCalldata(chain, tx).catch((error) => {
|
|
167
|
+
console.error('[Preview] Could not decode calldata:', error instanceof Error ? error.message : error);
|
|
168
|
+
return undefined;
|
|
169
|
+
}),
|
|
170
|
+
from
|
|
171
|
+
? simulate(chain, tx, from).catch((error) => {
|
|
172
|
+
console.error('[Preview] Could not simulate:', error instanceof Error ? error.message : error);
|
|
173
|
+
return undefined;
|
|
174
|
+
})
|
|
175
|
+
: Promise.resolve(undefined),
|
|
166
176
|
// The registry's protocol name beats anything on-chain: "Aave", not a proxy's class name.
|
|
167
177
|
Promise.resolve(lookupContract(chain, tx.to))
|
|
168
178
|
.then((entry) => (entry ? protocolLabel(entry.protocol) : addressLabel(chain, tx.to)))
|
package/dist/preview.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"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"}
|
|
@@ -100,6 +100,20 @@ declare const _default: {
|
|
|
100
100
|
message: string;
|
|
101
101
|
}) => Promise<import("../types.js").ToolResult>;
|
|
102
102
|
};
|
|
103
|
+
pair_phone_wallet: {
|
|
104
|
+
title: string;
|
|
105
|
+
description: string;
|
|
106
|
+
schema: z.ZodObject<{
|
|
107
|
+
chains: z.ZodOptional<z.ZodArray<z.ZodEnum<["mainnet", "arbitrum", "avalanche", "base", "bnb", "gnosis", "sonic", "optimism", "polygon", "zksync", "linea", "unichain", "localhost"]>, "many">>;
|
|
108
|
+
}, "strip", z.ZodTypeAny, {
|
|
109
|
+
chains?: ("arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost")[] | undefined;
|
|
110
|
+
}, {
|
|
111
|
+
chains?: ("arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost")[] | undefined;
|
|
112
|
+
}>;
|
|
113
|
+
handler: (args: {
|
|
114
|
+
chains?: ("arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost")[] | undefined;
|
|
115
|
+
}) => Promise<import("../types.js").ToolResult>;
|
|
116
|
+
};
|
|
103
117
|
wallet_status: {
|
|
104
118
|
title: string;
|
|
105
119
|
description: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../../src/tools/transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA
|
|
1
|
+
{"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../../src/tools/transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyGvB,wBA+OC"}
|