@waiaas/mcp 2.11.0-rc.2 → 2.11.0-rc.20
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/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +8 -2
- package/dist/server.js.map +1 -1
- package/dist/tools/action-provider.d.ts +14 -0
- package/dist/tools/action-provider.d.ts.map +1 -1
- package/dist/tools/action-provider.js +132 -30
- package/dist/tools/action-provider.js.map +1 -1
- package/dist/tools/approve-token.js +7 -7
- package/dist/tools/approve-token.js.map +1 -1
- package/dist/tools/build-userop.js +2 -2
- package/dist/tools/build-userop.js.map +1 -1
- package/dist/tools/call-contract.js +2 -2
- package/dist/tools/call-contract.js.map +1 -1
- package/dist/tools/get-assets.js +1 -1
- package/dist/tools/get-assets.js.map +1 -1
- package/dist/tools/get-balance.js +1 -1
- package/dist/tools/get-balance.js.map +1 -1
- package/dist/tools/get-nft-metadata.js +1 -1
- package/dist/tools/get-nft-metadata.js.map +1 -1
- package/dist/tools/get-policies.d.ts.map +1 -1
- package/dist/tools/get-policies.js +6 -0
- package/dist/tools/get-policies.js.map +1 -1
- package/dist/tools/get-rpc-proxy-url.d.ts +11 -0
- package/dist/tools/get-rpc-proxy-url.d.ts.map +1 -0
- package/dist/tools/get-rpc-proxy-url.js +45 -0
- package/dist/tools/get-rpc-proxy-url.js.map +1 -0
- package/dist/tools/get-tokens.js +1 -1
- package/dist/tools/get-tokens.js.map +1 -1
- package/dist/tools/list-incoming-transactions.js +1 -1
- package/dist/tools/list-incoming-transactions.js.map +1 -1
- package/dist/tools/list-nfts.js +1 -1
- package/dist/tools/list-nfts.js.map +1 -1
- package/dist/tools/list-sessions.d.ts +8 -0
- package/dist/tools/list-sessions.d.ts.map +1 -0
- package/dist/tools/list-sessions.js +25 -0
- package/dist/tools/list-sessions.js.map +1 -0
- package/dist/tools/resolve-asset.d.ts +14 -0
- package/dist/tools/resolve-asset.d.ts.map +1 -0
- package/dist/tools/resolve-asset.js +139 -0
- package/dist/tools/resolve-asset.js.map +1 -0
- package/dist/tools/send-batch.js +1 -1
- package/dist/tools/send-batch.js.map +1 -1
- package/dist/tools/send-token.js +7 -7
- package/dist/tools/send-token.js.map +1 -1
- package/dist/tools/sign-transaction.js +1 -1
- package/dist/tools/sign-transaction.js.map +1 -1
- package/dist/tools/simulate-transaction.js +3 -3
- package/dist/tools/simulate-transaction.js.map +1 -1
- package/dist/tools/transfer-nft.js +2 -2
- package/dist/tools/transfer-nft.js.map +1 -1
- package/package.json +1 -1
package/dist/server.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* createMcpServer: factory that creates an MCP server with
|
|
2
|
+
* createMcpServer: factory that creates an MCP server with 42 tools + 4 resource groups (3 static + 1 template).
|
|
3
3
|
*
|
|
4
4
|
* Each tool/resource is registered via a dedicated register function
|
|
5
5
|
* from its own module, following Dependency Injection pattern.
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAsDjD,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CA+D9F"}
|
package/dist/server.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* createMcpServer: factory that creates an MCP server with
|
|
2
|
+
* createMcpServer: factory that creates an MCP server with 42 tools + 4 resource groups (3 static + 1 template).
|
|
3
3
|
*
|
|
4
4
|
* Each tool/resource is registered via a dedicated register function
|
|
5
5
|
* from its own module, following Dependency Injection pattern.
|
|
@@ -28,6 +28,7 @@ import { registerWcStatus } from './tools/wc-status.js';
|
|
|
28
28
|
import { registerWcDisconnect } from './tools/wc-disconnect.js';
|
|
29
29
|
import { registerConnectInfo } from './tools/connect-info.js';
|
|
30
30
|
import { registerGetPolicies } from './tools/get-policies.js';
|
|
31
|
+
import { registerListSessions } from './tools/list-sessions.js';
|
|
31
32
|
import { registerGetTokens } from './tools/get-tokens.js';
|
|
32
33
|
import { registerListIncomingTransactions } from './tools/list-incoming-transactions.js';
|
|
33
34
|
import { registerGetIncomingSummary } from './tools/get-incoming-summary.js';
|
|
@@ -50,6 +51,8 @@ import { registerHyperliquidTools } from './tools/hyperliquid.js';
|
|
|
50
51
|
import { registerPolymarketTools } from './tools/polymarket.js';
|
|
51
52
|
import { registerListOffchainActions } from './tools/list-offchain-actions.js';
|
|
52
53
|
import { registerListCredentials } from './tools/list-credentials.js';
|
|
54
|
+
import { registerGetRpcProxyUrl } from './tools/get-rpc-proxy-url.js';
|
|
55
|
+
import { registerResolveAsset } from './tools/resolve-asset.js';
|
|
53
56
|
// Resource registrations (Task 2)
|
|
54
57
|
import { registerWalletBalance } from './resources/wallet-balance.js';
|
|
55
58
|
import { registerWalletAddress } from './resources/wallet-address.js';
|
|
@@ -69,8 +72,9 @@ export function createMcpServer(apiClient, walletContext) {
|
|
|
69
72
|
name: serverName,
|
|
70
73
|
version: '0.0.0',
|
|
71
74
|
});
|
|
72
|
-
// Register
|
|
75
|
+
// Register 42 tools
|
|
73
76
|
registerConnectInfo(server, apiClient);
|
|
77
|
+
registerListSessions(server, apiClient);
|
|
74
78
|
registerGetPolicies(server, apiClient, walletContext);
|
|
75
79
|
registerGetTokens(server, apiClient, walletContext);
|
|
76
80
|
registerSendToken(server, apiClient, walletContext);
|
|
@@ -111,6 +115,8 @@ export function createMcpServer(apiClient, walletContext) {
|
|
|
111
115
|
registerPolymarketTools(server, apiClient, walletContext);
|
|
112
116
|
registerListOffchainActions(server, apiClient, walletContext);
|
|
113
117
|
registerListCredentials(server, apiClient, walletContext);
|
|
118
|
+
registerGetRpcProxyUrl(server, apiClient, walletContext);
|
|
119
|
+
registerResolveAsset(server, apiClient);
|
|
114
120
|
// Register 4 resource groups (3 static + 1 template)
|
|
115
121
|
registerWalletBalance(server, apiClient, walletContext);
|
|
116
122
|
registerWalletAddress(server, apiClient, walletContext);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,qBAAqB;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,kCAAkC,EAAE,MAAM,0CAA0C,CAAC;AAC9F,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,15 +4,29 @@
|
|
|
4
4
|
* Fetches mcpExpose=true providers from daemon REST API and registers
|
|
5
5
|
* each action as an MCP tool with naming convention: action_{provider}_{action}.
|
|
6
6
|
*
|
|
7
|
+
* Phase 404: When inputSchema JSON is available in the provider response,
|
|
8
|
+
* individual typed parameters are registered instead of generic params bag.
|
|
9
|
+
*
|
|
7
10
|
* Degraded mode: if REST fetch fails, returns empty Map (14 built-in tools
|
|
8
11
|
* remain available).
|
|
9
12
|
*
|
|
10
13
|
* RegisteredTool references are stored for potential future remove() calls.
|
|
11
14
|
*/
|
|
15
|
+
import type { ZodTypeAny } from 'zod';
|
|
12
16
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
13
17
|
import type { RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
14
18
|
import { type ApiClient } from '../api-client.js';
|
|
15
19
|
import { type WalletContext } from '../server.js';
|
|
20
|
+
/**
|
|
21
|
+
* Convert a JSON Schema's properties into a flat Record<string, ZodTypeAny>
|
|
22
|
+
* suitable for MCP tool schema registration.
|
|
23
|
+
*
|
|
24
|
+
* Returns null if the schema has no properties or is invalid.
|
|
25
|
+
*
|
|
26
|
+
* @param jsonSchema - JSON Schema object with properties/required fields
|
|
27
|
+
* @returns Record of field name -> Zod schema, or null if empty
|
|
28
|
+
*/
|
|
29
|
+
export declare function jsonSchemaToZodParams(jsonSchema: Record<string, unknown>): Record<string, ZodTypeAny> | null;
|
|
16
30
|
/**
|
|
17
31
|
* Fetch mcpExpose=true action providers from daemon and register each action
|
|
18
32
|
* as an MCP tool. Returns Map<toolName, RegisteredTool> for future removal.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-provider.d.ts","sourceRoot":"","sources":["../../src/tools/action-provider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"action-provider.d.ts","sourceRoot":"","sources":["../../src/tools/action-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,KAAK,SAAS,EAAgB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,cAAc,CAAC;AAyCpE;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI,CA8BnC;AAgBD;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,SAAS,EACpB,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CA0HtC"}
|
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
* Fetches mcpExpose=true providers from daemon REST API and registers
|
|
5
5
|
* each action as an MCP tool with naming convention: action_{provider}_{action}.
|
|
6
6
|
*
|
|
7
|
+
* Phase 404: When inputSchema JSON is available in the provider response,
|
|
8
|
+
* individual typed parameters are registered instead of generic params bag.
|
|
9
|
+
*
|
|
7
10
|
* Degraded mode: if REST fetch fails, returns empty Map (14 built-in tools
|
|
8
11
|
* remain available).
|
|
9
12
|
*
|
|
@@ -12,6 +15,61 @@
|
|
|
12
15
|
import { z } from 'zod';
|
|
13
16
|
import { toToolResult } from '../api-client.js';
|
|
14
17
|
import { withWalletPrefix } from '../server.js';
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// JSON Schema -> Zod params converter
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
/** JSON Schema type -> Zod type mapping */
|
|
22
|
+
const JSON_SCHEMA_TYPE_MAP = {
|
|
23
|
+
string: () => z.string(),
|
|
24
|
+
number: () => z.number(),
|
|
25
|
+
integer: () => z.number(),
|
|
26
|
+
boolean: () => z.boolean(),
|
|
27
|
+
array: () => z.array(z.unknown()),
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Convert a JSON Schema's properties into a flat Record<string, ZodTypeAny>
|
|
31
|
+
* suitable for MCP tool schema registration.
|
|
32
|
+
*
|
|
33
|
+
* Returns null if the schema has no properties or is invalid.
|
|
34
|
+
*
|
|
35
|
+
* @param jsonSchema - JSON Schema object with properties/required fields
|
|
36
|
+
* @returns Record of field name -> Zod schema, or null if empty
|
|
37
|
+
*/
|
|
38
|
+
export function jsonSchemaToZodParams(jsonSchema) {
|
|
39
|
+
const properties = jsonSchema.properties;
|
|
40
|
+
if (!properties || Object.keys(properties).length === 0)
|
|
41
|
+
return null;
|
|
42
|
+
const required = new Set(Array.isArray(jsonSchema.required) ? jsonSchema.required : []);
|
|
43
|
+
const result = {};
|
|
44
|
+
for (const [key, prop] of Object.entries(properties)) {
|
|
45
|
+
const type = prop.type;
|
|
46
|
+
const factory = type ? JSON_SCHEMA_TYPE_MAP[type] : undefined;
|
|
47
|
+
let zodField = factory ? factory() : z.unknown();
|
|
48
|
+
// Apply description
|
|
49
|
+
const desc = prop.description;
|
|
50
|
+
if (desc) {
|
|
51
|
+
zodField = zodField.describe(desc);
|
|
52
|
+
}
|
|
53
|
+
// Make optional if not required
|
|
54
|
+
if (!required.has(key)) {
|
|
55
|
+
zodField = zodField.optional();
|
|
56
|
+
}
|
|
57
|
+
result[key] = zodField;
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
// -- Common MCP fields shared across all action tools --
|
|
62
|
+
const COMMON_MCP_FIELDS = {
|
|
63
|
+
network: z.string().optional()
|
|
64
|
+
.describe('Target network. Required for EVM wallets; auto-resolved for Solana.'),
|
|
65
|
+
wallet_id: z.string().optional()
|
|
66
|
+
.describe('Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet.'),
|
|
67
|
+
gas_condition: z.object({
|
|
68
|
+
max_gas_price: z.string().optional().describe('Max gas price in wei (EVM baseFee+priorityFee)'),
|
|
69
|
+
max_priority_fee: z.string().optional().describe('Max priority fee in wei (EVM) or micro-lamports (Solana)'),
|
|
70
|
+
timeout: z.number().optional().describe('Max wait time in seconds (60-86400)'),
|
|
71
|
+
}).optional().describe('Gas price condition for deferred execution. At least one of max_gas_price or max_priority_fee required.'),
|
|
72
|
+
};
|
|
15
73
|
/**
|
|
16
74
|
* Fetch mcpExpose=true action providers from daemon and register each action
|
|
17
75
|
* as an MCP tool. Returns Map<toolName, RegisteredTool> for future removal.
|
|
@@ -36,37 +94,81 @@ export async function registerActionProviderTools(server, apiClient, walletConte
|
|
|
36
94
|
for (const action of provider.actions) {
|
|
37
95
|
const toolName = `action_${provider.name}_${action.name}`;
|
|
38
96
|
const description = withWalletPrefix(`[${provider.name}] ${action.description} (chain: ${action.chain}, risk: ${action.riskLevel})`, walletContext?.walletName);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
wallet_id: z.string().optional()
|
|
45
|
-
.describe('Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet.'),
|
|
46
|
-
gas_condition: z.object({
|
|
47
|
-
max_gas_price: z.string().optional().describe('Max gas price in wei (EVM baseFee+priorityFee)'),
|
|
48
|
-
max_priority_fee: z.string().optional().describe('Max priority fee in wei (EVM) or micro-lamports (Solana)'),
|
|
49
|
-
timeout: z.number().optional().describe('Max wait time in seconds (60-86400)'),
|
|
50
|
-
}).optional().describe('Gas price condition for deferred execution. At least one of max_gas_price or max_priority_fee required.'),
|
|
51
|
-
}, async (args) => {
|
|
52
|
-
const body = {};
|
|
53
|
-
if (args.params)
|
|
54
|
-
body.params = args.params;
|
|
55
|
-
if (args.network)
|
|
56
|
-
body.network = args.network;
|
|
57
|
-
if (args.wallet_id)
|
|
58
|
-
body.walletId = args.wallet_id;
|
|
59
|
-
if (args.gas_condition) {
|
|
60
|
-
body.gasCondition = {
|
|
61
|
-
maxGasPrice: args.gas_condition.max_gas_price,
|
|
62
|
-
maxPriorityFee: args.gas_condition.max_priority_fee,
|
|
63
|
-
timeout: args.gas_condition.timeout,
|
|
64
|
-
};
|
|
97
|
+
// Try to build typed schema from inputSchema JSON
|
|
98
|
+
let typedParams = null;
|
|
99
|
+
try {
|
|
100
|
+
if (action.inputSchema && typeof action.inputSchema === 'object') {
|
|
101
|
+
typedParams = jsonSchemaToZodParams(action.inputSchema);
|
|
65
102
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// Conversion failed -- fall through to generic params
|
|
106
|
+
console.error(`[waiaas-mcp] Failed to convert inputSchema for ${toolName}, using generic params`);
|
|
107
|
+
}
|
|
108
|
+
if (typedParams) {
|
|
109
|
+
// Typed schema: individual fields + common MCP fields
|
|
110
|
+
const schema = {
|
|
111
|
+
...typedParams,
|
|
112
|
+
...COMMON_MCP_FIELDS,
|
|
113
|
+
};
|
|
114
|
+
// Collect typed field names for handler extraction
|
|
115
|
+
const typedFieldNames = Object.keys(typedParams);
|
|
116
|
+
const tool = server.tool(toolName, description, schema, async (args) => {
|
|
117
|
+
const body = {};
|
|
118
|
+
// Collect typed fields into params object for REST API
|
|
119
|
+
const params = {};
|
|
120
|
+
for (const field of typedFieldNames) {
|
|
121
|
+
if (args[field] !== undefined) {
|
|
122
|
+
params[field] = args[field];
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (Object.keys(params).length > 0)
|
|
126
|
+
body.params = params;
|
|
127
|
+
// Handle common fields
|
|
128
|
+
if (args.network)
|
|
129
|
+
body.network = args.network;
|
|
130
|
+
if (args.wallet_id)
|
|
131
|
+
body.walletId = args.wallet_id;
|
|
132
|
+
if (args.gas_condition) {
|
|
133
|
+
const gc = args.gas_condition;
|
|
134
|
+
body.gasCondition = {
|
|
135
|
+
maxGasPrice: gc.max_gas_price,
|
|
136
|
+
maxPriorityFee: gc.max_priority_fee,
|
|
137
|
+
timeout: gc.timeout,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
const res = await apiClient.post(`/v1/actions/${provider.name}/${action.name}`, body);
|
|
141
|
+
return toToolResult(res);
|
|
142
|
+
});
|
|
143
|
+
registered.set(toolName, tool);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
// Fallback: generic params bag
|
|
147
|
+
const tool = server.tool(toolName, description, {
|
|
148
|
+
params: z.record(z.unknown()).optional()
|
|
149
|
+
.describe('Action-specific parameters as key-value pairs'),
|
|
150
|
+
...COMMON_MCP_FIELDS,
|
|
151
|
+
}, async (args) => {
|
|
152
|
+
const body = {};
|
|
153
|
+
if (args.params)
|
|
154
|
+
body.params = args.params;
|
|
155
|
+
if (args.network)
|
|
156
|
+
body.network = args.network;
|
|
157
|
+
if (args.wallet_id)
|
|
158
|
+
body.walletId = args.wallet_id;
|
|
159
|
+
if (args.gas_condition) {
|
|
160
|
+
const gc = args.gas_condition;
|
|
161
|
+
body.gasCondition = {
|
|
162
|
+
maxGasPrice: gc.max_gas_price,
|
|
163
|
+
maxPriorityFee: gc.max_priority_fee,
|
|
164
|
+
timeout: gc.timeout,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
const res = await apiClient.post(`/v1/actions/${provider.name}/${action.name}`, body);
|
|
168
|
+
return toToolResult(res);
|
|
169
|
+
});
|
|
170
|
+
registered.set(toolName, tool);
|
|
171
|
+
}
|
|
70
172
|
}
|
|
71
173
|
}
|
|
72
174
|
if (registered.size > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-provider.js","sourceRoot":"","sources":["../../src/tools/action-provider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"action-provider.js","sourceRoot":"","sources":["../../src/tools/action-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,13 +11,13 @@ export function registerApproveToken(server, apiClient, walletContext) {
|
|
|
11
11
|
server.tool('approve_token', withWalletPrefix('Approve a spender to transfer tokens on your behalf. Requires APPROVED_SPENDERS policy.', walletContext?.walletName), {
|
|
12
12
|
spender: z.string().describe('Spender address'),
|
|
13
13
|
token: z.object({
|
|
14
|
-
address: z.string().describe('Token mint (SPL) or contract address (ERC-20)'),
|
|
15
|
-
decimals: z.number().describe('Token decimals (e.g., 6 for USDC)'),
|
|
16
|
-
symbol: z.string().describe('Token symbol (e.g., USDC)'),
|
|
17
|
-
assetId: z.string().optional().describe('CAIP-19 asset identifier
|
|
18
|
-
}).describe('Token info.
|
|
19
|
-
amount: z.string().describe('Approval amount in smallest
|
|
20
|
-
network: z.string().optional().describe('Target network (e.g., polygon-mainnet). Required for EVM wallets; auto-resolved for Solana.'),
|
|
14
|
+
address: z.string().optional().describe('Token mint (SPL) or contract address (ERC-20). Optional when assetId is provided.'),
|
|
15
|
+
decimals: z.number().optional().describe('Token decimals (e.g., 6 for USDC). Optional when assetId is provided.'),
|
|
16
|
+
symbol: z.string().optional().describe('Token symbol (e.g., USDC). Optional when assetId is provided.'),
|
|
17
|
+
assetId: z.string().optional().describe('CAIP-19 asset identifier. When provided alone (without address/decimals/symbol), the daemon auto-resolves from the token registry.'),
|
|
18
|
+
}).describe('Token info. Provide full metadata (address/decimals/symbol) OR assetId alone for auto-resolve.'),
|
|
19
|
+
amount: z.string().describe('Approval amount in smallest units (wei for EVM, lamports for Solana). Example: "1000000" = 1 USDC (6 decimals). Use max uint256 for unlimited: "115792089237316195423570985008687907853269984665640564039457584007913129639935"'),
|
|
20
|
+
network: z.string().optional().describe('Target network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137"). Required for EVM wallets; auto-resolved for Solana.'),
|
|
21
21
|
wallet_id: z.string().optional().describe('Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet.'),
|
|
22
22
|
gas_condition: z.object({
|
|
23
23
|
max_gas_price: z.string().optional().describe('Max gas price in wei (EVM baseFee+priorityFee)'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approve-token.js","sourceRoot":"","sources":["../../src/tools/approve-token.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,SAAoB,EAAE,aAA6B;IACzG,MAAM,CAAC,IAAI,CACT,eAAe,EACf,gBAAgB,CAAC,yFAAyF,EAAE,aAAa,EAAE,UAAU,CAAC,EACtI;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC
|
|
1
|
+
{"version":3,"file":"approve-token.js","sourceRoot":"","sources":["../../src/tools/approve-token.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,SAAoB,EAAE,aAA6B;IACzG,MAAM,CAAC,IAAI,CACT,eAAe,EACf,gBAAgB,CAAC,yFAAyF,EAAE,aAAa,EAAE,UAAU,CAAC,EACtI;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mFAAmF,CAAC;YAC5H,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;YACjH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC;YACvG,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACrC,oIAAoI,CACrI;SACF,CAAC,CAAC,QAAQ,CAAC,gGAAgG,CAAC;QAC7G,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iOAAiO,CAAC;QAC9P,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sHAAsH,CAAC;QAC/J,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uGAAuG,CAAC;QAClJ,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC;YACtB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;YAC/F,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;YAC5G,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;SAC/E,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yGAAyG,CAAC;KAClI,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,IAAI,GAA4B;YACpC,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5D,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QACnD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG;gBAClB,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa;gBAC7C,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,gBAAgB;gBACnD,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO;aACpC,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;QACnE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -13,13 +13,13 @@ export function registerBuildUserop(server, apiClient, walletContext) {
|
|
|
13
13
|
wallet_id: z.string().describe('Smart Account wallet ID (UUID).'),
|
|
14
14
|
type: z.enum(['TRANSFER', 'TOKEN_TRANSFER', 'CONTRACT_CALL', 'APPROVE', 'BATCH']).describe('Transaction type.'),
|
|
15
15
|
to: z.string().optional().describe('Recipient address.'),
|
|
16
|
-
amount: z.string().optional().describe('Amount in
|
|
16
|
+
amount: z.string().optional().describe('Amount in smallest units (wei). Example: "1000000000000000000" = 1 ETH, "1000000" = 1 USDC'),
|
|
17
17
|
token: z.string().optional().describe('Token contract address (for TOKEN_TRANSFER/APPROVE).'),
|
|
18
18
|
contract: z.string().optional().describe('Contract address (for CONTRACT_CALL).'),
|
|
19
19
|
method: z.string().optional().describe('Contract method name (for CONTRACT_CALL).'),
|
|
20
20
|
abi: z.array(z.unknown()).optional().describe('Contract ABI (for CONTRACT_CALL).'),
|
|
21
21
|
args: z.array(z.unknown()).optional().describe('Contract method args (for CONTRACT_CALL).'),
|
|
22
|
-
calls: z.array(z.object({ to: z.string(), amount: z.string().optional(), data: z.string().optional() })).optional().describe('Batch calls (for BATCH type).'),
|
|
22
|
+
calls: z.array(z.object({ to: z.string(), amount: z.string().optional().describe('Amount in smallest units (wei)'), data: z.string().optional() })).optional().describe('Batch calls (for BATCH type).'),
|
|
23
23
|
network: z.string().describe('EVM network (e.g., "ethereum-sepolia").'),
|
|
24
24
|
}, async (args) => {
|
|
25
25
|
const request = { type: args.type };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-userop.js","sourceRoot":"","sources":["../../src/tools/build-userop.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,mBAAmB,CACjC,MAAiB,EACjB,SAAoB,EACpB,aAA6B;IAE7B,MAAM,CAAC,IAAI,CACT,cAAc,EACd,gBAAgB,CACd,oKAAoK,EACpK,aAAa,EAAE,UAAU,CAC1B,EACD;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QACjE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC/G,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACxD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"build-userop.js","sourceRoot":"","sources":["../../src/tools/build-userop.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ export function registerCallContract(server, apiClient, walletContext) {
|
|
|
13
13
|
to: z.string().describe('Contract address'),
|
|
14
14
|
calldata: z.string().optional().describe('Hex-encoded calldata (EVM)'),
|
|
15
15
|
abi: z.array(z.record(z.unknown())).optional().describe('ABI fragment for decoding (EVM)'),
|
|
16
|
-
value: z.string().optional().describe('Native token value in
|
|
16
|
+
value: z.string().optional().describe('Native token value in smallest units (wei). Example: "1000000000000000000" = 1 ETH'),
|
|
17
17
|
programId: z.string().optional().describe('Program ID (Solana)'),
|
|
18
18
|
instructionData: z.string().optional().describe('Base64-encoded instruction data (Solana)'),
|
|
19
19
|
accounts: z.array(z.object({
|
|
@@ -21,7 +21,7 @@ export function registerCallContract(server, apiClient, walletContext) {
|
|
|
21
21
|
isSigner: z.boolean(),
|
|
22
22
|
isWritable: z.boolean(),
|
|
23
23
|
})).optional().describe('Account metas (Solana)'),
|
|
24
|
-
network: z.string().optional().describe('Target network (e.g., polygon-mainnet). Required for EVM wallets; auto-resolved for Solana.'),
|
|
24
|
+
network: z.string().optional().describe('Target network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137"). Required for EVM wallets; auto-resolved for Solana.'),
|
|
25
25
|
wallet_id: z.string().optional().describe('Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet.'),
|
|
26
26
|
gas_condition: z.object({
|
|
27
27
|
max_gas_price: z.string().optional().describe('Max gas price in wei (EVM baseFee+priorityFee)'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-contract.js","sourceRoot":"","sources":["../../src/tools/call-contract.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,SAAoB,EAAE,aAA6B;IACzG,MAAM,CAAC,IAAI,CACT,eAAe,EACf,gBAAgB,CAAC,qKAAqK,EAAE,aAAa,EAAE,UAAU,CAAC,EAClN;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC3C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACtE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QAC1F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"call-contract.js","sourceRoot":"","sources":["../../src/tools/call-contract.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/get-assets.js
CHANGED
|
@@ -6,7 +6,7 @@ import { toToolResult } from '../api-client.js';
|
|
|
6
6
|
import { withWalletPrefix } from '../server.js';
|
|
7
7
|
export function registerGetAssets(server, apiClient, walletContext) {
|
|
8
8
|
server.tool('get_assets', withWalletPrefix('Get all assets (native + tokens) held by the wallet.', walletContext?.walletName), {
|
|
9
|
-
network: z.string().optional().describe(
|
|
9
|
+
network: z.string().optional().describe('Query assets for specific network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137"). Use "all" for all networks. Required for EVM wallets; auto-resolved for Solana.'),
|
|
10
10
|
display_currency: z.string().optional().describe('Display currency for asset value conversion (e.g. KRW, EUR). Defaults to server setting.'),
|
|
11
11
|
wallet_id: z.string().optional().describe('Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet.'),
|
|
12
12
|
}, async (args) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-assets.js","sourceRoot":"","sources":["../../src/tools/get-assets.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,SAAoB,EAAE,aAA6B;IACtG,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,gBAAgB,CAAC,sDAAsD,EAAE,aAAa,EAAE,UAAU,CAAC,EACnG;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"get-assets.js","sourceRoot":"","sources":["../../src/tools/get-assets.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,SAAoB,EAAE,aAA6B;IACtG,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,gBAAgB,CAAC,sDAAsD,EAAE,aAAa,EAAE,UAAU,CAAC,EACnG;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qKAAqK,CAAC;QAC9M,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0FAA0F,CAAC;QAC5I,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uGAAuG,CAAC;KACnJ,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,gBAAgB;YAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACjF,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/E,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { toToolResult } from '../api-client.js';
|
|
|
6
6
|
import { withWalletPrefix } from '../server.js';
|
|
7
7
|
export function registerGetBalance(server, apiClient, walletContext) {
|
|
8
8
|
server.tool('get_balance', withWalletPrefix('Get the current balance of the wallet.', walletContext?.walletName), {
|
|
9
|
-
network: z.string().optional().describe(
|
|
9
|
+
network: z.string().optional().describe('Query balance for specific network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137"). Use "all" for all networks. Required for EVM wallets; auto-resolved for Solana.'),
|
|
10
10
|
display_currency: z.string().optional().describe('Display currency for balance conversion (e.g. KRW, EUR). Defaults to server setting.'),
|
|
11
11
|
wallet_id: z.string().optional().describe('Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet.'),
|
|
12
12
|
}, async (args) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-balance.js","sourceRoot":"","sources":["../../src/tools/get-balance.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,SAAoB,EAAE,aAA6B;IACvG,MAAM,CAAC,IAAI,CACT,aAAa,EACb,gBAAgB,CAAC,wCAAwC,EAAE,aAAa,EAAE,UAAU,CAAC,EACrF;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"get-balance.js","sourceRoot":"","sources":["../../src/tools/get-balance.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,SAAoB,EAAE,aAA6B;IACvG,MAAM,CAAC,IAAI,CACT,aAAa,EACb,gBAAgB,CAAC,wCAAwC,EAAE,aAAa,EAAE,UAAU,CAAC,EACrF;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sKAAsK,CAAC;QAC/M,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sFAAsF,CAAC;QACxI,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uGAAuG,CAAC;KACnJ,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,gBAAgB;YAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACjF,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,oBAAoB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChF,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -14,7 +14,7 @@ import { withWalletPrefix } from '../server.js';
|
|
|
14
14
|
export function registerGetNftMetadata(server, apiClient, walletContext) {
|
|
15
15
|
server.tool('get_nft_metadata', withWalletPrefix('Get detailed metadata for a specific NFT (name, image, attributes, CAIP-19 assetId). EVM: contractAddress:tokenId, Solana: mintAddress.', walletContext?.walletName), {
|
|
16
16
|
token_identifier: z.string().describe('NFT identifier. EVM: {contractAddress}:{tokenId}. Solana: {mintAddress}.'),
|
|
17
|
-
network: z.string().describe('Network identifier (e.g., "ethereum-mainnet", "solana-mainnet").'),
|
|
17
|
+
network: z.string().describe('Network identifier (e.g., "ethereum-mainnet", "solana-mainnet" or CAIP-2 "eip155:1").'),
|
|
18
18
|
wallet_id: z.string().optional().describe('Target wallet ID. Required for multi-wallet sessions.'),
|
|
19
19
|
}, async (args) => {
|
|
20
20
|
const params = new URLSearchParams();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-nft-metadata.js","sourceRoot":"","sources":["../../src/tools/get-nft-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,sBAAsB,CACpC,MAAiB,EACjB,SAAoB,EACpB,aAA6B;IAE7B,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,gBAAgB,CACd,yIAAyI,EACzI,aAAa,EAAE,UAAU,CAC1B,EACD;QACE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;QACjH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"get-nft-metadata.js","sourceRoot":"","sources":["../../src/tools/get-nft-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,sBAAsB,CACpC,MAAiB,EACjB,SAAoB,EACpB,aAA6B;IAE7B,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,gBAAgB,CACd,yIAAyI,EACzI,aAAa,EAAE,UAAU,CAC1B,EACD;QACE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;QACjH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uFAAuF,CAAC;QACrH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;KACnG,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAChC,mBAAmB,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CACpF,CAAC;QACF,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-policies.d.ts","sourceRoot":"","sources":["../../src/tools/get-policies.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,KAAK,SAAS,EAAgB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,cAAc,CAAC;AAEpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"get-policies.d.ts","sourceRoot":"","sources":["../../src/tools/get-policies.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,KAAK,SAAS,EAAgB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,cAAc,CAAC;AAEpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAmBhH"}
|
|
@@ -7,10 +7,16 @@ import { withWalletPrefix } from '../server.js';
|
|
|
7
7
|
export function registerGetPolicies(server, apiClient, walletContext) {
|
|
8
8
|
server.tool('get_policies', withWalletPrefix('Get policies applied to the wallet. Shows spending limits, whitelists, rate limits, and other rules.', walletContext?.walletName), {
|
|
9
9
|
wallet_id: z.string().optional().describe('Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet.'),
|
|
10
|
+
limit: z.number().int().min(1).max(200).optional().describe('Max items to return (default: 50)'),
|
|
11
|
+
offset: z.number().int().min(0).optional().describe('Number of items to skip (default: 0)'),
|
|
10
12
|
}, async (args) => {
|
|
11
13
|
const params = new URLSearchParams();
|
|
12
14
|
if (args.wallet_id)
|
|
13
15
|
params.set('walletId', args.wallet_id);
|
|
16
|
+
if (args.limit !== undefined)
|
|
17
|
+
params.set('limit', String(args.limit));
|
|
18
|
+
if (args.offset !== undefined)
|
|
19
|
+
params.set('offset', String(args.offset));
|
|
14
20
|
const qs = params.toString();
|
|
15
21
|
const result = await apiClient.get('/v1/policies' + (qs ? '?' + qs : ''));
|
|
16
22
|
return toToolResult(result);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-policies.js","sourceRoot":"","sources":["../../src/tools/get-policies.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,SAAoB,EAAE,aAA6B;IACxG,MAAM,CAAC,IAAI,CACT,cAAc,EACd,gBAAgB,CAAC,sGAAsG,EAAE,aAAa,EAAE,UAAU,CAAC,EACnJ;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uGAAuG,CAAC;
|
|
1
|
+
{"version":3,"file":"get-policies.js","sourceRoot":"","sources":["../../src/tools/get-policies.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,SAAoB,EAAE,aAA6B;IACxG,MAAM,CAAC,IAAI,CACT,cAAc,EACd,gBAAgB,CAAC,sGAAsG,EAAE,aAAa,EAAE,UAAU,CAAC,EACnJ;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uGAAuG,CAAC;QAClJ,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAChG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;KAC5F,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACzE,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1E,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_rpc_proxy_url tool: Get the EVM RPC proxy URL for a wallet and chain.
|
|
3
|
+
*
|
|
4
|
+
* Queries connect-info to determine if RPC proxy is enabled and constructs
|
|
5
|
+
* the full URL to use as --rpc-url for Forge, Hardhat, ethers.js, or viem.
|
|
6
|
+
*/
|
|
7
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
8
|
+
import { type ApiClient } from '../api-client.js';
|
|
9
|
+
import { type WalletContext } from '../server.js';
|
|
10
|
+
export declare function registerGetRpcProxyUrl(server: McpServer, apiClient: ApiClient, walletContext?: WalletContext): void;
|
|
11
|
+
//# sourceMappingURL=get-rpc-proxy-url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-rpc-proxy-url.d.ts","sourceRoot":"","sources":["../../src/tools/get-rpc-proxy-url.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,KAAK,SAAS,EAAgB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,cAAc,CAAC;AAMpE,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,SAAS,EACpB,aAAa,CAAC,EAAE,aAAa,GAC5B,IAAI,CA4CN"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_rpc_proxy_url tool: Get the EVM RPC proxy URL for a wallet and chain.
|
|
3
|
+
*
|
|
4
|
+
* Queries connect-info to determine if RPC proxy is enabled and constructs
|
|
5
|
+
* the full URL to use as --rpc-url for Forge, Hardhat, ethers.js, or viem.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { toToolResult } from '../api-client.js';
|
|
9
|
+
import { withWalletPrefix } from '../server.js';
|
|
10
|
+
export function registerGetRpcProxyUrl(server, apiClient, walletContext) {
|
|
11
|
+
server.tool('get_rpc_proxy_url', withWalletPrefix('Get the EVM RPC proxy URL for a wallet and chain. Use this URL as --rpc-url for Forge, Hardhat, ethers.js, or viem.', walletContext?.walletName), {
|
|
12
|
+
wallet_id: z.string().describe('Wallet ID (UUID)'),
|
|
13
|
+
chain_id: z.number().describe('EVM chain ID (e.g. 1 for Ethereum mainnet, 137 for Polygon)'),
|
|
14
|
+
}, async (args) => {
|
|
15
|
+
const result = await apiClient.get('/v1/connect-info');
|
|
16
|
+
if (!('ok' in result) || !result.ok) {
|
|
17
|
+
return toToolResult(result);
|
|
18
|
+
}
|
|
19
|
+
const data = result.data;
|
|
20
|
+
if (!data.rpcProxy?.enabled || !data.rpcProxy?.baseUrl) {
|
|
21
|
+
return {
|
|
22
|
+
content: [{
|
|
23
|
+
type: 'text',
|
|
24
|
+
text: JSON.stringify({
|
|
25
|
+
error: 'RPC proxy is not enabled. Ask the operator to enable it in Admin Settings.',
|
|
26
|
+
}),
|
|
27
|
+
}],
|
|
28
|
+
isError: true,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const url = `${data.rpcProxy.baseUrl}/${args.wallet_id}/${args.chain_id}`;
|
|
32
|
+
return {
|
|
33
|
+
content: [{
|
|
34
|
+
type: 'text',
|
|
35
|
+
text: JSON.stringify({
|
|
36
|
+
url,
|
|
37
|
+
walletId: args.wallet_id,
|
|
38
|
+
chainId: args.chain_id,
|
|
39
|
+
usage: `Use this URL as --rpc-url: ${url}`,
|
|
40
|
+
}),
|
|
41
|
+
}],
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=get-rpc-proxy-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-rpc-proxy-url.js","sourceRoot":"","sources":["../../src/tools/get-rpc-proxy-url.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAMpE,MAAM,UAAU,sBAAsB,CACpC,MAAiB,EACjB,SAAoB,EACpB,aAA6B;IAE7B,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,gBAAgB,CACd,qHAAqH,EACrH,aAAa,EAAE,UAAU,CAC1B,EACD;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAClD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;KAC7F,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACvD,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACpC,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAuB,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;YACvD,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,4EAA4E;yBACpF,CAAC;qBACH,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1E,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,GAAG;wBACH,QAAQ,EAAE,IAAI,CAAC,SAAS;wBACxB,OAAO,EAAE,IAAI,CAAC,QAAQ;wBACtB,KAAK,EAAE,8BAA8B,GAAG,EAAE;qBAC3C,CAAC;iBACH,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/tools/get-tokens.js
CHANGED
|
@@ -6,7 +6,7 @@ import { toToolResult } from '../api-client.js';
|
|
|
6
6
|
import { withWalletPrefix } from '../server.js';
|
|
7
7
|
export function registerGetTokens(server, apiClient, walletContext) {
|
|
8
8
|
server.tool('get_tokens', withWalletPrefix('Get registered tokens (builtin + custom) for a specific network.', walletContext?.walletName), {
|
|
9
|
-
network: z.string().describe('Network identifier (e.g., "ethereum-sepolia", "polygon-amoy").'),
|
|
9
|
+
network: z.string().describe('Network identifier (e.g., "ethereum-sepolia", "polygon-amoy" or CAIP-2 "eip155:1").'),
|
|
10
10
|
}, async (args) => {
|
|
11
11
|
const params = new URLSearchParams();
|
|
12
12
|
params.set('network', args.network);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-tokens.js","sourceRoot":"","sources":["../../src/tools/get-tokens.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,SAAoB,EAAE,aAA6B;IACtG,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,gBAAgB,CAAC,kEAAkE,EAAE,aAAa,EAAE,UAAU,CAAC,EAC/G;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"get-tokens.js","sourceRoot":"","sources":["../../src/tools/get-tokens.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,SAAoB,EAAE,aAA6B;IACtG,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,gBAAgB,CAAC,kEAAkE,EAAE,aAAa,EAAE,UAAU,CAAC,EAC/G;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC;KACpH,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -9,7 +9,7 @@ export function registerListIncomingTransactions(server, apiClient, walletContex
|
|
|
9
9
|
limit: z.number().optional().describe('Maximum number of transactions to return (1-100, default 20)'),
|
|
10
10
|
cursor: z.string().optional().describe('Pagination cursor from previous response'),
|
|
11
11
|
chain: z.string().optional().describe('Filter by chain (solana or ethereum)'),
|
|
12
|
-
network: z.string().optional().describe('Filter by network'),
|
|
12
|
+
network: z.string().optional().describe('Filter by network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137").'),
|
|
13
13
|
status: z.string().optional().describe('Filter by status: DETECTED or CONFIRMED (default: CONFIRMED)'),
|
|
14
14
|
token: z.string().optional().describe('Filter by token address (null for native transfers)'),
|
|
15
15
|
from_address: z.string().optional().describe('Filter by sender address'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-incoming-transactions.js","sourceRoot":"","sources":["../../src/tools/list-incoming-transactions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,gCAAgC,CAC9C,MAAiB,EACjB,SAAoB,EACpB,aAA6B;IAE7B,MAAM,CAAC,IAAI,CACT,4BAA4B,EAC5B,gBAAgB,CACd,6HAA6H,EAC7H,aAAa,EAAE,UAAU,CAC1B,EACD;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;QACrG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QAClF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QAC7E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"list-incoming-transactions.js","sourceRoot":"","sources":["../../src/tools/list-incoming-transactions.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/list-nfts.js
CHANGED
|
@@ -9,7 +9,7 @@ import { toToolResult } from '../api-client.js';
|
|
|
9
9
|
import { withWalletPrefix } from '../server.js';
|
|
10
10
|
export function registerListNfts(server, apiClient, walletContext) {
|
|
11
11
|
server.tool('list_nfts', withWalletPrefix('List NFTs (ERC-721, ERC-1155, Metaplex) owned by the wallet for a specific network. Requires NFT indexer API key.', walletContext?.walletName), {
|
|
12
|
-
network: z.string().describe('Network identifier (e.g., "ethereum-mainnet", "solana-mainnet").'),
|
|
12
|
+
network: z.string().describe('Network identifier (e.g., "ethereum-mainnet", "solana-mainnet" or CAIP-2 "eip155:1").'),
|
|
13
13
|
cursor: z.string().optional().describe('Pagination cursor from previous response.'),
|
|
14
14
|
limit: z.number().optional().describe('Max NFTs per page (default: 20).'),
|
|
15
15
|
group_by: z.enum(['collection']).optional().describe('Group NFTs by collection.'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-nfts.js","sourceRoot":"","sources":["../../src/tools/list-nfts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,gBAAgB,CAC9B,MAAiB,EACjB,SAAoB,EACpB,aAA6B;IAE7B,MAAM,CAAC,IAAI,CACT,WAAW,EACX,gBAAgB,CACd,mHAAmH,EACnH,aAAa,EAAE,UAAU,CAC1B,EACD;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"list-nfts.js","sourceRoot":"","sources":["../../src/tools/list-nfts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,gBAAgB,CAC9B,MAAiB,EACjB,SAAoB,EACpB,aAA6B;IAE7B,MAAM,CAAC,IAAI,CACT,WAAW,EACX,gBAAgB,CACd,mHAAmH,EACnH,aAAa,EAAE,UAAU,CAC1B,EACD;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uFAAuF,CAAC;QACrH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QACnF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACzE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QACjF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;KACnG,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,kBAAkB,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3E,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* list_sessions tool: List active sessions with pagination.
|
|
3
|
+
* Requires master auth (admin-only operation).
|
|
4
|
+
*/
|
|
5
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
6
|
+
import { type ApiClient } from '../api-client.js';
|
|
7
|
+
export declare function registerListSessions(server: McpServer, apiClient: ApiClient): void;
|
|
8
|
+
//# sourceMappingURL=list-sessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-sessions.d.ts","sourceRoot":"","sources":["../../src/tools/list-sessions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,KAAK,SAAS,EAAgB,MAAM,kBAAkB,CAAC;AAEhE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAmBlF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* list_sessions tool: List active sessions with pagination.
|
|
3
|
+
* Requires master auth (admin-only operation).
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import { toToolResult } from '../api-client.js';
|
|
7
|
+
export function registerListSessions(server, apiClient) {
|
|
8
|
+
server.tool('list_sessions', 'List active sessions with pagination. Admin operation requiring master auth.', {
|
|
9
|
+
wallet_id: z.string().optional().describe('Filter by wallet ID'),
|
|
10
|
+
limit: z.number().int().min(1).max(200).optional().describe('Max items to return (default: 50)'),
|
|
11
|
+
offset: z.number().int().min(0).optional().describe('Number of items to skip (default: 0)'),
|
|
12
|
+
}, async (args) => {
|
|
13
|
+
const params = new URLSearchParams();
|
|
14
|
+
if (args.wallet_id)
|
|
15
|
+
params.set('walletId', args.wallet_id);
|
|
16
|
+
if (args.limit !== undefined)
|
|
17
|
+
params.set('limit', String(args.limit));
|
|
18
|
+
if (args.offset !== undefined)
|
|
19
|
+
params.set('offset', String(args.offset));
|
|
20
|
+
const qs = params.toString();
|
|
21
|
+
const result = await apiClient.get('/v1/sessions' + (qs ? '?' + qs : ''));
|
|
22
|
+
return toToolResult(result);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=list-sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-sessions.js","sourceRoot":"","sources":["../../src/tools/list-sessions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhE,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,SAAoB;IAC1E,MAAM,CAAC,IAAI,CACT,eAAe,EACf,8EAA8E,EAC9E;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAChE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAChG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;KAC5F,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACzE,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1E,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* resolve_asset tool: Resolve a CAIP-19 asset identifier to token metadata.
|
|
3
|
+
*
|
|
4
|
+
* Parses the CAIP-19 string locally, then queries the daemon's token registry
|
|
5
|
+
* to check if the asset is registered. Returns full metadata for registered
|
|
6
|
+
* tokens, or partial info (address from CAIP-19, decimals/symbol null) for
|
|
7
|
+
* unregistered tokens.
|
|
8
|
+
*
|
|
9
|
+
* Native assets (slip44 namespace) return isNative=true with address=null.
|
|
10
|
+
*/
|
|
11
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
12
|
+
import type { ApiClient } from '../api-client.js';
|
|
13
|
+
export declare function registerResolveAsset(server: McpServer, apiClient: ApiClient): void;
|
|
14
|
+
//# sourceMappingURL=resolve-asset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-asset.d.ts","sourceRoot":"","sources":["../../src/tools/resolve-asset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAsClD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CA+HlF"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* resolve_asset tool: Resolve a CAIP-19 asset identifier to token metadata.
|
|
3
|
+
*
|
|
4
|
+
* Parses the CAIP-19 string locally, then queries the daemon's token registry
|
|
5
|
+
* to check if the asset is registered. Returns full metadata for registered
|
|
6
|
+
* tokens, or partial info (address from CAIP-19, decimals/symbol null) for
|
|
7
|
+
* unregistered tokens.
|
|
8
|
+
*
|
|
9
|
+
* Native assets (slip44 namespace) return isNative=true with address=null.
|
|
10
|
+
*/
|
|
11
|
+
import { z } from 'zod';
|
|
12
|
+
/**
|
|
13
|
+
* Parse a CAIP-19 asset identifier into its components.
|
|
14
|
+
*
|
|
15
|
+
* Format: {chainId}/{assetNamespace}:{assetReference}
|
|
16
|
+
* Examples:
|
|
17
|
+
* - eip155:1/erc20:0xa0b8... -> chainId=eip155:1, namespace=erc20, ref=0xa0b8...
|
|
18
|
+
* - eip155:1/slip44:60 -> chainId=eip155:1, namespace=slip44, ref=60
|
|
19
|
+
* - solana:5eykt.../token:EPjFW... -> chainId=solana:5eykt..., namespace=token, ref=EPjFW...
|
|
20
|
+
*/
|
|
21
|
+
function parseAssetIdLocal(assetId) {
|
|
22
|
+
const slashIdx = assetId.indexOf('/');
|
|
23
|
+
if (slashIdx === -1)
|
|
24
|
+
return null;
|
|
25
|
+
const chainId = assetId.substring(0, slashIdx);
|
|
26
|
+
const assetPart = assetId.substring(slashIdx + 1);
|
|
27
|
+
const colonIdx = assetPart.indexOf(':');
|
|
28
|
+
if (colonIdx === -1)
|
|
29
|
+
return null;
|
|
30
|
+
const namespace = assetPart.substring(0, colonIdx);
|
|
31
|
+
const reference = assetPart.substring(colonIdx + 1);
|
|
32
|
+
if (!chainId || !namespace || !reference)
|
|
33
|
+
return null;
|
|
34
|
+
const isNative = namespace === 'slip44';
|
|
35
|
+
const address = isNative ? null : reference;
|
|
36
|
+
return { chainId, namespace, reference, isNative, address };
|
|
37
|
+
}
|
|
38
|
+
export function registerResolveAsset(server, apiClient) {
|
|
39
|
+
server.tool('resolve_asset', 'Resolve a CAIP-19 asset identifier to token metadata. Returns address, decimals, symbol, name, network, chainId, isNative, isRegistered.', {
|
|
40
|
+
asset_id: z.string().describe('CAIP-19 asset identifier (e.g., "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "eip155:1/slip44:60")'),
|
|
41
|
+
}, async (args) => {
|
|
42
|
+
const parsed = parseAssetIdLocal(args.asset_id);
|
|
43
|
+
if (!parsed) {
|
|
44
|
+
return {
|
|
45
|
+
content: [{
|
|
46
|
+
type: 'text',
|
|
47
|
+
text: JSON.stringify({
|
|
48
|
+
error: true,
|
|
49
|
+
code: 'INVALID_CAIP19',
|
|
50
|
+
message: `Invalid CAIP-19 format: "${args.asset_id}". Expected format: {chainId}/{namespace}:{reference}`,
|
|
51
|
+
}),
|
|
52
|
+
}],
|
|
53
|
+
isError: true,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const { chainId, isNative, address } = parsed;
|
|
57
|
+
// For native assets, we can return immediately without registry lookup
|
|
58
|
+
if (isNative) {
|
|
59
|
+
return {
|
|
60
|
+
content: [{
|
|
61
|
+
type: 'text',
|
|
62
|
+
text: JSON.stringify({
|
|
63
|
+
assetId: args.asset_id,
|
|
64
|
+
chainId,
|
|
65
|
+
network: chainId,
|
|
66
|
+
address: null,
|
|
67
|
+
decimals: null,
|
|
68
|
+
symbol: null,
|
|
69
|
+
name: null,
|
|
70
|
+
isNative: true,
|
|
71
|
+
isRegistered: false,
|
|
72
|
+
}),
|
|
73
|
+
}],
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
// Query the daemon's token registry using the CAIP-2 chainId as network
|
|
77
|
+
const registryResult = await apiClient.get(`/v1/tokens?network=${encodeURIComponent(chainId)}`);
|
|
78
|
+
if (!registryResult.ok) {
|
|
79
|
+
// Registry lookup failed -- return partial info from CAIP-19 parsing
|
|
80
|
+
return {
|
|
81
|
+
content: [{
|
|
82
|
+
type: 'text',
|
|
83
|
+
text: JSON.stringify({
|
|
84
|
+
assetId: args.asset_id,
|
|
85
|
+
chainId,
|
|
86
|
+
network: chainId,
|
|
87
|
+
address,
|
|
88
|
+
decimals: null,
|
|
89
|
+
symbol: null,
|
|
90
|
+
name: null,
|
|
91
|
+
isNative: false,
|
|
92
|
+
isRegistered: false,
|
|
93
|
+
}),
|
|
94
|
+
}],
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
// Search registry for matching token by address
|
|
98
|
+
const data = registryResult.data;
|
|
99
|
+
const tokens = data.tokens ?? [];
|
|
100
|
+
const normalizedAddress = address?.toLowerCase() ?? '';
|
|
101
|
+
const match = tokens.find((t) => t.address.toLowerCase() === normalizedAddress);
|
|
102
|
+
if (match) {
|
|
103
|
+
return {
|
|
104
|
+
content: [{
|
|
105
|
+
type: 'text',
|
|
106
|
+
text: JSON.stringify({
|
|
107
|
+
assetId: args.asset_id,
|
|
108
|
+
chainId,
|
|
109
|
+
network: chainId,
|
|
110
|
+
address: match.address,
|
|
111
|
+
decimals: match.decimals,
|
|
112
|
+
symbol: match.symbol,
|
|
113
|
+
name: match.name,
|
|
114
|
+
isNative: false,
|
|
115
|
+
isRegistered: true,
|
|
116
|
+
}),
|
|
117
|
+
}],
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
// Token not found in registry
|
|
121
|
+
return {
|
|
122
|
+
content: [{
|
|
123
|
+
type: 'text',
|
|
124
|
+
text: JSON.stringify({
|
|
125
|
+
assetId: args.asset_id,
|
|
126
|
+
chainId,
|
|
127
|
+
network: chainId,
|
|
128
|
+
address,
|
|
129
|
+
decimals: null,
|
|
130
|
+
symbol: null,
|
|
131
|
+
name: null,
|
|
132
|
+
isNative: false,
|
|
133
|
+
isRegistered: false,
|
|
134
|
+
}),
|
|
135
|
+
}],
|
|
136
|
+
};
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=resolve-asset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-asset.js","sourceRoot":"","sources":["../../src/tools/resolve-asset.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/send-batch.js
CHANGED
|
@@ -11,7 +11,7 @@ import { withWalletPrefix } from '../server.js';
|
|
|
11
11
|
export function registerSendBatch(server, apiClient, walletContext) {
|
|
12
12
|
server.tool('send_batch', withWalletPrefix('Send multiple instructions in a single atomic transaction (Solana only, 2-20 instructions).', walletContext?.walletName), {
|
|
13
13
|
instructions: z.array(z.record(z.unknown())).min(2).max(20)
|
|
14
|
-
.describe('Array of instruction objects (each is a TRANSFER/TOKEN_TRANSFER/CONTRACT_CALL/APPROVE without the type field). TOKEN_TRANSFER/APPROVE instructions can include an optional assetId field in the token object for CAIP-19 asset identification
|
|
14
|
+
.describe('Array of instruction objects (each is a TRANSFER/TOKEN_TRANSFER/CONTRACT_CALL/APPROVE without the type field). All amount values must be in smallest units (wei/lamports). TOKEN_TRANSFER/APPROVE instructions can include an optional assetId field in the token object for CAIP-19 asset identification.'),
|
|
15
15
|
network: z.string().optional().describe('Target network (e.g., polygon-mainnet). Required for EVM wallets; auto-resolved for Solana.'),
|
|
16
16
|
wallet_id: z.string().optional().describe('Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet.'),
|
|
17
17
|
gas_condition: z.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-batch.js","sourceRoot":"","sources":["../../src/tools/send-batch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,SAAoB,EAAE,aAA6B;IACtG,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,gBAAgB,CAAC,6FAA6F,EAAE,aAAa,EAAE,UAAU,CAAC,EAC1I;QACE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;aACxD,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"send-batch.js","sourceRoot":"","sources":["../../src/tools/send-batch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,SAAoB,EAAE,aAA6B;IACtG,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,gBAAgB,CAAC,6FAA6F,EAAE,aAAa,EAAE,UAAU,CAAC,EAC1I;QACE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;aACxD,QAAQ,CAAC,4SAA4S,CAAC;QACzT,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6FAA6F,CAAC;QACtI,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uGAAuG,CAAC;QAClJ,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC;YACtB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;YAC/F,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;YAC5G,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;SAC/E,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yGAAyG,CAAC;KAClI,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,IAAI,GAA4B;YACpC,IAAI,EAAE,OAAO;YACb,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5D,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QACnD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG;gBAClB,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa;gBAC7C,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,gBAAgB;gBACnD,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO;aACpC,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;QACnE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/tools/send-token.js
CHANGED
|
@@ -11,17 +11,17 @@ import { withWalletPrefix } from '../server.js';
|
|
|
11
11
|
export function registerSendToken(server, apiClient, walletContext) {
|
|
12
12
|
server.tool('send_token', withWalletPrefix('Send SOL/ETH or tokens from the wallet. For token transfers, specify type and token info.', walletContext?.walletName), {
|
|
13
13
|
to: z.string().describe('Destination wallet address'),
|
|
14
|
-
amount: z.string().describe('Amount in smallest
|
|
14
|
+
amount: z.string().describe('Amount in smallest units (wei for EVM, lamports for Solana). Example: "1000000000000000000" = 1 ETH, "1000000000" = 1 SOL'),
|
|
15
15
|
memo: z.string().optional().describe('Optional transaction memo'),
|
|
16
16
|
type: z.enum(['TRANSFER', 'TOKEN_TRANSFER']).optional()
|
|
17
17
|
.describe('Transaction type. Default: TRANSFER (native). TOKEN_TRANSFER for SPL/ERC-20'),
|
|
18
|
-
network: z.string().optional().describe('Target network (e.g., polygon-mainnet). Required for EVM wallets; auto-resolved for Solana.'),
|
|
18
|
+
network: z.string().optional().describe('Target network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137"). Required for EVM wallets; auto-resolved for Solana.'),
|
|
19
19
|
token: z.object({
|
|
20
|
-
address: z.string().describe('Token mint (SPL) or contract address (ERC-20)'),
|
|
21
|
-
decimals: z.number().describe('Token decimals (e.g., 6 for USDC)'),
|
|
22
|
-
symbol: z.string().describe('Token symbol (e.g., USDC)'),
|
|
23
|
-
assetId: z.string().optional().describe('CAIP-19 asset identifier
|
|
24
|
-
}).optional().describe('Required for TOKEN_TRANSFER.
|
|
20
|
+
address: z.string().optional().describe('Token mint (SPL) or contract address (ERC-20). Optional when assetId is provided.'),
|
|
21
|
+
decimals: z.number().optional().describe('Token decimals (e.g., 6 for USDC). Optional when assetId is provided.'),
|
|
22
|
+
symbol: z.string().optional().describe('Token symbol (e.g., USDC). Optional when assetId is provided.'),
|
|
23
|
+
assetId: z.string().optional().describe('CAIP-19 asset identifier. When provided alone (without address/decimals/symbol), the daemon auto-resolves from the token registry.'),
|
|
24
|
+
}).optional().describe('Required for TOKEN_TRANSFER. Provide full metadata (address/decimals/symbol) OR assetId alone for auto-resolve.'),
|
|
25
25
|
wallet_id: z.string().optional().describe('Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet.'),
|
|
26
26
|
gas_condition: z.object({
|
|
27
27
|
max_gas_price: z.string().optional().describe('Max gas price in wei (EVM baseFee+priorityFee)'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-token.js","sourceRoot":"","sources":["../../src/tools/send-token.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,SAAoB,EAAE,aAA6B;IACtG,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,gBAAgB,CAAC,2FAA2F,EAAE,aAAa,EAAE,UAAU,CAAC,EACxI;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACrD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"send-token.js","sourceRoot":"","sources":["../../src/tools/send-token.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ import { withWalletPrefix } from '../server.js';
|
|
|
11
11
|
export function registerSignTransaction(server, apiClient, walletContext) {
|
|
12
12
|
server.tool('sign_transaction', withWalletPrefix('Sign an unsigned transaction without broadcasting. Provide raw transaction (base64 for Solana, hex for EVM). Returns signed transaction, parsed operations, and policy evaluation.', walletContext?.walletName), {
|
|
13
13
|
transaction: z.string().describe('Raw unsigned transaction (base64 for Solana, hex 0x-prefixed for EVM)'),
|
|
14
|
-
network: z.string().optional().describe('Target network (e.g., "polygon-mainnet"). Required for EVM wallets; auto-resolved for Solana.'),
|
|
14
|
+
network: z.string().optional().describe('Target network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137"). Required for EVM wallets; auto-resolved for Solana.'),
|
|
15
15
|
wallet_id: z.string().optional().describe('Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet.'),
|
|
16
16
|
}, async (args) => {
|
|
17
17
|
const body = { transaction: args.transaction };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sign-transaction.js","sourceRoot":"","sources":["../../src/tools/sign-transaction.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,uBAAuB,CACrC,MAAiB,EACjB,SAAoB,EACpB,aAA6B;IAE7B,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,gBAAgB,CACd,oLAAoL,EACpL,aAAa,EAAE,UAAU,CAC1B,EACD;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;QACzG,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC
|
|
1
|
+
{"version":3,"file":"sign-transaction.js","sourceRoot":"","sources":["../../src/tools/sign-transaction.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,uBAAuB,CACrC,MAAiB,EACjB,SAAoB,EACpB,aAA6B;IAE7B,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,gBAAgB,CACd,oLAAoL,EACpL,aAAa,EAAE,UAAU,CAC1B,EACD;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;QACzG,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sHAAsH,CAAC;QAC/J,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uGAAuG,CAAC;KACnJ,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,IAAI,GAA4B,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QACxE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACjC,CAAC;QACD,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;QACnE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -13,7 +13,7 @@ import { withWalletPrefix } from '../server.js';
|
|
|
13
13
|
export function registerSimulateTransaction(server, apiClient, walletContext) {
|
|
14
14
|
server.tool('simulate_transaction', withWalletPrefix('Simulate a transaction without executing it. Returns policy tier, estimated fees, balance changes, and warnings. No side effects.', walletContext?.walletName), {
|
|
15
15
|
to: z.string().describe('Destination address'),
|
|
16
|
-
amount: z.string().describe('Amount in smallest
|
|
16
|
+
amount: z.string().describe('Amount in smallest units (wei for EVM, lamports for Solana). Example: "1000000000000000000" = 1 ETH'),
|
|
17
17
|
type: z.enum(['TRANSFER', 'TOKEN_TRANSFER', 'CONTRACT_CALL', 'APPROVE', 'BATCH']).optional()
|
|
18
18
|
.describe('Transaction type. Default: TRANSFER'),
|
|
19
19
|
token: z.object({
|
|
@@ -25,7 +25,7 @@ export function registerSimulateTransaction(server, apiClient, walletContext) {
|
|
|
25
25
|
// CONTRACT_CALL fields
|
|
26
26
|
calldata: z.string().optional().describe('Hex-encoded calldata (EVM)'),
|
|
27
27
|
abi: z.array(z.record(z.unknown())).optional().describe('ABI fragment (EVM)'),
|
|
28
|
-
value: z.string().optional().describe('Native value
|
|
28
|
+
value: z.string().optional().describe('Native token value in smallest units (wei for EVM). Example: "1000000000000000000" = 1 ETH'),
|
|
29
29
|
programId: z.string().optional().describe('Solana program ID'),
|
|
30
30
|
instructionData: z.string().optional().describe('Base64-encoded instruction data (Solana)'),
|
|
31
31
|
accounts: z.array(z.object({
|
|
@@ -38,7 +38,7 @@ export function registerSimulateTransaction(server, apiClient, walletContext) {
|
|
|
38
38
|
// BATCH fields
|
|
39
39
|
instructions: z.array(z.record(z.unknown())).optional().describe('Batch instructions array'),
|
|
40
40
|
// Common fields
|
|
41
|
-
network: z.string().optional().describe('Target network'),
|
|
41
|
+
network: z.string().optional().describe('Target network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137").'),
|
|
42
42
|
wallet_id: z.string().optional().describe('Wallet ID for multi-wallet sessions'),
|
|
43
43
|
gas_condition: z.object({
|
|
44
44
|
max_gas_price: z.string().optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simulate-transaction.js","sourceRoot":"","sources":["../../src/tools/simulate-transaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,SAAoB,EAAE,aAA6B;IAChH,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,gBAAgB,CAAC,mIAAmI,EAAE,aAAa,EAAE,UAAU,CAAC,EAChL;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC9C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"simulate-transaction.js","sourceRoot":"","sources":["../../src/tools/simulate-transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,8 +13,8 @@ export function registerTransferNft(server, apiClient, walletContext) {
|
|
|
13
13
|
token_address: z.string().describe('NFT contract address (EVM) or mint address (Solana).'),
|
|
14
14
|
token_id: z.string().describe('Token ID within the contract (EVM). Use "0" for Solana Metaplex.'),
|
|
15
15
|
standard: z.enum(['erc721', 'erc1155', 'metaplex']).describe('NFT standard.'),
|
|
16
|
-
network: z.string().describe('Network identifier (e.g., "ethereum-mainnet", "solana-mainnet").'),
|
|
17
|
-
amount: z.string().optional().describe('
|
|
16
|
+
network: z.string().describe('Network identifier (e.g., "ethereum-mainnet", "solana-mainnet" or CAIP-2 "eip155:1").'),
|
|
17
|
+
amount: z.string().optional().describe('Number of tokens to transfer (default: "1"). Only relevant for ERC-1155 multi-copy NFTs. This is a count, not a smallest-unit value.'),
|
|
18
18
|
wallet_id: z.string().optional().describe('Target wallet ID. Required for multi-wallet sessions.'),
|
|
19
19
|
}, async (args) => {
|
|
20
20
|
const body = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer-nft.js","sourceRoot":"","sources":["../../src/tools/transfer-nft.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,mBAAmB,CACjC,MAAiB,EACjB,SAAoB,EACpB,aAA6B;IAE7B,MAAM,CAAC,IAAI,CACT,cAAc,EACd,gBAAgB,CACd,6FAA6F,EAC7F,aAAa,EAAE,UAAU,CAC1B,EACD;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QACjF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;QAC1F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;QACjG,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC7E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"transfer-nft.js","sourceRoot":"","sources":["../../src/tools/transfer-nft.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,UAAU,mBAAmB,CACjC,MAAiB,EACjB,SAAoB,EACpB,aAA6B;IAE7B,MAAM,CAAC,IAAI,CACT,cAAc,EACd,gBAAgB,CACd,6FAA6F,EAC7F,aAAa,EAAE,UAAU,CAC1B,EACD;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QACjF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;QAC1F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;QACjG,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC7E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uFAAuF,CAAC;QACrH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sIAAsI,CAAC;QAC9K,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;KACnG,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,IAAI,GAA4B;YACpC,IAAI,EAAE,cAAc;YACpB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,KAAK,EAAE;gBACL,OAAO,EAAE,IAAI,CAAC,aAAa;gBAC3B,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB;YACD,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;QACF,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACzD,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;QACnE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,CACF,CAAC;AACJ,CAAC"}
|