@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.
@@ -1,4 +1,5 @@
1
1
  import {
2
+ ERC8004_TOOL_DEFINITIONS,
2
3
  TON_BRIDGE_TOOLS,
3
4
  TOOL_DEFINITIONS,
4
5
  UNIFIED_TOOL_DEFINITIONS,
@@ -6,9 +7,15 @@ import {
6
7
  __publicField,
7
8
  autoPayInputSchema,
8
9
  bridgeInputSchema,
10
+ erc8004CheckReputationInputSchema,
11
+ erc8004ResolveAgentInputSchema,
12
+ erc8004VerifyWalletInputSchema,
9
13
  executeAutoPay,
10
14
  executeAutoPayDemo,
11
15
  executeBridge,
16
+ executeErc8004CheckReputation,
17
+ executeErc8004ResolveAgent,
18
+ executeErc8004VerifyWallet,
12
19
  executeGetAllBalances,
13
20
  executeGetBalance,
14
21
  executeGetBridgeFee,
@@ -32,6 +39,9 @@ import {
32
39
  formatBalanceResult,
33
40
  formatBridgeFeeResult,
34
41
  formatBridgeResult,
42
+ formatErc8004CheckReputationResult,
43
+ formatErc8004ResolveAgentResult,
44
+ formatErc8004VerifyWalletResult,
35
45
  formatGaslessPaymentResult,
36
46
  formatPaymentPlanResult,
37
47
  formatPaymentResult,
@@ -51,7 +61,7 @@ import {
51
61
  wdkGetWalletInputSchema,
52
62
  wdkSwapInputSchema,
53
63
  wdkTransferInputSchema
54
- } from "./chunk-RDQ7AMR4.mjs";
64
+ } from "./chunk-B7X7H6NV.mjs";
55
65
 
56
66
  // src/server/t402Server.ts
57
67
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
@@ -108,7 +118,7 @@ var T402McpServer = class {
108
118
  * Get all tool definitions (base + WDK if configured + unified if enabled + TON bridge if registered)
109
119
  */
110
120
  getToolDefinitions() {
111
- const tools = { ...TOOL_DEFINITIONS };
121
+ const tools = { ...TOOL_DEFINITIONS, ...ERC8004_TOOL_DEFINITIONS };
112
122
  if (this.wdk || this.config.demoMode) {
113
123
  Object.assign(tools, WDK_TOOL_DEFINITIONS);
114
124
  }
@@ -161,6 +171,13 @@ var T402McpServer = class {
161
171
  return await this.handleSmartPay(args);
162
172
  case "t402/paymentPlan":
163
173
  return await this.handlePaymentPlan(args);
174
+ // ERC-8004 tools
175
+ case "erc8004/resolveAgent":
176
+ return await this.handleErc8004ResolveAgent(args);
177
+ case "erc8004/checkReputation":
178
+ return await this.handleErc8004CheckReputation(args);
179
+ case "erc8004/verifyWallet":
180
+ return await this.handleErc8004VerifyWallet(args);
164
181
  // TON bridge tools
165
182
  case "ton/getBalance":
166
183
  case "ton/transfer":
@@ -386,6 +403,37 @@ var T402McpServer = class {
386
403
  content: [{ type: "text", text: formatPaymentPlanResult(result) }]
387
404
  };
388
405
  }
406
+ // ---- ERC-8004 Tool Handlers ----
407
+ /**
408
+ * Handle erc8004/resolveAgent
409
+ */
410
+ async handleErc8004ResolveAgent(args) {
411
+ const input = erc8004ResolveAgentInputSchema.parse(args);
412
+ const result = await executeErc8004ResolveAgent(input, this.config.rpcUrls);
413
+ return {
414
+ content: [{ type: "text", text: formatErc8004ResolveAgentResult(result) }]
415
+ };
416
+ }
417
+ /**
418
+ * Handle erc8004/checkReputation
419
+ */
420
+ async handleErc8004CheckReputation(args) {
421
+ const input = erc8004CheckReputationInputSchema.parse(args);
422
+ const result = await executeErc8004CheckReputation(input, this.config.rpcUrls);
423
+ return {
424
+ content: [{ type: "text", text: formatErc8004CheckReputationResult(result) }]
425
+ };
426
+ }
427
+ /**
428
+ * Handle erc8004/verifyWallet
429
+ */
430
+ async handleErc8004VerifyWallet(args) {
431
+ const input = erc8004VerifyWalletInputSchema.parse(args);
432
+ const result = await executeErc8004VerifyWallet(input, this.config.rpcUrls);
433
+ return {
434
+ content: [{ type: "text", text: formatErc8004VerifyWalletResult(result) }]
435
+ };
436
+ }
389
437
  // ---- TON Bridge Tool Handler ----
390
438
  /**
391
439
  * Handle TON bridge tool calls
@@ -467,4 +515,4 @@ export {
467
515
  createT402McpServer,
468
516
  loadConfigFromEnv
469
517
  };
470
- //# sourceMappingURL=chunk-3FGPOVUZ.mjs.map
518
+ //# sourceMappingURL=chunk-3PMBXSJ3.mjs.map
@@ -0,0 +1 @@
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":[]}
@@ -1132,10 +1132,10 @@ import { z as z7 } from "zod";
1132
1132
  var wdkGetWalletInputSchema = z7.object({});
1133
1133
  async function executeWdkGetWallet(_input, wdk) {
1134
1134
  const signer = await wdk.getSigner("ethereum");
1135
- const chains6 = wdk.getConfiguredChains();
1135
+ const chains7 = wdk.getConfiguredChains();
1136
1136
  return {
1137
1137
  evmAddress: signer.address,
1138
- chains: chains6.length > 0 ? chains6 : ["ethereum"]
1138
+ chains: chains7.length > 0 ? chains7 : ["ethereum"]
1139
1139
  };
1140
1140
  }
1141
1141
  function executeWdkGetWalletDemo() {
@@ -1167,14 +1167,14 @@ function findTokenFormatted(tokens, symbol) {
1167
1167
  }
1168
1168
  async function executeWdkGetBalances(input, wdk) {
1169
1169
  const balances = await wdk.getAggregatedBalances();
1170
- const chains6 = balances.chains.filter((c) => !input.chains || input.chains.includes(c.chain)).map((c) => ({
1170
+ const chains7 = balances.chains.filter((c) => !input.chains || input.chains.includes(c.chain)).map((c) => ({
1171
1171
  chain: c.chain,
1172
1172
  usdt0: findTokenFormatted(c.tokens, "USDT0"),
1173
1173
  usdc: findTokenFormatted(c.tokens, "USDC"),
1174
1174
  native: formatUnits2(c.native, 18)
1175
1175
  }));
1176
1176
  return {
1177
- chains: chains6,
1177
+ chains: chains7,
1178
1178
  totalUsdt0: formatUnits2(balances.totalUsdt0, 6),
1179
1179
  totalUsdc: formatUnits2(balances.totalUsdc, 6)
1180
1180
  };
@@ -1314,7 +1314,6 @@ function formatWdkSwapResult(result) {
1314
1314
 
1315
1315
  // src/tools/autoPay.ts
1316
1316
  import { z as z11 } from "zod";
1317
- import { T402Protocol } from "@t402/wdk-protocol";
1318
1317
  var autoPayInputSchema = z11.object({
1319
1318
  url: z11.string().url().describe("URL to fetch (may return 402 Payment Required)"),
1320
1319
  maxAmount: z11.string().regex(/^\d+(\.\d+)?$/).optional().describe('Maximum amount willing to pay (e.g., "10.00"). If not set, pays any amount.'),
@@ -1323,8 +1322,9 @@ var autoPayInputSchema = z11.object({
1323
1322
  )
1324
1323
  });
1325
1324
  async function executeAutoPay(input, wdk) {
1326
- const chains6 = input.preferredChain ? [input.preferredChain] : ["ethereum", "arbitrum", "base"];
1327
- const protocol = await T402Protocol.create(wdk, { chains: chains6 });
1325
+ const chains7 = input.preferredChain ? [input.preferredChain] : ["ethereum", "arbitrum", "base"];
1326
+ const { T402Protocol } = await import("@t402/wdk-protocol");
1327
+ const protocol = await T402Protocol.create(wdk, { chains: chains7 });
1328
1328
  const { response, receipt } = await protocol.fetch(input.url);
1329
1329
  if (receipt && input.maxAmount) {
1330
1330
  const paidAmount = parseFloat(receipt.amount) / 1e6;
@@ -1650,23 +1650,185 @@ function createTonBridgeToolSet(config) {
1650
1650
  };
1651
1651
  }
1652
1652
 
1653
- // src/tools/unified.ts
1653
+ // src/tools/erc8004ResolveAgent.ts
1654
1654
  import { z as z12 } from "zod";
1655
- import { T402Protocol as T402Protocol2 } from "@t402/wdk-protocol";
1656
- var smartPayInputSchema = z12.object({
1657
- url: z12.string().url().describe("URL of the 402-protected resource"),
1658
- maxBridgeFee: z12.string().regex(/^\d+(\.\d+)?$/).optional().describe("Maximum acceptable bridge fee in native token (optional)"),
1659
- preferredNetwork: z12.string().optional().describe("Preferred network for payment (optional)")
1655
+ import { resolveAgent } from "@t402/erc8004";
1656
+
1657
+ // src/tools/erc8004Shared.ts
1658
+ import { createPublicClient as createPublicClient6, http as http6 } from "viem";
1659
+ import * as chains6 from "viem/chains";
1660
+ import { parseAgentRegistry } from "@t402/erc8004";
1661
+ var CHAIN_ID_TO_VIEM = {
1662
+ 1: chains6.mainnet,
1663
+ 8453: chains6.base,
1664
+ 42161: chains6.arbitrum,
1665
+ 10: chains6.optimism,
1666
+ 137: chains6.polygon,
1667
+ 43114: chains6.avalanche,
1668
+ 57073: chains6.ink,
1669
+ 80094: chains6.berachain,
1670
+ 130: chains6.unichain
1671
+ };
1672
+ var CHAIN_ID_TO_NETWORK = Object.fromEntries(
1673
+ Object.entries(CHAIN_IDS).map(([name, id]) => [id, name])
1674
+ );
1675
+ function createErc8004Client(agentRegistry, rpcUrls) {
1676
+ const parsed = parseAgentRegistry(agentRegistry);
1677
+ const chainId = parseInt(parsed.chainId, 10);
1678
+ const viemChain = CHAIN_ID_TO_VIEM[chainId];
1679
+ if (!viemChain) {
1680
+ throw new Error(
1681
+ `Unsupported chain ID ${chainId} from registry ${agentRegistry}. Supported: ${Object.keys(CHAIN_ID_TO_VIEM).join(", ")}`
1682
+ );
1683
+ }
1684
+ const network = CHAIN_ID_TO_NETWORK[chainId];
1685
+ const rpcUrl = network && rpcUrls?.[network] || network && DEFAULT_RPC_URLS[network];
1686
+ const client = createPublicClient6({
1687
+ chain: viemChain,
1688
+ transport: http6(rpcUrl)
1689
+ });
1690
+ return { client, registryAddress: parsed.address };
1691
+ }
1692
+
1693
+ // src/tools/erc8004ResolveAgent.ts
1694
+ var erc8004ResolveAgentInputSchema = z12.object({
1695
+ agentId: z12.number().int().nonnegative().describe("Agent NFT token ID on the Identity Registry"),
1696
+ agentRegistry: z12.string().regex(/^eip155:\d+:0x[a-fA-F0-9]+$/).describe('Agent registry identifier (e.g., "eip155:8453:0xRegistryAddress")')
1697
+ });
1698
+ async function executeErc8004ResolveAgent(input, rpcUrls) {
1699
+ const { client, registryAddress } = createErc8004Client(input.agentRegistry, rpcUrls);
1700
+ return resolveAgent(
1701
+ client,
1702
+ registryAddress,
1703
+ BigInt(input.agentId),
1704
+ input.agentRegistry
1705
+ );
1706
+ }
1707
+ function formatErc8004ResolveAgentResult(agent) {
1708
+ const lines = [
1709
+ `## Agent Identity (ID: ${agent.agentId})`,
1710
+ "",
1711
+ `**Registry:** ${agent.registry.id}`,
1712
+ `**Wallet:** \`${agent.agentWallet}\``,
1713
+ `**Owner:** \`${agent.owner}\``,
1714
+ `**Registration URI:** ${agent.agentURI}`,
1715
+ ""
1716
+ ];
1717
+ if (agent.registration) {
1718
+ const reg = agent.registration;
1719
+ lines.push("### Registration File");
1720
+ if (reg.name) lines.push(`- **Name:** ${reg.name}`);
1721
+ if (reg.description) lines.push(`- **Description:** ${reg.description}`);
1722
+ if (reg.image) lines.push(`- **Image:** ${reg.image}`);
1723
+ if (reg.x402Support !== void 0) lines.push(`- **x402 Support:** ${reg.x402Support}`);
1724
+ if (reg.services?.length) {
1725
+ lines.push("");
1726
+ lines.push("### Services");
1727
+ for (const svc of reg.services) {
1728
+ lines.push(`- **${svc.name}:** ${svc.endpoint}`);
1729
+ }
1730
+ }
1731
+ }
1732
+ return lines.join("\n");
1733
+ }
1734
+
1735
+ // src/tools/erc8004CheckReputation.ts
1736
+ import { z as z13 } from "zod";
1737
+ import { getReputationSummary } from "@t402/erc8004";
1738
+ var erc8004CheckReputationInputSchema = z13.object({
1739
+ agentId: z13.number().int().nonnegative().describe("Agent NFT token ID"),
1740
+ agentRegistry: z13.string().regex(/^eip155:\d+:0x[a-fA-F0-9]+$/).describe('Agent registry identifier (e.g., "eip155:8453:0xRegistryAddress")'),
1741
+ reputationRegistry: z13.string().regex(/^0x[a-fA-F0-9]{40}$/).describe("Reputation Registry contract address on the same chain"),
1742
+ trustedReviewers: z13.array(z13.string().regex(/^0x[a-fA-F0-9]{40}$/)).min(1).describe("Addresses whose feedback is trusted (required for Sybil resistance)")
1743
+ });
1744
+ async function executeErc8004CheckReputation(input, rpcUrls) {
1745
+ const { client } = createErc8004Client(input.agentRegistry, rpcUrls);
1746
+ return getReputationSummary(
1747
+ client,
1748
+ input.reputationRegistry,
1749
+ BigInt(input.agentId),
1750
+ input.trustedReviewers
1751
+ );
1752
+ }
1753
+ function formatErc8004CheckReputationResult(summary) {
1754
+ const lines = [
1755
+ `## Agent Reputation (ID: ${summary.agentId})`,
1756
+ "",
1757
+ `| Metric | Value |`,
1758
+ `|--------|-------|`,
1759
+ `| Feedback Count | ${summary.count} |`,
1760
+ `| Raw Score | ${summary.summaryValue} |`,
1761
+ `| Score Decimals | ${summary.summaryValueDecimals} |`,
1762
+ `| **Normalized Score** | **${summary.normalizedScore}/100** |`,
1763
+ ""
1764
+ ];
1765
+ if (summary.normalizedScore >= 80) {
1766
+ lines.push("_High reputation \u2014 trusted agent_");
1767
+ } else if (summary.normalizedScore >= 50) {
1768
+ lines.push("_Moderate reputation_");
1769
+ } else if (summary.count > 0n) {
1770
+ lines.push("_Low reputation \u2014 exercise caution_");
1771
+ } else {
1772
+ lines.push("_No feedback recorded from trusted reviewers_");
1773
+ }
1774
+ return lines.join("\n");
1775
+ }
1776
+
1777
+ // src/tools/erc8004VerifyWallet.ts
1778
+ import { z as z14 } from "zod";
1779
+ import { verifyPayToMatchesAgent } from "@t402/erc8004";
1780
+ var erc8004VerifyWalletInputSchema = z14.object({
1781
+ agentId: z14.number().int().nonnegative().describe("Agent NFT token ID"),
1782
+ agentRegistry: z14.string().regex(/^eip155:\d+:0x[a-fA-F0-9]+$/).describe('Agent registry identifier (e.g., "eip155:8453:0xRegistryAddress")'),
1783
+ walletAddress: z14.string().regex(/^0x[a-fA-F0-9]{40}$/).describe("Wallet address to verify (typically the payTo from PaymentRequirements)")
1784
+ });
1785
+ async function executeErc8004VerifyWallet(input, rpcUrls) {
1786
+ const { client, registryAddress } = createErc8004Client(input.agentRegistry, rpcUrls);
1787
+ const matches = await verifyPayToMatchesAgent(
1788
+ client,
1789
+ registryAddress,
1790
+ BigInt(input.agentId),
1791
+ input.walletAddress
1792
+ );
1793
+ return {
1794
+ matches,
1795
+ agentId: input.agentId,
1796
+ walletAddress: input.walletAddress,
1797
+ registryAddress
1798
+ };
1799
+ }
1800
+ function formatErc8004VerifyWalletResult(result) {
1801
+ const status = result.matches ? "VERIFIED" : "MISMATCH";
1802
+ const icon = result.matches ? "[PASS]" : "[FAIL]";
1803
+ const lines = [
1804
+ `## Wallet Verification: ${icon} ${status}`,
1805
+ "",
1806
+ `| Field | Value |`,
1807
+ `|-------|-------|`,
1808
+ `| Agent ID | ${result.agentId} |`,
1809
+ `| Wallet Address | \`${result.walletAddress}\` |`,
1810
+ `| Registry | \`${result.registryAddress}\` |`,
1811
+ `| **Result** | **${result.matches ? "Address matches on-chain agentWallet" : "Address does NOT match on-chain agentWallet"}** |`
1812
+ ];
1813
+ return lines.join("\n");
1814
+ }
1815
+
1816
+ // src/tools/unified.ts
1817
+ import { z as z15 } from "zod";
1818
+ var smartPayInputSchema = z15.object({
1819
+ url: z15.string().url().describe("URL of the 402-protected resource"),
1820
+ maxBridgeFee: z15.string().regex(/^\d+(\.\d+)?$/).optional().describe("Maximum acceptable bridge fee in native token (optional)"),
1821
+ preferredNetwork: z15.string().optional().describe("Preferred network for payment (optional)")
1660
1822
  });
1661
- var paymentPlanInputSchema = z12.object({
1662
- paymentRequired: z12.object({
1663
- scheme: z12.string().optional(),
1664
- network: z12.string().optional(),
1665
- maxAmountRequired: z12.string().optional(),
1666
- resource: z12.string().optional(),
1667
- description: z12.string().optional(),
1668
- payTo: z12.string().optional(),
1669
- maxDeadline: z12.number().optional()
1823
+ var paymentPlanInputSchema = z15.object({
1824
+ paymentRequired: z15.object({
1825
+ scheme: z15.string().optional(),
1826
+ network: z15.string().optional(),
1827
+ maxAmountRequired: z15.string().optional(),
1828
+ resource: z15.string().optional(),
1829
+ description: z15.string().optional(),
1830
+ payTo: z15.string().optional(),
1831
+ maxDeadline: z15.number().optional()
1670
1832
  }).passthrough().describe("The 402 PaymentRequired response")
1671
1833
  });
1672
1834
  var UNIFIED_TOOL_DEFINITIONS = {
@@ -1706,13 +1868,14 @@ var UNIFIED_TOOL_DEFINITIONS = {
1706
1868
  };
1707
1869
  async function executeSmartPay(input, wdk) {
1708
1870
  const steps = [];
1709
- const chains6 = input.preferredNetwork ? [input.preferredNetwork] : ["ethereum", "arbitrum", "base"];
1871
+ const chains7 = input.preferredNetwork ? [input.preferredNetwork] : ["ethereum", "arbitrum", "base"];
1710
1872
  steps.push({
1711
1873
  action: "check_balance",
1712
1874
  status: "success",
1713
- detail: `Checking balances on ${chains6.join(", ")}`
1875
+ detail: `Checking balances on ${chains7.join(", ")}`
1714
1876
  });
1715
- const protocol = await T402Protocol2.create(wdk, { chains: chains6 });
1877
+ const { T402Protocol } = await import("@t402/wdk-protocol");
1878
+ const protocol = await T402Protocol.create(wdk, { chains: chains7 });
1716
1879
  steps.push({
1717
1880
  action: "fetch",
1718
1881
  status: "success",
@@ -2204,6 +2367,81 @@ var WDK_TOOL_DEFINITIONS = {
2204
2367
  }
2205
2368
  }
2206
2369
  };
2370
+ var ERC8004_TOOL_DEFINITIONS = {
2371
+ "erc8004/resolveAgent": {
2372
+ name: "erc8004/resolveAgent",
2373
+ description: "Look up an agent's on-chain ERC-8004 identity. Returns the agent's registered wallet address, owner, registration file (name, description, services), and verification URI. Use this to verify an agent before making a payment.",
2374
+ inputSchema: {
2375
+ type: "object",
2376
+ properties: {
2377
+ agentId: {
2378
+ type: "number",
2379
+ description: "Agent NFT token ID on the Identity Registry"
2380
+ },
2381
+ agentRegistry: {
2382
+ type: "string",
2383
+ pattern: "^eip155:\\d+:0x[a-fA-F0-9]+$",
2384
+ description: 'Agent registry identifier (e.g., "eip155:8453:0xRegistryAddress")'
2385
+ }
2386
+ },
2387
+ required: ["agentId", "agentRegistry"]
2388
+ }
2389
+ },
2390
+ "erc8004/checkReputation": {
2391
+ name: "erc8004/checkReputation",
2392
+ description: "Query an agent's reputation score from the on-chain Reputation Registry. Returns a normalized 0-100 score based on feedback from trusted reviewers. Requires explicit trusted reviewer addresses for Sybil resistance.",
2393
+ inputSchema: {
2394
+ type: "object",
2395
+ properties: {
2396
+ agentId: {
2397
+ type: "number",
2398
+ description: "Agent NFT token ID"
2399
+ },
2400
+ agentRegistry: {
2401
+ type: "string",
2402
+ pattern: "^eip155:\\d+:0x[a-fA-F0-9]+$",
2403
+ description: 'Agent registry identifier (e.g., "eip155:8453:0xRegistryAddress")'
2404
+ },
2405
+ reputationRegistry: {
2406
+ type: "string",
2407
+ pattern: "^0x[a-fA-F0-9]{40}$",
2408
+ description: "Reputation Registry contract address on the same chain"
2409
+ },
2410
+ trustedReviewers: {
2411
+ type: "array",
2412
+ items: { type: "string", pattern: "^0x[a-fA-F0-9]{40}$" },
2413
+ minItems: 1,
2414
+ description: "Addresses whose feedback is trusted (required for Sybil resistance)"
2415
+ }
2416
+ },
2417
+ required: ["agentId", "agentRegistry", "reputationRegistry", "trustedReviewers"]
2418
+ }
2419
+ },
2420
+ "erc8004/verifyWallet": {
2421
+ name: "erc8004/verifyWallet",
2422
+ description: "Verify that a payment address (payTo) matches an agent's on-chain registered wallet. Use this before paying to confirm the recipient address is legitimate and owned by the declared agent.",
2423
+ inputSchema: {
2424
+ type: "object",
2425
+ properties: {
2426
+ agentId: {
2427
+ type: "number",
2428
+ description: "Agent NFT token ID"
2429
+ },
2430
+ agentRegistry: {
2431
+ type: "string",
2432
+ pattern: "^eip155:\\d+:0x[a-fA-F0-9]+$",
2433
+ description: 'Agent registry identifier (e.g., "eip155:8453:0xRegistryAddress")'
2434
+ },
2435
+ walletAddress: {
2436
+ type: "string",
2437
+ pattern: "^0x[a-fA-F0-9]{40}$",
2438
+ description: "Wallet address to verify (typically the payTo from payment requirements)"
2439
+ }
2440
+ },
2441
+ required: ["agentId", "agentRegistry", "walletAddress"]
2442
+ }
2443
+ }
2444
+ };
2207
2445
 
2208
2446
  export {
2209
2447
  __publicField,
@@ -2263,6 +2501,15 @@ export {
2263
2501
  TON_BRIDGE_TOOLS,
2264
2502
  executeTonBridgeTool,
2265
2503
  createTonBridgeToolSet,
2504
+ erc8004ResolveAgentInputSchema,
2505
+ executeErc8004ResolveAgent,
2506
+ formatErc8004ResolveAgentResult,
2507
+ erc8004CheckReputationInputSchema,
2508
+ executeErc8004CheckReputation,
2509
+ formatErc8004CheckReputationResult,
2510
+ erc8004VerifyWalletInputSchema,
2511
+ executeErc8004VerifyWallet,
2512
+ formatErc8004VerifyWalletResult,
2266
2513
  smartPayInputSchema,
2267
2514
  paymentPlanInputSchema,
2268
2515
  UNIFIED_TOOL_DEFINITIONS,
@@ -2273,6 +2520,7 @@ export {
2273
2520
  formatSmartPayResult,
2274
2521
  formatPaymentPlanResult,
2275
2522
  TOOL_DEFINITIONS,
2276
- WDK_TOOL_DEFINITIONS
2523
+ WDK_TOOL_DEFINITIONS,
2524
+ ERC8004_TOOL_DEFINITIONS
2277
2525
  };
2278
- //# sourceMappingURL=chunk-RDQ7AMR4.mjs.map
2526
+ //# sourceMappingURL=chunk-B7X7H6NV.mjs.map