@t402/mcp 2.7.0 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +1401 -185
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/server/index.d.ts +36 -0
- package/dist/cjs/server/index.js +1401 -185
- package/dist/cjs/server/index.js.map +1 -1
- package/dist/cjs/tools/index.d.ts +689 -12
- package/dist/cjs/tools/index.js +1155 -29
- package/dist/cjs/tools/index.js.map +1 -1
- package/dist/esm/{chunk-B7X7H6NV.mjs → chunk-SUDCVXHQ.mjs} +1120 -30
- package/dist/esm/chunk-SUDCVXHQ.mjs.map +1 -0
- package/dist/esm/{chunk-3PMBXSJ3.mjs → chunk-XOPD7VTU.mjs} +195 -2
- package/dist/esm/chunk-XOPD7VTU.mjs.map +1 -0
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/server/index.d.mts +36 -0
- package/dist/esm/server/index.mjs +2 -2
- package/dist/esm/tools/index.d.mts +689 -12
- package/dist/esm/tools/index.mjs +70 -1
- package/package.json +14 -14
- package/dist/esm/chunk-3PMBXSJ3.mjs.map +0 -1
- package/dist/esm/chunk-B7X7H6NV.mjs.map +0 -1
package/dist/esm/tools/index.mjs
CHANGED
|
@@ -7,30 +7,49 @@ import {
|
|
|
7
7
|
WDK_TOOL_DEFINITIONS,
|
|
8
8
|
autoPayInputSchema,
|
|
9
9
|
bridgeInputSchema,
|
|
10
|
+
clearPriceCache,
|
|
11
|
+
clearQuoteStore,
|
|
12
|
+
compareNetworkFeesInputSchema,
|
|
13
|
+
createQuote,
|
|
10
14
|
createTonBridgeToolSet,
|
|
15
|
+
deleteQuote,
|
|
11
16
|
erc8004CheckReputationInputSchema,
|
|
12
17
|
erc8004ResolveAgentInputSchema,
|
|
13
18
|
erc8004VerifyWalletInputSchema,
|
|
19
|
+
estimatePaymentFeeInputSchema,
|
|
14
20
|
executeAutoPay,
|
|
15
21
|
executeAutoPayDemo,
|
|
16
22
|
executeBridge,
|
|
23
|
+
executeBridgeFromQuoteInputSchema,
|
|
24
|
+
executeCompareNetworkFees,
|
|
17
25
|
executeErc8004CheckReputation,
|
|
18
26
|
executeErc8004ResolveAgent,
|
|
19
27
|
executeErc8004VerifyWallet,
|
|
28
|
+
executeEstimatePaymentFee,
|
|
29
|
+
executeExecuteBridgeFromQuote,
|
|
30
|
+
executeExecuteBridgeFromQuoteDemo,
|
|
20
31
|
executeGetAllBalances,
|
|
21
32
|
executeGetBalance,
|
|
22
33
|
executeGetBridgeFee,
|
|
34
|
+
executeGetGasPrice,
|
|
35
|
+
executeGetTokenPrice,
|
|
23
36
|
executePay,
|
|
24
37
|
executePayGasless,
|
|
25
38
|
executePaymentPlan,
|
|
26
39
|
executePaymentPlanDemo,
|
|
40
|
+
executeQuoteBridge,
|
|
41
|
+
executeQuoteBridgeDemo,
|
|
27
42
|
executeSmartPay,
|
|
28
43
|
executeSmartPayDemo,
|
|
29
44
|
executeTonBridgeTool,
|
|
45
|
+
executeWdkExecuteSwap,
|
|
46
|
+
executeWdkExecuteSwapDemo,
|
|
30
47
|
executeWdkGetBalances,
|
|
31
48
|
executeWdkGetBalancesDemo,
|
|
32
49
|
executeWdkGetWallet,
|
|
33
50
|
executeWdkGetWalletDemo,
|
|
51
|
+
executeWdkQuoteSwap,
|
|
52
|
+
executeWdkQuoteSwapDemo,
|
|
34
53
|
executeWdkSwap,
|
|
35
54
|
executeWdkSwapDemo,
|
|
36
55
|
executeWdkTransfer,
|
|
@@ -39,14 +58,21 @@ import {
|
|
|
39
58
|
formatAutoPayResult,
|
|
40
59
|
formatBalanceResult,
|
|
41
60
|
formatBridgeFeeResult,
|
|
61
|
+
formatBridgeQuoteResult,
|
|
42
62
|
formatBridgeResult,
|
|
43
63
|
formatErc8004CheckReputationResult,
|
|
44
64
|
formatErc8004ResolveAgentResult,
|
|
45
65
|
formatErc8004VerifyWalletResult,
|
|
66
|
+
formatExecuteSwapResult,
|
|
67
|
+
formatGasPriceResult,
|
|
46
68
|
formatGaslessPaymentResult,
|
|
69
|
+
formatNetworkFeeComparison,
|
|
70
|
+
formatPaymentFeeEstimate,
|
|
47
71
|
formatPaymentPlanResult,
|
|
48
72
|
formatPaymentResult,
|
|
49
73
|
formatSmartPayResult,
|
|
74
|
+
formatSwapQuoteResult,
|
|
75
|
+
formatTokenPriceResult,
|
|
50
76
|
formatWdkBalancesResult,
|
|
51
77
|
formatWdkSwapResult,
|
|
52
78
|
formatWdkTransferResult,
|
|
@@ -54,15 +80,23 @@ import {
|
|
|
54
80
|
getAllBalancesInputSchema,
|
|
55
81
|
getBalanceInputSchema,
|
|
56
82
|
getBridgeFeeInputSchema,
|
|
83
|
+
getGasPriceInputSchema,
|
|
84
|
+
getQuote,
|
|
85
|
+
getTokenPriceInputSchema,
|
|
86
|
+
getTokenPrices,
|
|
87
|
+
getTokenPricesDemo,
|
|
57
88
|
payGaslessInputSchema,
|
|
58
89
|
payInputSchema,
|
|
59
90
|
paymentPlanInputSchema,
|
|
91
|
+
quoteBridgeInputSchema,
|
|
60
92
|
smartPayInputSchema,
|
|
93
|
+
wdkExecuteSwapInputSchema,
|
|
61
94
|
wdkGetBalancesInputSchema,
|
|
62
95
|
wdkGetWalletInputSchema,
|
|
96
|
+
wdkQuoteSwapInputSchema,
|
|
63
97
|
wdkSwapInputSchema,
|
|
64
98
|
wdkTransferInputSchema
|
|
65
|
-
} from "../chunk-
|
|
99
|
+
} from "../chunk-SUDCVXHQ.mjs";
|
|
66
100
|
export {
|
|
67
101
|
ERC8004_TOOL_DEFINITIONS,
|
|
68
102
|
GASLESS_SUPPORTED_NETWORKS,
|
|
@@ -72,30 +106,49 @@ export {
|
|
|
72
106
|
WDK_TOOL_DEFINITIONS,
|
|
73
107
|
autoPayInputSchema,
|
|
74
108
|
bridgeInputSchema,
|
|
109
|
+
clearPriceCache,
|
|
110
|
+
clearQuoteStore,
|
|
111
|
+
compareNetworkFeesInputSchema,
|
|
112
|
+
createQuote,
|
|
75
113
|
createTonBridgeToolSet,
|
|
114
|
+
deleteQuote,
|
|
76
115
|
erc8004CheckReputationInputSchema,
|
|
77
116
|
erc8004ResolveAgentInputSchema,
|
|
78
117
|
erc8004VerifyWalletInputSchema,
|
|
118
|
+
estimatePaymentFeeInputSchema,
|
|
79
119
|
executeAutoPay,
|
|
80
120
|
executeAutoPayDemo,
|
|
81
121
|
executeBridge,
|
|
122
|
+
executeBridgeFromQuoteInputSchema,
|
|
123
|
+
executeCompareNetworkFees,
|
|
82
124
|
executeErc8004CheckReputation,
|
|
83
125
|
executeErc8004ResolveAgent,
|
|
84
126
|
executeErc8004VerifyWallet,
|
|
127
|
+
executeEstimatePaymentFee,
|
|
128
|
+
executeExecuteBridgeFromQuote,
|
|
129
|
+
executeExecuteBridgeFromQuoteDemo,
|
|
85
130
|
executeGetAllBalances,
|
|
86
131
|
executeGetBalance,
|
|
87
132
|
executeGetBridgeFee,
|
|
133
|
+
executeGetGasPrice,
|
|
134
|
+
executeGetTokenPrice,
|
|
88
135
|
executePay,
|
|
89
136
|
executePayGasless,
|
|
90
137
|
executePaymentPlan,
|
|
91
138
|
executePaymentPlanDemo,
|
|
139
|
+
executeQuoteBridge,
|
|
140
|
+
executeQuoteBridgeDemo,
|
|
92
141
|
executeSmartPay,
|
|
93
142
|
executeSmartPayDemo,
|
|
94
143
|
executeTonBridgeTool,
|
|
144
|
+
executeWdkExecuteSwap,
|
|
145
|
+
executeWdkExecuteSwapDemo,
|
|
95
146
|
executeWdkGetBalances,
|
|
96
147
|
executeWdkGetBalancesDemo,
|
|
97
148
|
executeWdkGetWallet,
|
|
98
149
|
executeWdkGetWalletDemo,
|
|
150
|
+
executeWdkQuoteSwap,
|
|
151
|
+
executeWdkQuoteSwapDemo,
|
|
99
152
|
executeWdkSwap,
|
|
100
153
|
executeWdkSwapDemo,
|
|
101
154
|
executeWdkTransfer,
|
|
@@ -104,14 +157,22 @@ export {
|
|
|
104
157
|
formatAutoPayResult,
|
|
105
158
|
formatBalanceResult,
|
|
106
159
|
formatBridgeFeeResult,
|
|
160
|
+
formatBridgeQuoteResult,
|
|
107
161
|
formatBridgeResult,
|
|
108
162
|
formatErc8004CheckReputationResult,
|
|
109
163
|
formatErc8004ResolveAgentResult,
|
|
110
164
|
formatErc8004VerifyWalletResult,
|
|
165
|
+
formatBridgeResult as formatExecuteBridgeFromQuoteResult,
|
|
166
|
+
formatExecuteSwapResult,
|
|
167
|
+
formatGasPriceResult,
|
|
111
168
|
formatGaslessPaymentResult,
|
|
169
|
+
formatNetworkFeeComparison,
|
|
170
|
+
formatPaymentFeeEstimate,
|
|
112
171
|
formatPaymentPlanResult,
|
|
113
172
|
formatPaymentResult,
|
|
114
173
|
formatSmartPayResult,
|
|
174
|
+
formatSwapQuoteResult,
|
|
175
|
+
formatTokenPriceResult,
|
|
115
176
|
formatWdkBalancesResult,
|
|
116
177
|
formatWdkSwapResult,
|
|
117
178
|
formatWdkTransferResult,
|
|
@@ -119,12 +180,20 @@ export {
|
|
|
119
180
|
getAllBalancesInputSchema,
|
|
120
181
|
getBalanceInputSchema,
|
|
121
182
|
getBridgeFeeInputSchema,
|
|
183
|
+
getGasPriceInputSchema,
|
|
184
|
+
getQuote,
|
|
185
|
+
getTokenPriceInputSchema,
|
|
186
|
+
getTokenPrices,
|
|
187
|
+
getTokenPricesDemo,
|
|
122
188
|
payGaslessInputSchema,
|
|
123
189
|
payInputSchema,
|
|
124
190
|
paymentPlanInputSchema,
|
|
191
|
+
quoteBridgeInputSchema,
|
|
125
192
|
smartPayInputSchema,
|
|
193
|
+
wdkExecuteSwapInputSchema,
|
|
126
194
|
wdkGetBalancesInputSchema,
|
|
127
195
|
wdkGetWalletInputSchema,
|
|
196
|
+
wdkQuoteSwapInputSchema,
|
|
128
197
|
wdkSwapInputSchema,
|
|
129
198
|
wdkTransferInputSchema
|
|
130
199
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@t402/mcp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.8.0",
|
|
4
4
|
"description": "t402 Payment Protocol MCP Server for AI Agents",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"module": "./dist/esm/index.js",
|
|
@@ -25,15 +25,15 @@
|
|
|
25
25
|
"directory": "sdks/typescript/packages/mcp"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@eslint/js": "^
|
|
29
|
-
"@types/node": "^25.
|
|
30
|
-
"@typescript-eslint/eslint-plugin": "^8.56.
|
|
31
|
-
"@typescript-eslint/parser": "^8.56.
|
|
32
|
-
"eslint": "^
|
|
28
|
+
"@eslint/js": "^10.0.1",
|
|
29
|
+
"@types/node": "^25.3.5",
|
|
30
|
+
"@typescript-eslint/eslint-plugin": "^8.56.1",
|
|
31
|
+
"@typescript-eslint/parser": "^8.56.1",
|
|
32
|
+
"eslint": "^10.0.3",
|
|
33
33
|
"eslint-plugin-import": "^2.31.0",
|
|
34
|
-
"eslint-plugin-jsdoc": "^62.
|
|
34
|
+
"eslint-plugin-jsdoc": "^62.7.1",
|
|
35
35
|
"eslint-plugin-prettier": "^5.5.5",
|
|
36
|
-
"glob": "^13.0.
|
|
36
|
+
"glob": "^13.0.6",
|
|
37
37
|
"prettier": "3.8.1",
|
|
38
38
|
"tsup": "^8.5.1",
|
|
39
39
|
"tsx": "^4.21.0",
|
|
@@ -43,11 +43,11 @@
|
|
|
43
43
|
"vitest": "^3.2.4"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
46
|
+
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
47
47
|
"zod": "^3.24.2",
|
|
48
|
-
"@t402/
|
|
49
|
-
"@t402/
|
|
50
|
-
"@t402/
|
|
48
|
+
"@t402/core": "2.8.0",
|
|
49
|
+
"@t402/evm": "2.8.0",
|
|
50
|
+
"@t402/erc8004": "2.8.0"
|
|
51
51
|
},
|
|
52
52
|
"peerDependencies": {
|
|
53
53
|
"viem": "^2.0.0"
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
"test:watch": "vitest",
|
|
100
100
|
"format": "prettier -c .prettierrc --write \"**/*.{ts,js,cjs,json,md}\"",
|
|
101
101
|
"format:check": "prettier -c .prettierrc --check \"**/*.{ts,js,cjs,json,md}\"",
|
|
102
|
-
"lint": "eslint . --
|
|
103
|
-
"lint:check": "eslint .
|
|
102
|
+
"lint": "eslint . --fix",
|
|
103
|
+
"lint:check": "eslint ."
|
|
104
104
|
}
|
|
105
105
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/server/t402Server.ts"],"sourcesContent":["/**\n * t402 MCP Server - Main server implementation\n */\n\nimport { Server } from '@modelcontextprotocol/sdk/server/index.js'\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'\nimport { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js'\nimport type { McpServerConfig, SupportedNetwork } from '../types.js'\nimport {\n TOOL_DEFINITIONS,\n WDK_TOOL_DEFINITIONS,\n UNIFIED_TOOL_DEFINITIONS,\n executeGetBalance,\n formatBalanceResult,\n getBalanceInputSchema,\n executeGetAllBalances,\n formatAllBalancesResult,\n getAllBalancesInputSchema,\n executePay,\n formatPaymentResult,\n payInputSchema,\n executePayGasless,\n formatGaslessPaymentResult,\n payGaslessInputSchema,\n executeGetBridgeFee,\n formatBridgeFeeResult,\n getBridgeFeeInputSchema,\n executeBridge,\n formatBridgeResult,\n bridgeInputSchema,\n // WDK tools\n wdkGetWalletInputSchema,\n executeWdkGetWallet,\n executeWdkGetWalletDemo,\n formatWdkWalletResult,\n wdkGetBalancesInputSchema,\n executeWdkGetBalances,\n executeWdkGetBalancesDemo,\n formatWdkBalancesResult,\n wdkTransferInputSchema,\n executeWdkTransfer,\n executeWdkTransferDemo,\n formatWdkTransferResult,\n wdkSwapInputSchema,\n executeWdkSwap,\n executeWdkSwapDemo,\n formatWdkSwapResult,\n autoPayInputSchema,\n executeAutoPay,\n executeAutoPayDemo,\n formatAutoPayResult,\n // Unified tools\n smartPayInputSchema,\n executeSmartPay,\n executeSmartPayDemo,\n formatSmartPayResult,\n paymentPlanInputSchema,\n executePaymentPlan,\n executePaymentPlanDemo,\n formatPaymentPlanResult,\n // TON bridge tools\n TON_BRIDGE_TOOLS,\n executeTonBridgeTool,\n type TonMcpBridgeConfig,\n // ERC-8004 tools\n ERC8004_TOOL_DEFINITIONS,\n erc8004ResolveAgentInputSchema,\n executeErc8004ResolveAgent,\n formatErc8004ResolveAgentResult,\n erc8004CheckReputationInputSchema,\n executeErc8004CheckReputation,\n formatErc8004CheckReputationResult,\n erc8004VerifyWalletInputSchema,\n executeErc8004VerifyWallet,\n formatErc8004VerifyWalletResult,\n} from '../tools/index.js'\nimport type { T402WDK } from '@t402/wdk'\n\n/**\n * t402 MCP Server\n *\n * Provides payment tools for AI agents via the Model Context Protocol.\n * When a WDK seed phrase is configured, additional wallet management tools are available.\n */\nexport class T402McpServer {\n private server: Server\n private config: McpServerConfig\n private wdk: T402WDK | null = null\n\n constructor(config: McpServerConfig = {}) {\n this.config = config\n this.server = new Server(\n {\n name: 't402',\n version: '1.0.0',\n },\n {\n capabilities: {\n tools: {},\n },\n },\n )\n\n this.setupHandlers()\n }\n\n /**\n * Initialize the WDK instance from seed phrase\n */\n async initWdk(): Promise<void> {\n if (!this.config.seedPhrase) return\n\n try {\n const { T402WDK } = await import('@t402/wdk')\n const rpcUrls: Record<string, string> = {}\n\n if (this.config.rpcUrls) {\n for (const [network, url] of Object.entries(this.config.rpcUrls)) {\n if (url) rpcUrls[network] = url\n }\n }\n\n this.wdk = new T402WDK(this.config.seedPhrase, rpcUrls)\n } catch {\n console.error('Warning: Failed to initialize WDK. WDK tools will not be available.')\n }\n }\n\n /** TON MCP bridge configuration */\n private tonBridgeConfig: TonMcpBridgeConfig | null = null\n\n /**\n * Register TON bridge tools\n *\n * Enables AI agents to use @ton/mcp tools through the t402 MCP server.\n */\n registerTonBridge(config: TonMcpBridgeConfig): void {\n this.tonBridgeConfig = config\n }\n\n /**\n * Get all tool definitions (base + WDK if configured + unified if enabled + TON bridge if registered)\n */\n private getToolDefinitions() {\n const tools = { ...TOOL_DEFINITIONS, ...ERC8004_TOOL_DEFINITIONS }\n if (this.wdk || this.config.demoMode) {\n Object.assign(tools, WDK_TOOL_DEFINITIONS)\n }\n if (this.config.unifiedMode && (this.wdk || this.config.demoMode)) {\n Object.assign(tools, UNIFIED_TOOL_DEFINITIONS)\n }\n if (this.tonBridgeConfig) {\n Object.assign(tools, TON_BRIDGE_TOOLS)\n }\n return tools\n }\n\n /**\n * Set up MCP request handlers\n */\n private setupHandlers(): void {\n // List available tools\n this.server.setRequestHandler(ListToolsRequestSchema, async () => {\n return {\n tools: Object.values(this.getToolDefinitions()),\n }\n })\n\n // Handle tool calls\n this.server.setRequestHandler(CallToolRequestSchema, async (request) => {\n const { name, arguments: args } = request.params\n\n try {\n switch (name) {\n case 't402/getBalance':\n return await this.handleGetBalance(args)\n\n case 't402/getAllBalances':\n return await this.handleGetAllBalances(args)\n\n case 't402/pay':\n return await this.handlePay(args)\n\n case 't402/payGasless':\n return await this.handlePayGasless(args)\n\n case 't402/getBridgeFee':\n return await this.handleGetBridgeFee(args)\n\n case 't402/bridge':\n return await this.handleBridge(args)\n\n // WDK tools\n case 'wdk/getWallet':\n return await this.handleWdkGetWallet(args)\n\n case 'wdk/getBalances':\n return await this.handleWdkGetBalances(args)\n\n case 'wdk/transfer':\n return await this.handleWdkTransfer(args)\n\n case 'wdk/swap':\n return await this.handleWdkSwap(args)\n\n case 't402/autoPay':\n return await this.handleAutoPay(args)\n\n // Unified tools\n case 't402/smartPay':\n return await this.handleSmartPay(args)\n\n case 't402/paymentPlan':\n return await this.handlePaymentPlan(args)\n\n // ERC-8004 tools\n case 'erc8004/resolveAgent':\n return await this.handleErc8004ResolveAgent(args)\n\n case 'erc8004/checkReputation':\n return await this.handleErc8004CheckReputation(args)\n\n case 'erc8004/verifyWallet':\n return await this.handleErc8004VerifyWallet(args)\n\n // TON bridge tools\n case 'ton/getBalance':\n case 'ton/transfer':\n case 'ton/getJettonBalance':\n case 'ton/swapJettons':\n case 'ton/getTransactionStatus':\n return await this.handleTonBridgeTool(name, args)\n\n default:\n throw new Error(`Unknown tool: ${name}`)\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return {\n content: [\n {\n type: 'text' as const,\n text: `Error: ${message}`,\n },\n ],\n isError: true,\n }\n }\n })\n }\n\n /**\n * Handle t402/getBalance\n */\n private async handleGetBalance(args: unknown) {\n const input = getBalanceInputSchema.parse(args)\n const result = await executeGetBalance(input, this.config.rpcUrls)\n return {\n content: [\n {\n type: 'text' as const,\n text: formatBalanceResult(result),\n },\n ],\n }\n }\n\n /**\n * Handle t402/getAllBalances\n */\n private async handleGetAllBalances(args: unknown) {\n const input = getAllBalancesInputSchema.parse(args)\n const result = await executeGetAllBalances(input, this.config.rpcUrls)\n return {\n content: [\n {\n type: 'text' as const,\n text: formatAllBalancesResult(result),\n },\n ],\n }\n }\n\n /**\n * Handle t402/pay\n */\n private async handlePay(args: unknown) {\n if (!this.config.privateKey && !this.config.demoMode) {\n throw new Error(\n 'Private key not configured. Set T402_PRIVATE_KEY environment variable or enable demo mode.',\n )\n }\n\n const input = payInputSchema.parse(args)\n const result = await executePay(input, {\n privateKey: this.config.privateKey || '0x',\n rpcUrl: this.config.rpcUrls?.[input.network as SupportedNetwork],\n demoMode: this.config.demoMode,\n })\n\n return {\n content: [\n {\n type: 'text' as const,\n text: formatPaymentResult(result),\n },\n ],\n }\n }\n\n /**\n * Handle t402/payGasless\n */\n private async handlePayGasless(args: unknown) {\n if (!this.config.privateKey && !this.config.demoMode) {\n throw new Error(\n 'Private key not configured. Set T402_PRIVATE_KEY environment variable or enable demo mode.',\n )\n }\n\n if (!this.config.bundlerUrl && !this.config.demoMode) {\n throw new Error(\n 'Bundler URL not configured. Set T402_BUNDLER_URL environment variable or enable demo mode.',\n )\n }\n\n if (!this.config.paymasterUrl && !this.config.demoMode) {\n throw new Error(\n 'Paymaster URL not configured. Set T402_PAYMASTER_URL environment variable or enable demo mode.',\n )\n }\n\n const input = payGaslessInputSchema.parse(args)\n const result = await executePayGasless(input, {\n privateKey: this.config.privateKey || '0x',\n bundlerUrl: this.config.bundlerUrl || '',\n paymasterUrl: this.config.paymasterUrl || '',\n rpcUrl: this.config.rpcUrls?.[input.network as SupportedNetwork],\n demoMode: this.config.demoMode,\n })\n\n return {\n content: [\n {\n type: 'text' as const,\n text: formatGaslessPaymentResult(result),\n },\n ],\n }\n }\n\n /**\n * Handle t402/getBridgeFee\n */\n private async handleGetBridgeFee(args: unknown) {\n const input = getBridgeFeeInputSchema.parse(args)\n const result = await executeGetBridgeFee(input, this.config.rpcUrls)\n return {\n content: [\n {\n type: 'text' as const,\n text: formatBridgeFeeResult(result),\n },\n ],\n }\n }\n\n /**\n * Handle t402/bridge\n */\n private async handleBridge(args: unknown) {\n if (!this.config.privateKey && !this.config.demoMode) {\n throw new Error(\n 'Private key not configured. Set T402_PRIVATE_KEY environment variable or enable demo mode.',\n )\n }\n\n const input = bridgeInputSchema.parse(args)\n const result = await executeBridge(input, {\n privateKey: this.config.privateKey || '0x',\n rpcUrl: this.config.rpcUrls?.[input.fromChain as SupportedNetwork],\n demoMode: this.config.demoMode,\n })\n\n return {\n content: [\n {\n type: 'text' as const,\n text: formatBridgeResult(result),\n },\n ],\n }\n }\n\n // ---- WDK Tool Handlers ----\n\n /**\n * Handle wdk/getWallet\n */\n private async handleWdkGetWallet(args: unknown) {\n wdkGetWalletInputSchema.parse(args)\n\n const result =\n this.config.demoMode || !this.wdk\n ? executeWdkGetWalletDemo()\n : await executeWdkGetWallet({}, this.wdk)\n\n return {\n content: [{ type: 'text' as const, text: formatWdkWalletResult(result) }],\n }\n }\n\n /**\n * Handle wdk/getBalances\n */\n private async handleWdkGetBalances(args: unknown) {\n const input = wdkGetBalancesInputSchema.parse(args)\n\n const result =\n this.config.demoMode || !this.wdk\n ? executeWdkGetBalancesDemo()\n : await executeWdkGetBalances(input, this.wdk)\n\n return {\n content: [{ type: 'text' as const, text: formatWdkBalancesResult(result) }],\n }\n }\n\n /**\n * Handle wdk/transfer\n */\n private async handleWdkTransfer(args: unknown) {\n const input = wdkTransferInputSchema.parse(args)\n\n const result =\n this.config.demoMode || !this.wdk\n ? executeWdkTransferDemo(input)\n : await executeWdkTransfer(input, this.wdk)\n\n return {\n content: [{ type: 'text' as const, text: formatWdkTransferResult(result) }],\n }\n }\n\n /**\n * Handle wdk/swap\n */\n private async handleWdkSwap(args: unknown) {\n const input = wdkSwapInputSchema.parse(args)\n\n const result =\n this.config.demoMode || !this.wdk\n ? executeWdkSwapDemo(input)\n : await executeWdkSwap(input, this.wdk)\n\n return {\n content: [{ type: 'text' as const, text: formatWdkSwapResult(result) }],\n }\n }\n\n /**\n * Handle t402/autoPay\n */\n private async handleAutoPay(args: unknown) {\n const input = autoPayInputSchema.parse(args)\n\n const result =\n this.config.demoMode || !this.wdk\n ? executeAutoPayDemo(input)\n : await executeAutoPay(input, this.wdk)\n\n return {\n content: [{ type: 'text' as const, text: formatAutoPayResult(result) }],\n }\n }\n\n // ---- Unified Tool Handlers ----\n\n /**\n * Handle t402/smartPay\n */\n private async handleSmartPay(args: unknown) {\n const input = smartPayInputSchema.parse(args)\n\n const result =\n this.config.demoMode || !this.wdk\n ? executeSmartPayDemo(input)\n : await executeSmartPay(input, this.wdk)\n\n return {\n content: [{ type: 'text' as const, text: formatSmartPayResult(result) }],\n }\n }\n\n /**\n * Handle t402/paymentPlan\n */\n private async handlePaymentPlan(args: unknown) {\n const input = paymentPlanInputSchema.parse(args)\n\n const result =\n this.config.demoMode || !this.wdk\n ? executePaymentPlanDemo(input)\n : await executePaymentPlan(input, this.wdk)\n\n return {\n content: [{ type: 'text' as const, text: formatPaymentPlanResult(result) }],\n }\n }\n\n // ---- ERC-8004 Tool Handlers ----\n\n /**\n * Handle erc8004/resolveAgent\n */\n private async handleErc8004ResolveAgent(args: unknown) {\n const input = erc8004ResolveAgentInputSchema.parse(args)\n const result = await executeErc8004ResolveAgent(input, this.config.rpcUrls)\n return {\n content: [{ type: 'text' as const, text: formatErc8004ResolveAgentResult(result) }],\n }\n }\n\n /**\n * Handle erc8004/checkReputation\n */\n private async handleErc8004CheckReputation(args: unknown) {\n const input = erc8004CheckReputationInputSchema.parse(args)\n const result = await executeErc8004CheckReputation(input, this.config.rpcUrls)\n return {\n content: [{ type: 'text' as const, text: formatErc8004CheckReputationResult(result) }],\n }\n }\n\n /**\n * Handle erc8004/verifyWallet\n */\n private async handleErc8004VerifyWallet(args: unknown) {\n const input = erc8004VerifyWalletInputSchema.parse(args)\n const result = await executeErc8004VerifyWallet(input, this.config.rpcUrls)\n return {\n content: [{ type: 'text' as const, text: formatErc8004VerifyWalletResult(result) }],\n }\n }\n\n // ---- TON Bridge Tool Handler ----\n\n /**\n * Handle TON bridge tool calls\n */\n private async handleTonBridgeTool(name: string, args: unknown) {\n if (!this.tonBridgeConfig) {\n throw new Error('TON bridge not configured. Call registerTonBridge() to enable TON tools.')\n }\n\n return executeTonBridgeTool(name, (args ?? {}) as Record<string, unknown>, this.tonBridgeConfig)\n }\n\n /**\n * Start the server using stdio transport\n */\n async run(): Promise<void> {\n // Initialize WDK if seed phrase is configured\n await this.initWdk()\n\n const transport = new StdioServerTransport()\n await this.server.connect(transport)\n console.error('t402 MCP Server running on stdio')\n }\n}\n\n/**\n * Create a new t402 MCP server instance\n */\nexport function createT402McpServer(config?: McpServerConfig): T402McpServer {\n return new T402McpServer(config)\n}\n\n/**\n * Load configuration from environment variables\n */\nexport function loadConfigFromEnv(): McpServerConfig {\n const config: McpServerConfig = {}\n\n // Private key\n if (process.env.T402_PRIVATE_KEY) {\n config.privateKey = process.env.T402_PRIVATE_KEY\n }\n\n // Demo mode\n if (process.env.T402_DEMO_MODE === 'true') {\n config.demoMode = true\n }\n\n // ERC-4337 configuration\n if (process.env.T402_BUNDLER_URL) {\n config.bundlerUrl = process.env.T402_BUNDLER_URL\n }\n if (process.env.T402_PAYMASTER_URL) {\n config.paymasterUrl = process.env.T402_PAYMASTER_URL\n }\n\n // WDK configuration\n if (process.env.T402_WDK_SEED_PHRASE) {\n config.seedPhrase = process.env.T402_WDK_SEED_PHRASE\n }\n if (process.env.T402_WDK_CHAINS) {\n config.wdkChains = process.env.T402_WDK_CHAINS.split(',').map((c) => c.trim())\n }\n\n // Unified mode\n if (process.env.T402_UNIFIED_MODE === 'true') {\n config.unifiedMode = true\n }\n\n // Custom RPC URLs\n const rpcUrls: Partial<Record<SupportedNetwork, string>> = {}\n const networks: SupportedNetwork[] = [\n 'ethereum',\n 'base',\n 'arbitrum',\n 'optimism',\n 'polygon',\n 'avalanche',\n 'ink',\n 'berachain',\n 'unichain',\n ]\n\n for (const network of networks) {\n const envVar = `T402_RPC_${network.toUpperCase()}`\n if (process.env[envVar]) {\n rpcUrls[network] = process.env[envVar]\n }\n }\n\n if (Object.keys(rpcUrls).length > 0) {\n config.rpcUrls = rpcUrls\n }\n\n // TON MCP bridge configuration\n if (process.env.T402_TON_MCP_ENDPOINT) {\n config.tonMcpEndpoint = process.env.T402_TON_MCP_ENDPOINT\n }\n if (process.env.T402_TON_API_KEY) {\n config.tonApiKey = process.env.T402_TON_API_KEY\n }\n\n return config\n}\n"],"mappings":"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","names":[]}
|