@t402/mcp 2.6.0 → 2.7.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.
@@ -2,6 +2,7 @@ import { z } from 'zod';
2
2
  import { S as SupportedNetwork, C as ChainBalance, b as PaymentResult, G as GaslessPaymentResult, B as BridgeFeeQuote, a as BridgeResult } from '../ton-bridge-BN3RKhNy.mjs';
3
3
  export { d as TON_BRIDGE_TOOLS, e as TonMcpBridgeConfig, f as createTonBridgeToolSet, g as executeTonBridgeTool } from '../ton-bridge-BN3RKhNy.mjs';
4
4
  import { T402WDK } from '@t402/wdk';
5
+ import { ResolvedAgent, ReputationSummary } from '@t402/erc8004';
5
6
  import 'viem';
6
7
 
7
8
  /**
@@ -536,6 +537,102 @@ declare function executeAutoPayDemo(input: AutoPayInput): AutoPayResult;
536
537
  */
537
538
  declare function formatAutoPayResult(result: AutoPayResult): string;
538
539
 
540
+ /**
541
+ * erc8004/resolveAgent - Look up an agent's on-chain identity
542
+ */
543
+
544
+ /**
545
+ * Input schema for resolveAgent tool
546
+ */
547
+ declare const erc8004ResolveAgentInputSchema: z.ZodObject<{
548
+ agentId: z.ZodNumber;
549
+ agentRegistry: z.ZodString;
550
+ }, "strip", z.ZodTypeAny, {
551
+ agentId: number;
552
+ agentRegistry: string;
553
+ }, {
554
+ agentId: number;
555
+ agentRegistry: string;
556
+ }>;
557
+ type Erc8004ResolveAgentInput = z.infer<typeof erc8004ResolveAgentInputSchema>;
558
+ /**
559
+ * Execute resolveAgent tool
560
+ */
561
+ declare function executeErc8004ResolveAgent(input: Erc8004ResolveAgentInput, rpcUrls?: Partial<Record<SupportedNetwork, string>>): Promise<ResolvedAgent>;
562
+ /**
563
+ * Format resolveAgent result for display
564
+ */
565
+ declare function formatErc8004ResolveAgentResult(agent: ResolvedAgent): string;
566
+
567
+ /**
568
+ * erc8004/checkReputation - Query an agent's reputation score
569
+ */
570
+
571
+ /**
572
+ * Input schema for checkReputation tool
573
+ */
574
+ declare const erc8004CheckReputationInputSchema: z.ZodObject<{
575
+ agentId: z.ZodNumber;
576
+ agentRegistry: z.ZodString;
577
+ reputationRegistry: z.ZodString;
578
+ trustedReviewers: z.ZodArray<z.ZodString, "many">;
579
+ }, "strip", z.ZodTypeAny, {
580
+ agentId: number;
581
+ agentRegistry: string;
582
+ reputationRegistry: string;
583
+ trustedReviewers: string[];
584
+ }, {
585
+ agentId: number;
586
+ agentRegistry: string;
587
+ reputationRegistry: string;
588
+ trustedReviewers: string[];
589
+ }>;
590
+ type Erc8004CheckReputationInput = z.infer<typeof erc8004CheckReputationInputSchema>;
591
+ /**
592
+ * Execute checkReputation tool
593
+ */
594
+ declare function executeErc8004CheckReputation(input: Erc8004CheckReputationInput, rpcUrls?: Partial<Record<SupportedNetwork, string>>): Promise<ReputationSummary>;
595
+ /**
596
+ * Format checkReputation result for display
597
+ */
598
+ declare function formatErc8004CheckReputationResult(summary: ReputationSummary): string;
599
+
600
+ /**
601
+ * erc8004/verifyWallet - Verify payTo matches agent's on-chain wallet
602
+ */
603
+
604
+ /**
605
+ * Input schema for verifyWallet tool
606
+ */
607
+ declare const erc8004VerifyWalletInputSchema: z.ZodObject<{
608
+ agentId: z.ZodNumber;
609
+ agentRegistry: z.ZodString;
610
+ walletAddress: z.ZodString;
611
+ }, "strip", z.ZodTypeAny, {
612
+ agentId: number;
613
+ agentRegistry: string;
614
+ walletAddress: string;
615
+ }, {
616
+ agentId: number;
617
+ agentRegistry: string;
618
+ walletAddress: string;
619
+ }>;
620
+ type Erc8004VerifyWalletInput = z.infer<typeof erc8004VerifyWalletInputSchema>;
621
+ interface Erc8004VerifyWalletResult {
622
+ matches: boolean;
623
+ agentId: number;
624
+ walletAddress: string;
625
+ registryAddress: string;
626
+ }
627
+ /**
628
+ * Execute verifyWallet tool
629
+ */
630
+ declare function executeErc8004VerifyWallet(input: Erc8004VerifyWalletInput, rpcUrls?: Partial<Record<SupportedNetwork, string>>): Promise<Erc8004VerifyWalletResult>;
631
+ /**
632
+ * Format verifyWallet result for display
633
+ */
634
+ declare function formatErc8004VerifyWalletResult(result: Erc8004VerifyWalletResult): string;
635
+
539
636
  /**
540
637
  * Unified MCP Toolkit - Combines WDK wallet tools with t402 payment tools.
541
638
  *
@@ -1037,5 +1134,86 @@ declare const WDK_TOOL_DEFINITIONS: {
1037
1134
  };
1038
1135
  };
1039
1136
  };
1137
+ /**
1138
+ * ERC-8004 tool definitions (always available — read-only on-chain queries)
1139
+ */
1140
+ declare const ERC8004_TOOL_DEFINITIONS: {
1141
+ 'erc8004/resolveAgent': {
1142
+ name: string;
1143
+ description: string;
1144
+ inputSchema: {
1145
+ type: "object";
1146
+ properties: {
1147
+ agentId: {
1148
+ type: string;
1149
+ description: string;
1150
+ };
1151
+ agentRegistry: {
1152
+ type: string;
1153
+ pattern: string;
1154
+ description: string;
1155
+ };
1156
+ };
1157
+ required: string[];
1158
+ };
1159
+ };
1160
+ 'erc8004/checkReputation': {
1161
+ name: string;
1162
+ description: string;
1163
+ inputSchema: {
1164
+ type: "object";
1165
+ properties: {
1166
+ agentId: {
1167
+ type: string;
1168
+ description: string;
1169
+ };
1170
+ agentRegistry: {
1171
+ type: string;
1172
+ pattern: string;
1173
+ description: string;
1174
+ };
1175
+ reputationRegistry: {
1176
+ type: string;
1177
+ pattern: string;
1178
+ description: string;
1179
+ };
1180
+ trustedReviewers: {
1181
+ type: string;
1182
+ items: {
1183
+ type: string;
1184
+ pattern: string;
1185
+ };
1186
+ minItems: number;
1187
+ description: string;
1188
+ };
1189
+ };
1190
+ required: string[];
1191
+ };
1192
+ };
1193
+ 'erc8004/verifyWallet': {
1194
+ name: string;
1195
+ description: string;
1196
+ inputSchema: {
1197
+ type: "object";
1198
+ properties: {
1199
+ agentId: {
1200
+ type: string;
1201
+ description: string;
1202
+ };
1203
+ agentRegistry: {
1204
+ type: string;
1205
+ pattern: string;
1206
+ description: string;
1207
+ };
1208
+ walletAddress: {
1209
+ type: string;
1210
+ pattern: string;
1211
+ description: string;
1212
+ };
1213
+ };
1214
+ required: string[];
1215
+ };
1216
+ };
1217
+ };
1040
1218
 
