@ironwallet/mcp-server 1.0.0 → 1.0.2
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 +16 -9
- package/assets/logo-mark.png +0 -0
- package/dist/api/swap.d.ts +1 -1
- package/dist/api/swap.js +1 -1
- package/dist/config.d.ts +16 -12
- package/dist/config.js +59 -31
- package/dist/config.js.map +1 -1
- package/dist/device-fingerprint.d.ts +18 -0
- package/dist/device-fingerprint.js +81 -0
- package/dist/device-fingerprint.js.map +1 -0
- package/dist/keystore/store.js +3 -7
- package/dist/keystore/store.js.map +1 -1
- package/dist/local-secrets.d.ts +2 -2
- package/dist/local-secrets.js +5 -9
- package/dist/local-secrets.js.map +1 -1
- package/dist/networks.d.ts +5 -0
- package/dist/networks.js +21 -0
- package/dist/networks.js.map +1 -0
- package/dist/policy.d.ts +3 -1
- package/dist/policy.js +6 -0
- package/dist/policy.js.map +1 -1
- package/dist/qr/deposit-qr.d.ts +17 -0
- package/dist/qr/deposit-qr.js +203 -0
- package/dist/qr/deposit-qr.js.map +1 -0
- package/dist/qr/font.d.ts +6 -0
- package/dist/qr/font.js +79 -0
- package/dist/qr/font.js.map +1 -0
- package/dist/restrict-private-file.d.ts +9 -0
- package/dist/restrict-private-file.js +53 -0
- package/dist/restrict-private-file.js.map +1 -0
- package/dist/server.js +14 -8
- package/dist/server.js.map +1 -1
- package/dist/tools/definitions.d.ts +40 -0
- package/dist/tools/definitions.js +219 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/helpers.d.ts +20 -6
- package/dist/tools/helpers.js +10 -4
- package/dist/tools/helpers.js.map +1 -1
- package/dist/tools/swap.d.ts +1 -1
- package/dist/tools/swap.js +9 -75
- package/dist/tools/swap.js.map +1 -1
- package/dist/tools/transfer.d.ts +1 -1
- package/dist/tools/transfer.js +7 -54
- package/dist/tools/transfer.js.map +1 -1
- package/dist/tools/wallets.js +56 -24
- package/dist/tools/wallets.js.map +1 -1
- package/dist/wallet/derive.d.ts +1 -1
- package/dist/wallet/derive.js +1 -1
- package/dist/web/manager.js +104 -34
- package/dist/web/manager.js.map +1 -1
- package/package.json +43 -4
- package/server.json +23 -0
- package/tools.json +573 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tool catalog: Zod input schemas plus the short docs fields used in
|
|
3
|
+
* README / skill tables. Handlers stay in wallets.ts / transfer.ts / swap.ts.
|
|
4
|
+
* `tools.json` is generated from this file — do not edit that JSON by hand.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { ALL_NETWORKS } from "../networks.js";
|
|
8
|
+
export const networkEnum = z.enum([...ALL_NETWORKS]);
|
|
9
|
+
export const swapAssetInputSchema = z.object({
|
|
10
|
+
network: z.string().describe("Network id, e.g. ethereum, bsc, bitcoin."),
|
|
11
|
+
symbol: z.string().describe("Asset symbol, e.g. ETH, USDT."),
|
|
12
|
+
address: z
|
|
13
|
+
.string()
|
|
14
|
+
.optional()
|
|
15
|
+
.nullable()
|
|
16
|
+
.describe("Token contract address. Omit/null for the native coin."),
|
|
17
|
+
decimals: z
|
|
18
|
+
.number()
|
|
19
|
+
.int()
|
|
20
|
+
.optional()
|
|
21
|
+
.describe("Token decimals. If omitted, resolved via SWP catalog (paged). Prefer passing decimals (+ address for tokens) from list_swap_assets."),
|
|
22
|
+
});
|
|
23
|
+
export const TOOL_DEFINITIONS = [
|
|
24
|
+
{
|
|
25
|
+
name: "list_wallets",
|
|
26
|
+
title: "List wallets",
|
|
27
|
+
description: "List the wallets in the local keystore with their addresses per network. Each wallet includes policy ({ enabled: false } when unset). Never returns private keys or seed phrases.",
|
|
28
|
+
purpose: "Names, addresses, and `policy`",
|
|
29
|
+
movesFunds: false,
|
|
30
|
+
inputSchema: {},
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: "create_wallets",
|
|
34
|
+
title: "Create wallets",
|
|
35
|
+
description: "Generate one or more brand-new wallets (BIP-39). Returns names and addresses only. Seed phrases are NOT returned to the agent. The response includes a local browser URL where the user can view and back up the recovery phrases.",
|
|
36
|
+
purpose: "New wallets; returns a browser `backup_url`",
|
|
37
|
+
movesFunds: false,
|
|
38
|
+
inputSchema: {
|
|
39
|
+
count: z.number().int().min(1).max(50).describe("How many wallets to create."),
|
|
40
|
+
name_prefix: z
|
|
41
|
+
.string()
|
|
42
|
+
.optional()
|
|
43
|
+
.describe("Optional name prefix, e.g. 'agent-hot'. Defaults to 'wallet'."),
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: "open_wallet_manager",
|
|
48
|
+
title: "Open wallet manager (browser)",
|
|
49
|
+
description: "Open a local browser form to add/import/create wallets or back them up (reveal the recovery phrase). Returns a localhost URL for the user to open. Seed phrases are entered and shown ONLY in the browser and never pass through the agent. Use this whenever the user asks to add, import, create, or back up a wallet.",
|
|
50
|
+
purpose: "Local browser UI to import / create / back up",
|
|
51
|
+
movesFunds: false,
|
|
52
|
+
inputSchema: {},
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: "get_deposit_qr",
|
|
56
|
+
title: "Deposit QR",
|
|
57
|
+
description: "PNG QR to receive funds (generated on the fly; IW mark, address under the code). Pass network for one chain; omit it for one QR per unique address. Does not move funds. Never returns keys or seed phrases. Show the attached image in chat when the host renders it. Each item also has qr_url — open that local URL if the user cannot see the QR, and always write the address in the reply.",
|
|
58
|
+
purpose: "PNG QR (try chat; else local `qr_url`)",
|
|
59
|
+
movesFunds: false,
|
|
60
|
+
inputSchema: {
|
|
61
|
+
wallet: z.string().optional().describe("Wallet name. Optional if only one exists."),
|
|
62
|
+
network: networkEnum
|
|
63
|
+
.optional()
|
|
64
|
+
.describe("Network to deposit on. Omit to return one QR per unique address."),
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: "get_balance",
|
|
69
|
+
title: "Get balance",
|
|
70
|
+
description: "Get the balance for a wallet on a network. Optionally pass a token contract address; omit for the native coin.",
|
|
71
|
+
purpose: "Native or token balance",
|
|
72
|
+
movesFunds: false,
|
|
73
|
+
inputSchema: {
|
|
74
|
+
wallet: z.string().optional().describe("Wallet name. Optional if only one exists."),
|
|
75
|
+
network: networkEnum,
|
|
76
|
+
tokenAddress: z
|
|
77
|
+
.string()
|
|
78
|
+
.optional()
|
|
79
|
+
.describe("Token contract address. Omit for the native coin."),
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: "estimate_transfer",
|
|
84
|
+
title: "Estimate transfer",
|
|
85
|
+
description: "Estimate fees for a transfer without sending. Returns fees and the number of transactions that would be signed.",
|
|
86
|
+
purpose: "Fee estimate, no broadcast",
|
|
87
|
+
movesFunds: false,
|
|
88
|
+
inputSchema: {
|
|
89
|
+
wallet: z.string().optional(),
|
|
90
|
+
network: networkEnum,
|
|
91
|
+
to: z.string().describe("Recipient address."),
|
|
92
|
+
amount: z.string().describe("Amount in asset units (decimal string)."),
|
|
93
|
+
tokenAddress: z
|
|
94
|
+
.string()
|
|
95
|
+
.optional()
|
|
96
|
+
.describe("Token contract address. Omit for the native coin."),
|
|
97
|
+
memo: z.string().optional(),
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: "send_transfer",
|
|
102
|
+
title: "Send transfer",
|
|
103
|
+
description: "Send a transfer: sign locally with the wallet's key and broadcast via the IronWallet forward relay (estimate -> sign -> forward) for EVM, Tron, Bitcoin, Litecoin, Doge, Solana, XRP and TON. Irreversible once broadcast — no second confirmation. Returns the transaction hash (and operation id where applicable).",
|
|
104
|
+
purpose: "Sign locally and send",
|
|
105
|
+
movesFunds: true,
|
|
106
|
+
inputSchema: {
|
|
107
|
+
wallet: z.string().optional(),
|
|
108
|
+
network: networkEnum,
|
|
109
|
+
to: z.string().describe("Recipient address."),
|
|
110
|
+
amount: z.string().describe("Amount in asset units (decimal string)."),
|
|
111
|
+
tokenAddress: z
|
|
112
|
+
.string()
|
|
113
|
+
.optional()
|
|
114
|
+
.describe("Token contract address. Omit for the native coin."),
|
|
115
|
+
memo: z.string().optional(),
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: "get_operation_status",
|
|
120
|
+
title: "Get operation status",
|
|
121
|
+
description: "Poll the state of a forward operation by its operation id.",
|
|
122
|
+
purpose: "Poll a transfer",
|
|
123
|
+
movesFunds: false,
|
|
124
|
+
inputSchema: {
|
|
125
|
+
wallet: z.string().optional(),
|
|
126
|
+
network: networkEnum,
|
|
127
|
+
operationId: z.string(),
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
name: "list_swap_networks",
|
|
132
|
+
title: "List swap networks",
|
|
133
|
+
description: "List networks available for swaps. Use before listing swap assets.",
|
|
134
|
+
purpose: "Networks available for swap",
|
|
135
|
+
movesFunds: false,
|
|
136
|
+
inputSchema: {
|
|
137
|
+
wallet: z.string().optional(),
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
name: "list_swap_assets",
|
|
142
|
+
title: "List swap assets",
|
|
143
|
+
description: "List tradable assets. direction=from lists sell assets; direction=to requires fromNetwork/fromSymbol (and fromAddress for tokens) and lists buy assets. Enriches with wallet address and balance when possible.",
|
|
144
|
+
purpose: "Sell / buy catalog",
|
|
145
|
+
movesFunds: false,
|
|
146
|
+
inputSchema: {
|
|
147
|
+
wallet: z.string().optional(),
|
|
148
|
+
direction: z.enum(["from", "to"]),
|
|
149
|
+
fromNetwork: z.string().optional(),
|
|
150
|
+
fromSymbol: z.string().optional(),
|
|
151
|
+
fromAddress: z.string().optional().nullable(),
|
|
152
|
+
search: z.string().optional(),
|
|
153
|
+
networks: z.array(z.string()).optional(),
|
|
154
|
+
page: z.number().int().positive().optional(),
|
|
155
|
+
pageSize: z.number().int().positive().max(100).optional(),
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
name: "estimate_swap",
|
|
160
|
+
title: "Estimate swap",
|
|
161
|
+
description: "Get a swap quote (amounts, fees, operationId). Quote can expire — prefer execute_swap for sending (it re-estimates). Amount is a decimal string; set maxMode=true to sell the full balance (backend corrects amount).",
|
|
162
|
+
purpose: "Quote (may expire)",
|
|
163
|
+
movesFunds: false,
|
|
164
|
+
inputSchema: {
|
|
165
|
+
wallet: z.string().optional(),
|
|
166
|
+
from: swapAssetInputSchema,
|
|
167
|
+
to: swapAssetInputSchema,
|
|
168
|
+
amount: z
|
|
169
|
+
.string()
|
|
170
|
+
.optional()
|
|
171
|
+
.describe("Sell amount as decimal string. Required unless maxMode."),
|
|
172
|
+
maxMode: z.boolean().optional(),
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
name: "execute_swap",
|
|
177
|
+
title: "Execute swap",
|
|
178
|
+
description: "Execute a swap: fresh estimate → create → local sign → execute. Does NOT use the transfer relay. Irreversible once submitted — no second confirmation. Returns operationId and txHash; poll with get_swap_status.",
|
|
179
|
+
purpose: "Fresh quote → sign → swap",
|
|
180
|
+
movesFunds: true,
|
|
181
|
+
inputSchema: {
|
|
182
|
+
wallet: z.string().optional(),
|
|
183
|
+
from: swapAssetInputSchema,
|
|
184
|
+
to: swapAssetInputSchema,
|
|
185
|
+
amount: z
|
|
186
|
+
.string()
|
|
187
|
+
.optional()
|
|
188
|
+
.describe("Sell amount as decimal string. Required unless maxMode."),
|
|
189
|
+
maxMode: z.boolean().optional(),
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
name: "get_swap_status",
|
|
194
|
+
title: "Get swap status",
|
|
195
|
+
description: "Poll swap order/operation status by operationId.",
|
|
196
|
+
purpose: "Poll a swap",
|
|
197
|
+
movesFunds: false,
|
|
198
|
+
inputSchema: {
|
|
199
|
+
wallet: z.string().optional(),
|
|
200
|
+
operationId: z.string(),
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
];
|
|
204
|
+
const BY_NAME = new Map(TOOL_DEFINITIONS.map((t) => [t.name, t]));
|
|
205
|
+
export function toolDefinition(name) {
|
|
206
|
+
const def = BY_NAME.get(name);
|
|
207
|
+
if (!def)
|
|
208
|
+
throw new Error(`Unknown tool "${name}".`);
|
|
209
|
+
return def;
|
|
210
|
+
}
|
|
211
|
+
/** Fields passed to `server.registerTool` (docs-only keys stripped). */
|
|
212
|
+
export function mcpToolConfig(def) {
|
|
213
|
+
return {
|
|
214
|
+
title: def.title,
|
|
215
|
+
description: def.description,
|
|
216
|
+
inputSchema: def.inputSchema,
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=definitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/helpers.d.ts
CHANGED
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared MCP tool helpers: response shaping, logging wrapper, wallet session.
|
|
3
3
|
*/
|
|
4
|
-
import { z } from "zod";
|
|
5
|
-
import { type NetworkId } from "../config.js";
|
|
6
4
|
import type { WalletEntry } from "../keystore/types.js";
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
export type ImageContent = {
|
|
6
|
+
type: "image";
|
|
7
|
+
data: string;
|
|
8
|
+
mimeType: "image/png";
|
|
9
|
+
annotations?: {
|
|
10
|
+
audience?: Array<"user" | "assistant">;
|
|
11
|
+
priority?: number;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export declare function ok(payload: unknown, images?: ImageContent[]): {
|
|
15
|
+
content: ({
|
|
16
|
+
annotations: {
|
|
17
|
+
audience?: Array<"user" | "assistant">;
|
|
18
|
+
priority?: number;
|
|
19
|
+
};
|
|
20
|
+
type: "image";
|
|
21
|
+
data: string;
|
|
22
|
+
mimeType: "image/png";
|
|
23
|
+
} | {
|
|
10
24
|
type: "text";
|
|
11
25
|
text: string;
|
|
12
|
-
}[];
|
|
26
|
+
})[];
|
|
13
27
|
};
|
|
14
28
|
export declare function fail(err: unknown): {
|
|
15
29
|
isError: true;
|
package/dist/tools/helpers.js
CHANGED
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared MCP tool helpers: response shaping, logging wrapper, wallet session.
|
|
3
3
|
*/
|
|
4
|
-
import { z } from "zod";
|
|
5
|
-
import { ALL_NETWORKS } from "../config.js";
|
|
6
4
|
import { resolveEntry, syncAddresses, unlockMnemonic, } from "../keystore/store.js";
|
|
7
5
|
import { requirePassphrase } from "../passphrase.js";
|
|
8
6
|
import { getAccessToken } from "../api/auth.js";
|
|
9
7
|
import { logError, logInfo, newCorrelationId, } from "../log.js";
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
/** MCP 2025-06-18: audience=user asks the host to show the image in the UI. */
|
|
9
|
+
const USER_VISIBLE_IMAGE = {
|
|
10
|
+
audience: ["user", "assistant"],
|
|
11
|
+
priority: 0.9,
|
|
12
|
+
};
|
|
13
|
+
export function ok(payload, images = []) {
|
|
12
14
|
return {
|
|
13
15
|
content: [
|
|
14
16
|
{ type: "text", text: JSON.stringify(payload, null, 2) },
|
|
17
|
+
...images.map((img) => ({
|
|
18
|
+
...img,
|
|
19
|
+
annotations: img.annotations ?? USER_VISIBLE_IMAGE,
|
|
20
|
+
})),
|
|
15
21
|
],
|
|
16
22
|
};
|
|
17
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/tools/helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/tools/helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACL,QAAQ,EACR,OAAO,EACP,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAYnB,+EAA+E;AAC/E,MAAM,kBAAkB,GAA6C;IACnE,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;IAC/B,QAAQ,EAAE,GAAG;CACd,CAAC;AAEF,MAAM,UAAU,EAAE,CAAC,OAAgB,EAAE,SAAyB,EAAE;IAC9D,OAAO;QACL,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;YACjE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACtB,GAAG,GAAG;gBACN,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,kBAAkB;aACnD,CAAC,CAAC;SACJ;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,GAAY;IAC/B,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO;QACL,OAAO,EAAE,IAAa;QACtB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;KAChE,CAAC;AACJ,CAAC;AAKD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,IAAW,EACX,EAAwE;IAExE,MAAM,aAAa,GAAG,gBAAgB,CACpC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CACxD,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,OAAO,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,SAAS,EAAE;YACjB,aAAa;YACb,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;YAC/B,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE;YACvB,aAAa;YACb,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;YAC/B,IAAI,EAAE,IAAI,IAAI,EAAE;SACjB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACH,CAAC;AAED,iEAAiE;AACjE,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,UAA8B,EAC9B,aAAsB;IAEtB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,OAAO,CAAC,eAAe,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,IAAI,WAAW,EAAE,CAAC,CAAC;IAC/E,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,YAAY,EAAE;YACpB,aAAa;YACb,MAAM,EAAE,KAAK,CAAC,IAAI;YAClB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;YAC/B,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM;SAClD,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACpC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,QAAQ,CAAC,cAAc,EAAE,CAAC,EAAE;YAC1B,aAAa;YACb,MAAM,EAAE,UAAU,IAAI,WAAW;YACjC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;SAChC,CAAC,CAAC;QACH,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC"}
|
package/dist/tools/swap.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* MCP tools for
|
|
2
|
+
* MCP tools for swaps: discovery, estimate, execute, status.
|
|
3
3
|
*/
|
|
4
4
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
5
5
|
import type { ToolHelpers } from "./helpers.js";
|
package/dist/tools/swap.js
CHANGED
|
@@ -1,27 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* MCP tools for
|
|
2
|
+
* MCP tools for swaps: discovery, estimate, execute, status.
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
import { canSwap, parseNetworkId } from "../config.js";
|
|
4
|
+
import { assertServerWritable, canSwap, parseNetworkId } from "../config.js";
|
|
6
5
|
import { getBalance } from "../api/balances.js";
|
|
7
6
|
import { assetKey, createSwap, estimateSwap, executeSwap, getSwapStatus, listSwapAssetsFrom, listSwapAssetsTo, listSwapNetworks, resolveSwapAsset, } from "../api/swap.js";
|
|
8
7
|
import { signSwapTransactions } from "../signing/swap.js";
|
|
9
8
|
import { enforcePolicy } from "../policy.js";
|
|
10
9
|
import { logInfo } from "../log.js";
|
|
11
|
-
|
|
12
|
-
network: z.string().describe("Network id, e.g. ethereum, bsc, bitcoin."),
|
|
13
|
-
symbol: z.string().describe("Asset symbol, e.g. ETH, USDT."),
|
|
14
|
-
address: z
|
|
15
|
-
.string()
|
|
16
|
-
.optional()
|
|
17
|
-
.nullable()
|
|
18
|
-
.describe("Token contract address. Omit/null for the native coin."),
|
|
19
|
-
decimals: z
|
|
20
|
-
.number()
|
|
21
|
-
.int()
|
|
22
|
-
.optional()
|
|
23
|
-
.describe("Token decimals. If omitted, resolved via SWP catalog (paged). Prefer passing decimals (+ address for tokens) from list_swap_assets."),
|
|
24
|
-
});
|
|
10
|
+
import { mcpToolConfig, toolDefinition, } from "./definitions.js";
|
|
25
11
|
async function enrichAssets(items, addresses) {
|
|
26
12
|
return Promise.all(items.map(async (asset) => {
|
|
27
13
|
const net = parseNetworkId(asset.network);
|
|
@@ -120,13 +106,7 @@ async function prepareSwapSides(helpers, opts) {
|
|
|
120
106
|
}
|
|
121
107
|
export function registerSwapTools(server, helpers) {
|
|
122
108
|
const { ok, withToolLog, session } = helpers;
|
|
123
|
-
server.registerTool("list_swap_networks", {
|
|
124
|
-
title: "List swap networks",
|
|
125
|
-
description: "List networks available for Swap Proxy (SWP). Use before listing swap assets.",
|
|
126
|
-
inputSchema: {
|
|
127
|
-
wallet: z.string().optional(),
|
|
128
|
-
},
|
|
129
|
-
}, async ({ wallet }) => withToolLog("list_swap_networks", { wallet }, async ({ correlationId }) => {
|
|
109
|
+
server.registerTool("list_swap_networks", mcpToolConfig(toolDefinition("list_swap_networks")), async ({ wallet }) => withToolLog("list_swap_networks", { wallet }, async ({ correlationId }) => {
|
|
130
110
|
const { token } = await session(wallet, correlationId);
|
|
131
111
|
const networks = await listSwapNetworks(token, { correlationId });
|
|
132
112
|
return ok({
|
|
@@ -141,21 +121,7 @@ export function registerSwapTools(server, helpers) {
|
|
|
141
121
|
}),
|
|
142
122
|
});
|
|
143
123
|
}));
|
|
144
|
-
server.registerTool("list_swap_assets", {
|
|
145
|
-
title: "List swap assets",
|
|
146
|
-
description: "List tradable assets from Swap Proxy. direction=from lists sell assets; direction=to requires fromNetwork/fromSymbol (and fromAddress for tokens) and lists buy assets. Enriches with wallet address and balance when possible.",
|
|
147
|
-
inputSchema: {
|
|
148
|
-
wallet: z.string().optional(),
|
|
149
|
-
direction: z.enum(["from", "to"]),
|
|
150
|
-
fromNetwork: z.string().optional(),
|
|
151
|
-
fromSymbol: z.string().optional(),
|
|
152
|
-
fromAddress: z.string().optional().nullable(),
|
|
153
|
-
search: z.string().optional(),
|
|
154
|
-
networks: z.array(z.string()).optional(),
|
|
155
|
-
page: z.number().int().positive().optional(),
|
|
156
|
-
pageSize: z.number().int().positive().max(100).optional(),
|
|
157
|
-
},
|
|
158
|
-
}, async (args) => withToolLog("list_swap_assets", args, async ({ correlationId }) => {
|
|
124
|
+
server.registerTool("list_swap_assets", mcpToolConfig(toolDefinition("list_swap_assets")), async (args) => withToolLog("list_swap_assets", args, async ({ correlationId }) => {
|
|
159
125
|
const { entry, token } = await session(args.wallet, correlationId);
|
|
160
126
|
let page;
|
|
161
127
|
if (args.direction === "from") {
|
|
@@ -192,20 +158,7 @@ export function registerSwapTools(server, helpers) {
|
|
|
192
158
|
items,
|
|
193
159
|
});
|
|
194
160
|
}));
|
|
195
|
-
server.registerTool("estimate_swap", {
|
|
196
|
-
title: "Estimate swap",
|
|
197
|
-
description: "Get a Swap Proxy quote (amounts, fees, operationId). Quote can expire — prefer execute_swap for sending (it re-estimates). Amount is a decimal string; set maxMode=true to sell the full balance (backend corrects amount).",
|
|
198
|
-
inputSchema: {
|
|
199
|
-
wallet: z.string().optional(),
|
|
200
|
-
from: assetInputSchema,
|
|
201
|
-
to: assetInputSchema,
|
|
202
|
-
amount: z
|
|
203
|
-
.string()
|
|
204
|
-
.optional()
|
|
205
|
-
.describe("Sell amount as decimal string. Required unless maxMode."),
|
|
206
|
-
maxMode: z.boolean().optional(),
|
|
207
|
-
},
|
|
208
|
-
}, async ({ wallet, from, to, amount, maxMode }) => withToolLog("estimate_swap", { wallet, from, to, amount, maxMode }, async ({ correlationId }) => {
|
|
161
|
+
server.registerTool("estimate_swap", mcpToolConfig(toolDefinition("estimate_swap")), async ({ wallet, from, to, amount, maxMode }) => withToolLog("estimate_swap", { wallet, from, to, amount, maxMode }, async ({ correlationId }) => {
|
|
209
162
|
const prep = await prepareSwapSides(helpers, {
|
|
210
163
|
wallet,
|
|
211
164
|
from,
|
|
@@ -234,20 +187,8 @@ export function registerSwapTools(server, helpers) {
|
|
|
234
187
|
note: "Quote may expire. Call execute_swap to create+sign+broadcast (it performs a fresh estimate).",
|
|
235
188
|
});
|
|
236
189
|
}));
|
|
237
|
-
server.registerTool("execute_swap", {
|
|
238
|
-
|
|
239
|
-
description: "Execute a swap via Swap Proxy: fresh estimate → create → local sign → execute. Does NOT use the transfer relay. Returns operationId and txHash; poll with get_swap_status.",
|
|
240
|
-
inputSchema: {
|
|
241
|
-
wallet: z.string().optional(),
|
|
242
|
-
from: assetInputSchema,
|
|
243
|
-
to: assetInputSchema,
|
|
244
|
-
amount: z
|
|
245
|
-
.string()
|
|
246
|
-
.optional()
|
|
247
|
-
.describe("Sell amount as decimal string. Required unless maxMode."),
|
|
248
|
-
maxMode: z.boolean().optional(),
|
|
249
|
-
},
|
|
250
|
-
}, async ({ wallet, from, to, amount, maxMode }) => withToolLog("execute_swap", { wallet, from, to, amount, maxMode }, async ({ correlationId, started }) => {
|
|
190
|
+
server.registerTool("execute_swap", mcpToolConfig(toolDefinition("execute_swap")), async ({ wallet, from, to, amount, maxMode }) => withToolLog("execute_swap", { wallet, from, to, amount, maxMode }, async ({ correlationId, started }) => {
|
|
191
|
+
assertServerWritable("swap");
|
|
251
192
|
const prep = await prepareSwapSides(helpers, {
|
|
252
193
|
wallet,
|
|
253
194
|
from,
|
|
@@ -325,14 +266,7 @@ export function registerSwapTools(server, helpers) {
|
|
|
325
266
|
note: "Poll get_swap_status with operationId until complete. Do not re-execute blindly after a timeout.",
|
|
326
267
|
});
|
|
327
268
|
}));
|
|
328
|
-
server.registerTool("get_swap_status", {
|
|
329
|
-
title: "Get swap status",
|
|
330
|
-
description: "Poll Swap Proxy order/operation status by operationId.",
|
|
331
|
-
inputSchema: {
|
|
332
|
-
wallet: z.string().optional(),
|
|
333
|
-
operationId: z.string(),
|
|
334
|
-
},
|
|
335
|
-
}, async ({ wallet, operationId }) => withToolLog("get_swap_status", { wallet, operationId }, async ({ correlationId }) => {
|
|
269
|
+
server.registerTool("get_swap_status", mcpToolConfig(toolDefinition("get_swap_status")), async ({ wallet, operationId }) => withToolLog("get_swap_status", { wallet, operationId }, async ({ correlationId }) => {
|
|
336
270
|
const { token } = await session(wallet, correlationId);
|
|
337
271
|
const status = await getSwapStatus(token, operationId, {
|
|
338
272
|
correlationId,
|
package/dist/tools/swap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swap.js","sourceRoot":"","sources":["../../src/tools/swap.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"swap.js","sourceRoot":"","sources":["../../src/tools/swap.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,cAAc,EAAkB,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EACL,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GAGjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,aAAa,EAEb,cAAc,GACf,MAAM,kBAAkB,CAAC;AAK1B,KAAK,UAAU,YAAY,CACzB,KAAkB,EAClB,SAAiC;IAcjC,OAAO,OAAO,CAAC,GAAG,CAChB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACxB,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvD,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QAC1C,IAAI,OAA2B,CAAC;QAChC,IAAI,UAA8B,CAAC;QACnC,IAAI,aAAa,IAAI,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,UAAU,CAC1B,GAAG,EACH,aAAa,EACb,KAAK,CAAC,OAAO,IAAI,SAAS,CAC3B,CAAC;gBACF,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC;gBACxB,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;QACH,CAAC;QACD,OAAO;YACL,GAAG,KAAK;YACR,aAAa;YACb,OAAO;YACP,UAAU;YACV,UAAU;YACV,UAAU;SACX,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,KAAa,EACb,OAAmB,EACnB,aAAqB,EACrB,MAA0B,EAC1B,aAAqB,EACrB,eAA2B;IAE3B,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE;QACnD,aAAa;QACb,eAAe;KAChB,CAAC,CAAC;IACH,OAAO;QACL,KAAK;QACL,OAAO,EAAE,aAAa;QACtB,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,SAAiC,EACjC,OAAe;IAEf,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,wCAAwC,OAAO,IAAI,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,0CAA0C,SAAS,sBAAsB,CAC1E,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,MAAM,SAAS,uFAAuF,CACvG,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC;AAED,sEAAsE;AACtE,SAAS,iBAAiB,CACxB,SAAiC,EACjC,OAAe;IAEf,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,uCAAuC,OAAO,wCAAwC,CACvF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,MAAM,SAAS,8FAA8F,CAC9G,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC;AAED,8EAA8E;AAC9E,KAAK,UAAU,gBAAgB,CAC7B,OAAoB,EACpB,IAOC;IAED,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,CACtD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,aAAa,CACnB,CAAC;IACF,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7B,IAAI,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,MAAM,UAAU,CAC1B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS,CAC/B,CAAC;QACF,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC;QAC3B,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,CAAC,IAAI,CAAC,MAAM,eAAe,IAAI,CAAC,SAAS,WAAW,CAClF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,SAAS,CAC9B,KAAK,EACL,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,EACZ,UAAU,EACV,IAAI,CAAC,aAAa,CACnB,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,SAAS,CAC5B,KAAK,EACL,IAAI,CAAC,EAAE,EACP,GAAG,CAAC,OAAO,EACX,SAAS,EACT,IAAI,CAAC,aAAa,EAClB,QAAQ,CAAC,KAAK,CACf,CAAC;IAEF,OAAO;QACL,KAAK;QACL,QAAQ;QACR,KAAK;QACL,IAAI;QACJ,GAAG;QACH,MAAM;QACN,UAAU;QACV,QAAQ;QACR,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,OAAoB;IACvE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE7C,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB,aAAa,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC,EACnD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CACnB,WAAW,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE;QACxE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;QAClE,OAAO,EAAE,CAAC;YACR,aAAa;YACb,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC3B,MAAM,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAClC,OAAO;oBACL,GAAG,CAAC;oBACJ,SAAS,EAAE,EAAE;oBACb,UAAU,EAAE,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;iBACvC,CAAC;YACJ,CAAC,CAAC;SACH,CAAC,CAAC;IACL,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB,aAAa,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC,EACjD,KAAK,EAAE,IAAI,EAAE,EAAE,CACb,WAAW,CAAC,kBAAkB,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE;QAChE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC;QACT,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YAC9B,IAAI,GAAG,MAAM,kBAAkB,CAC7B,KAAK,EACL;gBACE,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,EACD,EAAE,aAAa,EAAE,CAClB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CACb,6FAA6F,CAC9F,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,MAAM,gBAAgB,CAC3B,KAAK,EACL;gBACE,IAAI,EAAE;oBACJ,OAAO,EAAE,IAAI,CAAC,WAAW;oBACzB,MAAM,EAAE,IAAI,CAAC,UAAU;oBACvB,OAAO,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;iBAClC;gBACD,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,EACD,EAAE,aAAa,EAAE,CAClB,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9D,OAAO,EAAE,CAAC;YACR,aAAa;YACb,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK;SACN,CAAC,CAAC;IACL,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,eAAe,EACf,aAAa,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,EAC9C,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAC9C,WAAW,CACT,eAAe,EACf,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EACrC,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE;YAC3C,MAAM;YACN,IAAI;YACJ,EAAE;YACF,MAAM;YACN,OAAO;YACP,aAAa;SACd,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,YAAY,CAC5B,IAAI,CAAC,KAAK,EACV;YACE,IAAI,EAAE,IAAI,CAAC,QAAQ;YACnB,EAAE,EAAE,IAAI,CAAC,MAAM;YACf,OAAO,EAAE,IAAI,CAAC,MAAM;SACrB,EACD,EAAE,aAAa,EAAE,CAClB,CAAC;QACF,OAAO,EAAE,CAAC;YACR,aAAa;YACb,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU;YAC9C,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM;YACvB,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;YAC5C,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI;YACvB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,8FAA8F;SACrG,CAAC,CAAC;IACL,CAAC,CACF,CACJ,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,cAAc,EACd,aAAa,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,EAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAC9C,WAAW,CACT,cAAc,EACd,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EACrC,KAAK,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;QACnC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE;YAC3C,MAAM;YACN,IAAI;YACJ,EAAE;YACF,MAAM;YACN,OAAO;YACP,aAAa;SACd,CAAC,CAAC;QAEH,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE;YACxB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;SAC7B,CAAC,CAAC;QAEH,OAAO,CAAC,4BAA4B,EAAE;YACpC,aAAa;YACb,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACnC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAC/B,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,OAAO,EAAE,IAAI,CAAC,MAAM;SACrB,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,YAAY,CAC5B,IAAI,CAAC,KAAK,EACV;YACE,IAAI,EAAE,IAAI,CAAC,QAAQ;YACnB,EAAE,EAAE,IAAI,CAAC,MAAM;YACf,OAAO,EAAE,IAAI,CAAC,MAAM;SACrB,EACD,EAAE,aAAa,EAAE,CAClB,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QACD,4EAA4E;QAC5E,MAAM,SAAS,GACb,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC;QAEhE,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE;YACxB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;YAC5B,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;QAEH,MAAM,UAAU,GAAa;YAC3B,GAAG,IAAI,CAAC,QAAQ;YAChB,MAAM,EAAE,IAAI,CAAC,UAAU;SACxB,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,UAAU,CAC9B,IAAI,CAAC,KAAK,EACV;YACE,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,mBAAmB,EAAE,SAAS;YAC9B,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,IAAI,CAAC,MAAM;YACf,OAAO,EAAE,IAAI,CAAC,MAAM;SACrB,EACD,EAAE,aAAa,EAAE,CAClB,CAAC;QACF,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC,IAAI,CAAC,IAAI,CAAC,SAAS,EACnB,IAAI,CAAC,QAAQ,EACb,OAAO,CAAC,SAAS,CAClB,CAAC;QACF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,WAAW,CAChC,IAAI,CAAC,KAAK,EACV;YACE,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,IAAI,CAAC,MAAM;YACf,kBAAkB,EAAE,MAAM;SAC3B,EACD,EAAE,aAAa,EAAE,CAClB,CAAC;QAEF,MAAM,SAAS,GACb,MAAM,CAAC,IAAI,CACT,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,CAAC,IAAI,KAAK,sBAAsB,CACjE,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QAEjB,OAAO,EAAE,CAAC;YACR,aAAa;YACb,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,SAAS,EAAE,MAAM;YAC5C,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM;YACvB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ;YAC1C,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;YAChC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS;YAC7B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;YAC/B,IAAI,EAAE,kGAAkG;SACzG,CAAC,CAAC;IACL,CAAC,CACF,CACJ,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB,aAAa,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,EAChD,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,CAChC,WAAW,CACT,iBAAiB,EACjB,EAAE,MAAM,EAAE,WAAW,EAAE,EACvB,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE;QAC1B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE;YACrD,aAAa;SACd,CAAC,CAAC;QACH,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC,CACF,CACJ,CAAC;AACJ,CAAC"}
|
package/dist/tools/transfer.d.ts
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* MCP tools for balance reads and transfer relay (estimate → sign → forward).
|
|
3
3
|
*/
|
|
4
4
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
5
|
-
import {
|
|
5
|
+
import type { ToolHelpers } from "./helpers.js";
|
|
6
6
|
export declare function registerTransferTools(server: McpServer, helpers: ToolHelpers): void;
|
package/dist/tools/transfer.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MCP tools for balance reads and transfer relay (estimate → sign → forward).
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
import { canSend } from "../config.js";
|
|
4
|
+
import { assertServerWritable, canSend } from "../config.js";
|
|
6
5
|
import { resolveEntry } from "../keystore/store.js";
|
|
7
6
|
import { estimate, forward, operationState } from "../api/relay.js";
|
|
8
7
|
import { getBalance } from "../api/balances.js";
|
|
@@ -11,7 +10,7 @@ import { signForward } from "../signing/index.js";
|
|
|
11
10
|
import { tonPublicKeyHex } from "../signing/ton.js";
|
|
12
11
|
import { enforcePolicy } from "../policy.js";
|
|
13
12
|
import { logInfo, logWarn } from "../log.js";
|
|
14
|
-
import {
|
|
13
|
+
import { mcpToolConfig, toolDefinition } from "./definitions.js";
|
|
15
14
|
/**
|
|
16
15
|
* Estimate a transfer and, if the amount + fee would exceed the balance, reduce
|
|
17
16
|
* the amount to `balance - fee` and re-estimate. Fees for native coins are paid
|
|
@@ -119,18 +118,7 @@ async function resolveAmountForFee(opts) {
|
|
|
119
118
|
}
|
|
120
119
|
export function registerTransferTools(server, helpers) {
|
|
121
120
|
const { ok, withToolLog, session } = helpers;
|
|
122
|
-
server.registerTool("get_balance", {
|
|
123
|
-
title: "Get balance",
|
|
124
|
-
description: "Get the balance for a wallet on a network. Optionally pass a token contract address; omit for the native coin.",
|
|
125
|
-
inputSchema: {
|
|
126
|
-
wallet: z.string().optional().describe("Wallet name. Optional if only one exists."),
|
|
127
|
-
network: networkEnum,
|
|
128
|
-
tokenAddress: z
|
|
129
|
-
.string()
|
|
130
|
-
.optional()
|
|
131
|
-
.describe("Token contract address. Omit for the native coin."),
|
|
132
|
-
},
|
|
133
|
-
}, async ({ wallet, network, tokenAddress }) => withToolLog("get_balance", { wallet, network, tokenAddress }, async ({ correlationId }) => {
|
|
121
|
+
server.registerTool("get_balance", mcpToolConfig(toolDefinition("get_balance")), async ({ wallet, network, tokenAddress }) => withToolLog("get_balance", { wallet, network, tokenAddress }, async ({ correlationId }) => {
|
|
134
122
|
const entry = resolveEntry(wallet);
|
|
135
123
|
const address = entry.addresses[network];
|
|
136
124
|
if (!address) {
|
|
@@ -139,21 +127,7 @@ export function registerTransferTools(server, helpers) {
|
|
|
139
127
|
const result = await getBalance(network, address, tokenAddress);
|
|
140
128
|
return ok({ ...result, correlationId });
|
|
141
129
|
}));
|
|
142
|
-
server.registerTool("estimate_transfer", {
|
|
143
|
-
title: "Estimate transfer",
|
|
144
|
-
description: "Estimate fees for a transfer without sending. Returns fees and the number of transactions that would be signed.",
|
|
145
|
-
inputSchema: {
|
|
146
|
-
wallet: z.string().optional(),
|
|
147
|
-
network: networkEnum,
|
|
148
|
-
to: z.string().describe("Recipient address."),
|
|
149
|
-
amount: z.string().describe("Amount in asset units (decimal string)."),
|
|
150
|
-
tokenAddress: z
|
|
151
|
-
.string()
|
|
152
|
-
.optional()
|
|
153
|
-
.describe("Token contract address. Omit for the native coin."),
|
|
154
|
-
memo: z.string().optional(),
|
|
155
|
-
},
|
|
156
|
-
}, async ({ wallet, network, to, amount, tokenAddress, memo }) => withToolLog("estimate_transfer", { wallet, network, to, amount, tokenAddress, hasMemo: Boolean(memo) }, async ({ correlationId }) => {
|
|
130
|
+
server.registerTool("estimate_transfer", mcpToolConfig(toolDefinition("estimate_transfer")), async ({ wallet, network, to, amount, tokenAddress, memo }) => withToolLog("estimate_transfer", { wallet, network, to, amount, tokenAddress, hasMemo: Boolean(memo) }, async ({ correlationId }) => {
|
|
157
131
|
if (!canSend(network)) {
|
|
158
132
|
throw new Error(`Sending on "${network}" is not supported.`);
|
|
159
133
|
}
|
|
@@ -177,21 +151,8 @@ export function registerTransferTools(server, helpers) {
|
|
|
177
151
|
correlationId,
|
|
178
152
|
});
|
|
179
153
|
}));
|
|
180
|
-
server.registerTool("send_transfer", {
|
|
181
|
-
|
|
182
|
-
description: "Send a transfer: sign locally with the wallet's key and broadcast via the Ironwallet forward relay (estimate -> sign -> forward) for EVM, Tron, Bitcoin, Litecoin, Doge, Solana, XRP and TON. Returns the transaction hash (and operation id where applicable).",
|
|
183
|
-
inputSchema: {
|
|
184
|
-
wallet: z.string().optional(),
|
|
185
|
-
network: networkEnum,
|
|
186
|
-
to: z.string().describe("Recipient address."),
|
|
187
|
-
amount: z.string().describe("Amount in asset units (decimal string)."),
|
|
188
|
-
tokenAddress: z
|
|
189
|
-
.string()
|
|
190
|
-
.optional()
|
|
191
|
-
.describe("Token contract address. Omit for the native coin."),
|
|
192
|
-
memo: z.string().optional(),
|
|
193
|
-
},
|
|
194
|
-
}, async ({ wallet, network, to, amount, tokenAddress, memo }) => withToolLog("send_transfer", { wallet, network, to, amount, tokenAddress, hasMemo: Boolean(memo) }, async ({ correlationId, started }) => {
|
|
154
|
+
server.registerTool("send_transfer", mcpToolConfig(toolDefinition("send_transfer")), async ({ wallet, network, to, amount, tokenAddress, memo }) => withToolLog("send_transfer", { wallet, network, to, amount, tokenAddress, hasMemo: Boolean(memo) }, async ({ correlationId, started }) => {
|
|
155
|
+
assertServerWritable("send");
|
|
195
156
|
if (!canSend(network)) {
|
|
196
157
|
throw new Error(`Sending on "${network}" is not supported.`);
|
|
197
158
|
}
|
|
@@ -265,15 +226,7 @@ export function registerTransferTools(server, helpers) {
|
|
|
265
226
|
: {}),
|
|
266
227
|
});
|
|
267
228
|
}));
|
|
268
|
-
server.registerTool("get_operation_status", {
|
|
269
|
-
title: "Get operation status",
|
|
270
|
-
description: "Poll the state of a forward operation by its operation id.",
|
|
271
|
-
inputSchema: {
|
|
272
|
-
wallet: z.string().optional(),
|
|
273
|
-
network: networkEnum,
|
|
274
|
-
operationId: z.string(),
|
|
275
|
-
},
|
|
276
|
-
}, async ({ wallet, network, operationId }) => withToolLog("get_operation_status", { wallet, network, operationId }, async ({ correlationId }) => {
|
|
229
|
+
server.registerTool("get_operation_status", mcpToolConfig(toolDefinition("get_operation_status")), async ({ wallet, network, operationId }) => withToolLog("get_operation_status", { wallet, network, operationId }, async ({ correlationId }) => {
|
|
277
230
|
const { token } = await session(wallet, correlationId);
|
|
278
231
|
const state = await operationState(network, token, operationId, {
|
|
279
232
|
correlationId,
|