1041
- export { type AllBalancesResult, type AutoPayInput, type AutoPayResult, type BridgeInput, type BridgeOptions, GASLESS_SUPPORTED_NETWORKS, type GetAllBalancesInput, type GetBalanceInput, type GetBridgeFeeInput, type PayGaslessInput, type PayGaslessOptions, type PayInput, type PayOptions, type PaymentPlanInput, type PaymentPlanResult, type SmartPayInput, type SmartPayResult, type SmartPayStep, TOOL_DEFINITIONS, UNIFIED_TOOL_DEFINITIONS, type UnifiedMcpConfig, WDK_TOOL_DEFINITIONS, type WdkBalancesResult, type WdkGetBalancesInput, type WdkGetWalletInput, type WdkSwapInput, type WdkSwapResult, type WdkTransferInput, type WdkTransferResult, type WdkWalletInfo, autoPayInputSchema, bridgeInputSchema, executeAutoPay, executeAutoPayDemo, executeBridge, executeGetAllBalances, executeGetBalance, executeGetBridgeFee, executePay, executePayGasless, executePaymentPlan, executePaymentPlanDemo, executeSmartPay, executeSmartPayDemo, executeWdkGetBalances, executeWdkGetBalancesDemo, executeWdkGetWallet, executeWdkGetWalletDemo, executeWdkSwap, executeWdkSwapDemo, executeWdkTransfer, executeWdkTransferDemo, formatAllBalancesResult, formatAutoPayResult, formatBalanceResult, formatBridgeFeeResult, formatBridgeResult, formatGaslessPaymentResult, formatPaymentPlanResult, formatPaymentResult, formatSmartPayResult, formatWdkBalancesResult, formatWdkSwapResult, formatWdkTransferResult, formatWdkWalletResult, getAllBalancesInputSchema, getBalanceInputSchema, getBridgeFeeInputSchema, payGaslessInputSchema, payInputSchema, paymentPlanInputSchema, smartPayInputSchema, wdkGetBalancesInputSchema, wdkGetWalletInputSchema, wdkSwapInputSchema, wdkTransferInputSchema };
1219
+ export { type AllBalancesResult, type AutoPayInput, type AutoPayResult, type BridgeInput, type BridgeOptions, ERC8004_TOOL_DEFINITIONS, type Erc8004CheckReputationInput, type Erc8004ResolveAgentInput, type Erc8004VerifyWalletInput, type Erc8004VerifyWalletResult, GASLESS_SUPPORTED_NETWORKS, type GetAllBalancesInput, type GetBalanceInput, type GetBridgeFeeInput, type PayGaslessInput, type PayGaslessOptions, type PayInput, type PayOptions, type PaymentPlanInput, type PaymentPlanResult, type SmartPayInput, type SmartPayResult, type SmartPayStep, TOOL_DEFINITIONS, UNIFIED_TOOL_DEFINITIONS, type UnifiedMcpConfig, WDK_TOOL_DEFINITIONS, type WdkBalancesResult, type WdkGetBalancesInput, type WdkGetWalletInput, type WdkSwapInput, type WdkSwapResult, type WdkTransferInput, type WdkTransferResult, type WdkWalletInfo, autoPayInputSchema, bridgeInputSchema, erc8004CheckReputationInputSchema, erc8004ResolveAgentInputSchema, erc8004VerifyWalletInputSchema, executeAutoPay, executeAutoPayDemo, executeBridge, executeErc8004CheckReputation, executeErc8004ResolveAgent, executeErc8004VerifyWallet, executeGetAllBalances, executeGetBalance, executeGetBridgeFee, executePay, executePayGasless, executePaymentPlan, executePaymentPlanDemo, executeSmartPay, executeSmartPayDemo, executeWdkGetBalances, executeWdkGetBalancesDemo, executeWdkGetWallet, executeWdkGetWalletDemo, executeWdkSwap, executeWdkSwapDemo, executeWdkTransfer, executeWdkTransferDemo, formatAllBalancesResult, formatAutoPayResult, formatBalanceResult, formatBridgeFeeResult, formatBridgeResult, formatErc8004CheckReputationResult, formatErc8004ResolveAgentResult, formatErc8004VerifyWalletResult, formatGaslessPaymentResult, formatPaymentPlanResult, formatPaymentResult, formatSmartPayResult, formatWdkBalancesResult, formatWdkSwapResult, formatWdkTransferResult, formatWdkWalletResult, getAllBalancesInputSchema, getBalanceInputSchema, getBridgeFeeInputSchema, payGaslessInputSchema, payInputSchema, paymentPlanInputSchema, smartPayInputSchema, wdkGetBalancesInputSchema, wdkGetWalletInputSchema, wdkSwapInputSchema, wdkTransferInputSchema };
@@ -1,4 +1,5 @@
1
1
  import {
2
+ ERC8004_TOOL_DEFINITIONS,
2
3
  GASLESS_SUPPORTED_NETWORKS,
3
4
  TON_BRIDGE_TOOLS,
4
5
  TOOL_DEFINITIONS,
@@ -7,9 +8,15 @@ import {
7
8
  autoPayInputSchema,
8
9
  bridgeInputSchema,
9
10
  createTonBridgeToolSet,
11
+ erc8004CheckReputationInputSchema,
12
+ erc8004ResolveAgentInputSchema,
13
+ erc8004VerifyWalletInputSchema,
10
14
  executeAutoPay,
11
15
  executeAutoPayDemo,
12
16
  executeBridge,
17
+ executeErc8004CheckReputation,
18
+ executeErc8004ResolveAgent,
19
+ executeErc8004VerifyWallet,
13
20
  executeGetAllBalances,
14
21
  executeGetBalance,
15
22
  executeGetBridgeFee,
@@ -33,6 +40,9 @@ import {
33
40
  formatBalanceResult,
34
41
  formatBridgeFeeResult,
35
42
  formatBridgeResult,
43
+ formatErc8004CheckReputationResult,
44
+ formatErc8004ResolveAgentResult,
45
+ formatErc8004VerifyWalletResult,
36
46
  formatGaslessPaymentResult,
37
47
  formatPaymentPlanResult,
38
48
  formatPaymentResult,
@@ -52,8 +62,9 @@ import {
52
62
  wdkGetWalletInputSchema,
53
63
  wdkSwapInputSchema,
54
64
  wdkTransferInputSchema
55
- } from "../chunk-RDQ7AMR4.mjs";
65
+ } from "../chunk-B7X7H6NV.mjs";
56
66
  export {
67
+ ERC8004_TOOL_DEFINITIONS,
57
68
  GASLESS_SUPPORTED_NETWORKS,
58
69
  TON_BRIDGE_TOOLS,
59
70
  TOOL_DEFINITIONS,
@@ -62,9 +73,15 @@ export {
62
73
  autoPayInputSchema,
63
74
  bridgeInputSchema,
64
75
  createTonBridgeToolSet,
76
+ erc8004CheckReputationInputSchema,
77
+ erc8004ResolveAgentInputSchema,
78
+ erc8004VerifyWalletInputSchema,
65
79
  executeAutoPay,
66
80
  executeAutoPayDemo,
67
81
  executeBridge,
82
+ executeErc8004CheckReputation,
83
+ executeErc8004ResolveAgent,
84
+ executeErc8004VerifyWallet,
68
85
  executeGetAllBalances,
69
86
  executeGetBalance,
70
87
  executeGetBridgeFee,
@@ -88,6 +105,9 @@ export {
88
105
  formatBalanceResult,
89
106
  formatBridgeFeeResult,
90
107
  formatBridgeResult,
108
+ formatErc8004CheckReputationResult,
109
+ formatErc8004ResolveAgentResult,
110
+ formatErc8004VerifyWalletResult,
91
111
  formatGaslessPaymentResult,
92
112
  formatPaymentPlanResult,
93
113
  formatPaymentResult,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t402/mcp",
3
- "version": "2.6.0",
3
+ "version": "2.7.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",
@@ -45,10 +45,9 @@
45
45
  "dependencies": {
46
46
  "@modelcontextprotocol/sdk": "^1.26.0",
47
47
  "zod": "^3.24.2",
48
- "@t402/core": "2.6.0",
49
- "@t402/evm": "2.6.0",
50
- "@t402/wdk-protocol": "2.6.0",
51
- "@t402/wdk": "2.6.0"
48
+ "@t402/erc8004": "2.7.0",
49
+ "@t402/core": "2.7.0",
50
+ "@t402/evm": "2.7.0"
52
51
  },
53
52
  "peerDependencies": {
54
53
  "viem": "^2.0.0"
@@ -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} 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 }\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 // 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 // ---- 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":[]}