agentcash 0.9.0 → 0.9.1

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.
Files changed (35) hide show
  1. package/dist/cjs/run-server.cjs +8 -4
  2. package/dist/esm/{chunk-VC5CLABO.js → chunk-4Q7QFS3O.js} +2 -2
  3. package/dist/esm/{chunk-EW25ERKW.js → chunk-P7WFI336.js} +2 -2
  4. package/dist/esm/chunk-SF3JWCTJ.js +7 -0
  5. package/dist/esm/{chunk-6RYCEJR7.js → chunk-UVO3ZZGC.js} +2 -2
  6. package/dist/esm/{chunk-YC3QM3JN.js → chunk-VBQYLC7F.js} +2 -2
  7. package/dist/esm/{chunk-M7G7WGN7.js → chunk-WROGRZ4L.js} +2 -2
  8. package/dist/esm/{fetch-VUI7TYUI.js → fetch-IQ6WDIU7.js} +4 -4
  9. package/dist/esm/index.js +13 -13
  10. package/dist/esm/{install-NNR5PKP2.js → install-ZGLLK225.js} +3 -3
  11. package/dist/esm/{onboard-ACBXF5EZ.js → onboard-KORBDJEE.js} +5 -5
  12. package/dist/esm/{report-error-4R6Z2DGD.js → report-error-352HDKYW.js} +3 -3
  13. package/dist/esm/{server-7EZORMAF.js → server-45ZQGODV.js} +12 -8
  14. package/dist/esm/server-45ZQGODV.js.map +1 -0
  15. package/dist/esm/{server-ANESRI52.js → server-UAIAMGJS.js} +2 -2
  16. package/dist/esm/{settings-LUYHCU5T.js → settings-NIG3JCWL.js} +3 -3
  17. package/dist/esm/{try-HRKABFHO.js → try-IH77VUTC.js} +3 -3
  18. package/dist/esm/{wallet-DNW6DBSU.js → wallet-RXHBDJED.js} +3 -3
  19. package/package.json +3 -3
  20. package/dist/esm/chunk-JM7J5ZIS.js +0 -7
  21. package/dist/esm/server-7EZORMAF.js.map +0 -1
  22. /package/dist/esm/{chunk-VC5CLABO.js.map → chunk-4Q7QFS3O.js.map} +0 -0
  23. /package/dist/esm/{chunk-EW25ERKW.js.map → chunk-P7WFI336.js.map} +0 -0
  24. /package/dist/esm/{chunk-JM7J5ZIS.js.map → chunk-SF3JWCTJ.js.map} +0 -0
  25. /package/dist/esm/{chunk-6RYCEJR7.js.map → chunk-UVO3ZZGC.js.map} +0 -0
  26. /package/dist/esm/{chunk-YC3QM3JN.js.map → chunk-VBQYLC7F.js.map} +0 -0
  27. /package/dist/esm/{chunk-M7G7WGN7.js.map → chunk-WROGRZ4L.js.map} +0 -0
  28. /package/dist/esm/{fetch-VUI7TYUI.js.map → fetch-IQ6WDIU7.js.map} +0 -0
  29. /package/dist/esm/{install-NNR5PKP2.js.map → install-ZGLLK225.js.map} +0 -0
  30. /package/dist/esm/{onboard-ACBXF5EZ.js.map → onboard-KORBDJEE.js.map} +0 -0
  31. /package/dist/esm/{report-error-4R6Z2DGD.js.map → report-error-352HDKYW.js.map} +0 -0
  32. /package/dist/esm/{server-ANESRI52.js.map → server-UAIAMGJS.js.map} +0 -0
  33. /package/dist/esm/{settings-LUYHCU5T.js.map → settings-NIG3JCWL.js.map} +0 -0
  34. /package/dist/esm/{try-HRKABFHO.js.map → try-IH77VUTC.js.map} +0 -0
  35. /package/dist/esm/{wallet-DNW6DBSU.js.map → wallet-RXHBDJED.js.map} +0 -0
@@ -95225,7 +95225,7 @@ var import_path2 = require("path");
95225
95225
  var import_url = require("url");
95226
95226
  function getVersion() {
95227
95227
  if (true) {
95228
- return "0.9.0";
95228
+ return "0.9.1";
95229
95229
  }
95230
95230
  const __dirname3 = (0, import_path2.dirname)((0, import_url.fileURLToPath)(importMetaUrl));
95231
95231
  const pkg2 = JSON.parse(
@@ -95378,7 +95378,7 @@ var isFetchError = (error48) => {
95378
95378
 
95379
95379
  // src/shared/mpp-enabled.ts
95380
95380
  init_cjs_shims();
95381
- var isMppEnabled = () => "0.9.0".includes("-mpp");
95381
+ var isMppEnabled = () => "0.9.1".includes("-mpp");
95382
95382
 
95383
95383
  // src/operations/fetch-with-payment.ts
95384
95384
  init_cjs_shims();
@@ -121569,10 +121569,12 @@ var registerWalletTools = ({
121569
121569
  description: DESCRIPTIONS.getWalletInfo.mcp,
121570
121570
  outputSchema: external_exports3.object({
121571
121571
  address: external_exports3.string().describe(TOOL_PARAMS.getWalletInfo.output.address),
121572
+ solanaAddress: external_exports3.string().describe(TOOL_PARAMS.getWalletInfo.output.address),
121572
121573
  balance: external_exports3.number().describe(TOOL_PARAMS.getWalletInfo.output.balance),
121573
121574
  chains: external_exports3.array(chainBalanceSchema).describe(TOOL_PARAMS.getWalletInfo.output.chains),
121574
121575
  isNewWallet: external_exports3.boolean().describe(TOOL_PARAMS.getWalletInfo.output.isNewWallet),
121575
121576
  depositLink: external_exports3.string().url().describe(TOOL_PARAMS.getWalletInfo.output.depositLink),
121577
+ solanaDepositLink: external_exports3.string().url().describe(TOOL_PARAMS.getWalletInfo.output.depositLink),
121576
121578
  onboardingCta: external_exports3.object({
121577
121579
  onboardLink: external_exports3.string().url().describe(
121578
121580
  TOOL_PARAMS.getWalletInfo.output.onboardingCtaOnboardLink
@@ -121598,10 +121600,12 @@ var registerWalletTools = ({
121598
121600
  }
121599
121601
  return mcpSuccessStructuredJson({
121600
121602
  address: result.value.address,
121603
+ solanaAddress: result.value.solanaAddress,
121601
121604
  balance: result.value.balance,
121602
- chains: result.value.chains.map((c) => ({ ...c })),
121605
+ chains: result.value.chains,
121603
121606
  isNewWallet: result.value.isNewWallet,
121604
121607
  depositLink: result.value.depositLink,
121608
+ solanaDepositLink: result.value.solanaDepositLink,
121605
121609
  ...result.value.onboardingCta ? {
121606
121610
  onboardingCta: {
121607
121611
  onboardLink: result.value.onboardingCta.onboardLink,
@@ -123026,7 +123030,7 @@ var import_path3 = require("path");
123026
123030
  var import_url2 = require("url");
123027
123031
  function getVersion3() {
123028
123032
  if (true) {
123029
- return "0.9.0";
123033
+ return "0.9.1";
123030
123034
  }
123031
123035
  const __dirname3 = (0, import_path3.dirname)((0, import_url2.fileURLToPath)(importMetaUrl));
123032
123036
  const pkg2 = JSON.parse(
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  MCP_VERSION
3
- } from "./chunk-M7G7WGN7.js";
3
+ } from "./chunk-WROGRZ4L.js";
4
4
  import {
5
5
  getBaseUrl
6
6
  } from "./chunk-OKHBFFZP.js";
@@ -51,4 +51,4 @@ async function submitErrorReport(surface, input, address, dev) {
51
51
  export {
52
52
  submitErrorReport
53
53
  };
54
- //# sourceMappingURL=chunk-VC5CLABO.js.map
54
+ //# sourceMappingURL=chunk-4Q7QFS3O.js.map
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-OKHBFFZP.js";
11
11
  import {
12
12
  isMppEnabled
13
- } from "./chunk-JM7J5ZIS.js";
13
+ } from "./chunk-SF3JWCTJ.js";
14
14
  import {
15
15
  EVM_CONFIGS,
16
16
  SOLANA_CONFIG,
@@ -109,4 +109,4 @@ export {
109
109
  getOnboardingCta,
110
110
  getWalletInfo
111
111
  };
112
- //# sourceMappingURL=chunk-EW25ERKW.js.map
112
+ //# sourceMappingURL=chunk-P7WFI336.js.map
@@ -0,0 +1,7 @@
1
+ // src/shared/mpp-enabled.ts
2
+ var isMppEnabled = () => "0.9.1".includes("-mpp");
3
+
4
+ export {
5
+ isMppEnabled
6
+ };
7
+ //# sourceMappingURL=chunk-SF3JWCTJ.js.map
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-OKHBFFZP.js";
15
15
  import {
16
16
  isMppEnabled
17
- } from "./chunk-JM7J5ZIS.js";
17
+ } from "./chunk-SF3JWCTJ.js";
18
18
  import {
19
19
  networkSchema
20
20
  } from "./chunk-G3AVBW3H.js";
@@ -488,4 +488,4 @@ export {
488
488
  DEFAULT_MAX_AMOUNT,
489
489
  createFetchWithPayment
490
490
  };
491
- //# sourceMappingURL=chunk-6RYCEJR7.js.map
491
+ //# sourceMappingURL=chunk-UVO3ZZGC.js.map
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-RBEVKU3U.js";
7
7
  import {
8
8
  DIST_TAG
9
- } from "./chunk-M7G7WGN7.js";
9
+ } from "./chunk-WROGRZ4L.js";
10
10
  import {
11
11
  log,
12
12
  safeReadFile,
@@ -596,4 +596,4 @@ export {
596
596
  tryAddServer,
597
597
  addServer
598
598
  };
599
- //# sourceMappingURL=chunk-YC3QM3JN.js.map
599
+ //# sourceMappingURL=chunk-VBQYLC7F.js.map
@@ -4,7 +4,7 @@ import { dirname, join } from "path";
4
4
  import { fileURLToPath } from "url";
5
5
  function getVersion() {
6
6
  if (true) {
7
- return "0.9.0";
7
+ return "0.9.1";
8
8
  }
9
9
  const __dirname2 = dirname(fileURLToPath(import.meta.url));
10
10
  const pkg = JSON.parse(
@@ -19,4 +19,4 @@ export {
19
19
  MCP_VERSION,
20
20
  DIST_TAG
21
21
  };
22
- //# sourceMappingURL=chunk-M7G7WGN7.js.map
22
+ //# sourceMappingURL=chunk-WROGRZ4L.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createFetchWithPayment
3
- } from "./chunk-6RYCEJR7.js";
3
+ } from "./chunk-UVO3ZZGC.js";
4
4
  import {
5
5
  MCP_VERSION
6
- } from "./chunk-M7G7WGN7.js";
6
+ } from "./chunk-WROGRZ4L.js";
7
7
  import "./chunk-6FEDQ4HI.js";
8
8
  import "./chunk-RAFN7MFS.js";
9
9
  import "./chunk-OKHBFFZP.js";
10
- import "./chunk-JM7J5ZIS.js";
10
+ import "./chunk-SF3JWCTJ.js";
11
11
  import "./chunk-G3AVBW3H.js";
12
12
  import {
13
13
  getWalletOrExit,
@@ -115,4 +115,4 @@ function extractJsonErrorMessage(body) {
115
115
  export {
116
116
  fetchCommand
117
117
  };
118
- //# sourceMappingURL=fetch-VUI7TYUI.js.map
118
+ //# sourceMappingURL=fetch-IQ6WDIU7.js.map
package/dist/esm/index.js CHANGED
@@ -5,10 +5,10 @@ import {
5
5
  } from "./chunk-O2AS5QAF.js";
6
6
  import {
7
7
  MCP_VERSION
8
- } from "./chunk-M7G7WGN7.js";
8
+ } from "./chunk-WROGRZ4L.js";
9
9
  import {
10
10
  isMppEnabled
11
- } from "./chunk-JM7J5ZIS.js";
11
+ } from "./chunk-SF3JWCTJ.js";
12
12
  import "./chunk-G3AVBW3H.js";
13
13
  import {
14
14
  DESCRIPTIONS,
@@ -98,7 +98,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
98
98
  description: "Maximum amount (USD) to pay per request. Aborts if the endpoint requests more. Defaults to $5."
99
99
  }).epilogue(DESCRIPTIONS.fetch.epilogue),
100
100
  async (args) => {
101
- const { fetchCommand } = await import("./fetch-VUI7TYUI.js");
101
+ const { fetchCommand } = await import("./fetch-IQ6WDIU7.js");
102
102
  await fetchCommand(
103
103
  {
104
104
  ...args,
@@ -189,7 +189,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
189
189
  demandOption: true
190
190
  }),
191
191
  async (args) => {
192
- const { tryCommand } = await import("./try-HRKABFHO.js");
192
+ const { tryCommand } = await import("./try-IH77VUTC.js");
193
193
  await tryCommand({ url: args.url }, args);
194
194
  }
195
195
  ).command(
@@ -280,7 +280,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
280
280
  description: "The invite code to redeem (optional)"
281
281
  }),
282
282
  async (args) => {
283
- const { onboardCommand } = await import("./onboard-ACBXF5EZ.js");
283
+ const { onboardCommand } = await import("./onboard-KORBDJEE.js");
284
284
  await onboardCommand({ code: args.code ?? args.invite }, args);
285
285
  }
286
286
  ).command(
@@ -291,7 +291,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
291
291
  DESCRIPTIONS.getWalletInfo.cli,
292
292
  (yargs3) => yargs3,
293
293
  async (args) => {
294
- const { walletInfoCommand } = await import("./wallet-DNW6DBSU.js");
294
+ const { walletInfoCommand } = await import("./wallet-RXHBDJED.js");
295
295
  await walletInfoCommand({}, args);
296
296
  }
297
297
  ).command(
@@ -303,7 +303,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
303
303
  demandOption: true
304
304
  }),
305
305
  async (args) => {
306
- const { walletRedeemCommand } = await import("./wallet-DNW6DBSU.js");
306
+ const { walletRedeemCommand } = await import("./wallet-RXHBDJED.js");
307
307
  await walletRedeemCommand({ code: args.code }, args);
308
308
  }
309
309
  ).command(
@@ -311,7 +311,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
311
311
  "Get wallet address",
312
312
  (yargs3) => yargs3,
313
313
  async (args) => {
314
- const { walletAddressCommand } = await import("./wallet-DNW6DBSU.js");
314
+ const { walletAddressCommand } = await import("./wallet-RXHBDJED.js");
315
315
  await walletAddressCommand({}, args);
316
316
  }
317
317
  ).demandCommand(1, "You must specify a wallet subcommand").strict(),
@@ -325,7 +325,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
325
325
  "Show current settings",
326
326
  (yargs3) => yargs3,
327
327
  async (args) => {
328
- const { settingsGetCommand } = await import("./settings-LUYHCU5T.js");
328
+ const { settingsGetCommand } = await import("./settings-NIG3JCWL.js");
329
329
  settingsGetCommand({}, args);
330
330
  }
331
331
  ).command(
@@ -341,7 +341,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
341
341
  demandOption: true
342
342
  }),
343
343
  async (args) => {
344
- const { settingsSetCommand } = await import("./settings-LUYHCU5T.js");
344
+ const { settingsSetCommand } = await import("./settings-NIG3JCWL.js");
345
345
  settingsSetCommand({ key: args.key, value: args.value }, args);
346
346
  }
347
347
  ).demandCommand(1, "You must specify a settings subcommand").strict(),
@@ -373,7 +373,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
373
373
  description: "Detailed report with context and repro steps"
374
374
  }),
375
375
  async (args) => {
376
- const { reportErrorCommand } = await import("./report-error-4R6Z2DGD.js");
376
+ const { reportErrorCommand } = await import("./report-error-352HDKYW.js");
377
377
  await reportErrorCommand(
378
378
  {
379
379
  tool: args.tool,
@@ -391,7 +391,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
391
391
  "Start the MCP server (default when no command specified)",
392
392
  (yargs2) => yargs2,
393
393
  async (args) => {
394
- const { serverCommand } = await import("./server-ANESRI52.js");
394
+ const { serverCommand } = await import("./server-UAIAMGJS.js");
395
395
  await serverCommand(args);
396
396
  }
397
397
  ).command(
@@ -404,7 +404,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
404
404
  default: isClaudeCode ? "claude-code" /* ClaudeCode */ : void 0
405
405
  }),
406
406
  async (args) => {
407
- const { installMcpServer } = await import("./install-NNR5PKP2.js");
407
+ const { installMcpServer } = await import("./install-ZGLLK225.js");
408
408
  await installMcpServer(args);
409
409
  }
410
410
  ).command(
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-ST5ITYIM.js";
4
4
  import {
5
5
  addServer
6
- } from "./chunk-YC3QM3JN.js";
6
+ } from "./chunk-VBQYLC7F.js";
7
7
  import {
8
8
  wait
9
9
  } from "./chunk-DZNSJ2BA.js";
@@ -14,7 +14,7 @@ import {
14
14
  Clients,
15
15
  clientMetadata
16
16
  } from "./chunk-RBEVKU3U.js";
17
- import "./chunk-M7G7WGN7.js";
17
+ import "./chunk-WROGRZ4L.js";
18
18
  import "./chunk-6XGAIMNK.js";
19
19
  import {
20
20
  getBalance
@@ -189,4 +189,4 @@ var installMcpServer = async (flags) => {
189
189
  export {
190
190
  installMcpServer
191
191
  };
192
- //# sourceMappingURL=install-NNR5PKP2.js.map
192
+ //# sourceMappingURL=install-ZGLLK225.js.map
@@ -1,24 +1,24 @@
1
1
  import {
2
2
  getPlatformPath,
3
3
  tryAddServer
4
- } from "./chunk-YC3QM3JN.js";
4
+ } from "./chunk-VBQYLC7F.js";
5
5
  import "./chunk-DZNSJ2BA.js";
6
6
  import {
7
7
  redeemInviteCode
8
8
  } from "./chunk-CM6NIM6K.js";
9
9
  import "./chunk-RBEVKU3U.js";
10
- import "./chunk-M7G7WGN7.js";
10
+ import "./chunk-WROGRZ4L.js";
11
11
  import {
12
12
  getOnboardingCta,
13
13
  getWalletInfo
14
- } from "./chunk-EW25ERKW.js";
14
+ } from "./chunk-P7WFI336.js";
15
15
  import "./chunk-6XGAIMNK.js";
16
16
  import "./chunk-RAFN7MFS.js";
17
17
  import {
18
18
  getBaseUrl,
19
19
  getDepositLink
20
20
  } from "./chunk-OKHBFFZP.js";
21
- import "./chunk-JM7J5ZIS.js";
21
+ import "./chunk-SF3JWCTJ.js";
22
22
  import "./chunk-G3AVBW3H.js";
23
23
  import {
24
24
  detect,
@@ -565,4 +565,4 @@ async function onboardCommand(args, flags) {
565
565
  export {
566
566
  onboardCommand
567
567
  };
568
- //# sourceMappingURL=onboard-ACBXF5EZ.js.map
568
+ //# sourceMappingURL=onboard-KORBDJEE.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  submitErrorReport
3
- } from "./chunk-VC5CLABO.js";
4
- import "./chunk-M7G7WGN7.js";
3
+ } from "./chunk-4Q7QFS3O.js";
4
+ import "./chunk-WROGRZ4L.js";
5
5
  import "./chunk-OKHBFFZP.js";
6
6
  import {
7
7
  getWalletOrExit
@@ -60,4 +60,4 @@ async function reportErrorCommand(args, flags) {
60
60
  export {
61
61
  reportErrorCommand
62
62
  };
63
- //# sourceMappingURL=report-error-4R6Z2DGD.js.map
63
+ //# sourceMappingURL=report-error-352HDKYW.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-CM6NIM6K.js";
4
4
  import {
5
5
  submitErrorReport
6
- } from "./chunk-VC5CLABO.js";
6
+ } from "./chunk-4Q7QFS3O.js";
7
7
  import {
8
8
  loadUserOrigins
9
9
  } from "./chunk-O2AS5QAF.js";
@@ -12,10 +12,10 @@ import {
12
12
  createFetchWithPayment,
13
13
  getSettings,
14
14
  setSettings
15
- } from "./chunk-6RYCEJR7.js";
15
+ } from "./chunk-UVO3ZZGC.js";
16
16
  import {
17
17
  MCP_VERSION
18
- } from "./chunk-M7G7WGN7.js";
18
+ } from "./chunk-WROGRZ4L.js";
19
19
  import {
20
20
  createFetchWithAuth
21
21
  } from "./chunk-U2I7LBH4.js";
@@ -25,7 +25,7 @@ import {
25
25
  } from "./chunk-2OX7YBGR.js";
26
26
  import {
27
27
  getWalletInfo
28
- } from "./chunk-EW25ERKW.js";
28
+ } from "./chunk-P7WFI336.js";
29
29
  import "./chunk-6XGAIMNK.js";
30
30
  import {
31
31
  getBalance
@@ -36,7 +36,7 @@ import {
36
36
  } from "./chunk-OKHBFFZP.js";
37
37
  import {
38
38
  isMppEnabled
39
- } from "./chunk-JM7J5ZIS.js";
39
+ } from "./chunk-SF3JWCTJ.js";
40
40
  import "./chunk-G3AVBW3H.js";
41
41
  import {
42
42
  buildRequest,
@@ -418,10 +418,12 @@ var registerWalletTools = ({
418
418
  description: DESCRIPTIONS.getWalletInfo.mcp,
419
419
  outputSchema: z3.object({
420
420
  address: z3.string().describe(TOOL_PARAMS.getWalletInfo.output.address),
421
+ solanaAddress: z3.string().describe(TOOL_PARAMS.getWalletInfo.output.address),
421
422
  balance: z3.number().describe(TOOL_PARAMS.getWalletInfo.output.balance),
422
423
  chains: z3.array(chainBalanceSchema).describe(TOOL_PARAMS.getWalletInfo.output.chains),
423
424
  isNewWallet: z3.boolean().describe(TOOL_PARAMS.getWalletInfo.output.isNewWallet),
424
425
  depositLink: z3.string().url().describe(TOOL_PARAMS.getWalletInfo.output.depositLink),
426
+ solanaDepositLink: z3.string().url().describe(TOOL_PARAMS.getWalletInfo.output.depositLink),
425
427
  onboardingCta: z3.object({
426
428
  onboardLink: z3.string().url().describe(
427
429
  TOOL_PARAMS.getWalletInfo.output.onboardingCtaOnboardLink
@@ -447,10 +449,12 @@ var registerWalletTools = ({
447
449
  }
448
450
  return mcpSuccessStructuredJson({
449
451
  address: result.value.address,
452
+ solanaAddress: result.value.solanaAddress,
450
453
  balance: result.value.balance,
451
- chains: result.value.chains.map((c) => ({ ...c })),
454
+ chains: result.value.chains,
452
455
  isNewWallet: result.value.isNewWallet,
453
456
  depositLink: result.value.depositLink,
457
+ solanaDepositLink: result.value.solanaDepositLink,
454
458
  ...result.value.onboardingCta ? {
455
459
  onboardingCta: {
456
460
  onboardLink: result.value.onboardingCta.onboardLink,
@@ -789,7 +793,7 @@ import { dirname, join } from "path";
789
793
  import { fileURLToPath } from "url";
790
794
  function getVersion() {
791
795
  if (true) {
792
- return "0.9.0";
796
+ return "0.9.1";
793
797
  }
794
798
  const __dirname2 = dirname(fileURLToPath(import.meta.url));
795
799
  const pkg = JSON.parse(
@@ -870,4 +874,4 @@ var startServer = async (flags) => {
870
874
  export {
871
875
  startServer
872
876
  };
873
- //# sourceMappingURL=server-7EZORMAF.js.map
877
+ //# sourceMappingURL=server-45ZQGODV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/server/index.ts","../../src/server/tools/fetch.ts","../../src/server/tools/response/lib.ts","../../src/server/tools/response/error.ts","../../src/server/tools/response/success.ts","../../src/server/tools/response/safe-handler.ts","../../src/server/tools/lib/check-balance.ts","../../src/server/tools/auth-fetch.ts","../../src/server/tools/wallet.ts","../../src/server/tools/check-endpoint.ts","../../src/server/tools/redeem-invite.ts","../../src/server/tools/telemetry.ts","../../src/server/tools/discover-resources.ts","../../src/server/tools/settings.ts","../../src/server/lib/version.ts"],"sourcesContent":["import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { randomBytes } from 'crypto';\n\nimport { registerFetchTool } from './tools/fetch';\nimport { registerAuthTools } from './tools/auth-fetch';\nimport { registerWalletTools } from './tools/wallet';\nimport { registerCheckEndpointTool } from './tools/check-endpoint';\nimport { registerRedeemInviteTool } from './tools/redeem-invite';\nimport { registerTelemetryTools } from './tools/telemetry';\nimport { registerDiscoveryTools } from './tools/discover-resources';\nimport { registerSettingsTools } from './tools/settings';\n\nimport { MCP_VERSION } from './lib/version';\n\nimport { log } from '@/shared/log';\nimport { redeemInviteCode } from '@/shared/redeem-invite';\n\nimport type { Command } from '@/types';\nimport { buildServerInstructions } from '@/shared/descriptions';\nimport { loadUserOrigins } from '@/shared/user-origins';\nimport { getWallet } from '@/wallet';\n\nexport const startServer: Command = async flags => {\n log.info('Starting agentcash...');\n\n const { invite } = flags;\n let { sessionId } = flags;\n // Generate a random session ID if not provided\n sessionId ??= randomBytes(16).toString('hex');\n\n const walletResult = await getWallet();\n\n if (walletResult.isErr()) {\n log.error(JSON.stringify(walletResult.error, null, 2));\n console.error(walletResult.error);\n process.exit(1);\n }\n\n const wallets = walletResult.value;\n\n const code = invite ?? process.env.INVITE_CODE;\n\n if (code) {\n await redeemInviteCode({\n code,\n address: wallets.evmAccount.account.address,\n surface: 'startServer',\n });\n }\n\n const serverInstructions = buildServerInstructions(loadUserOrigins());\n\n const server = new McpServer(\n {\n name: 'agentcash',\n title: 'AgentCash',\n version: MCP_VERSION,\n websiteUrl: 'https://agentcash.dev',\n icons: [{ src: 'https://agentcash.dev/favicon.svg' }],\n description: serverInstructions,\n },\n {\n capabilities: {\n resources: {\n subscribe: true,\n listChanged: true,\n },\n prompts: {\n listChanged: true,\n },\n },\n instructions: serverInstructions,\n }\n );\n\n const props = {\n server,\n wallets,\n flags,\n sessionId,\n };\n\n registerFetchTool(props);\n registerAuthTools(props);\n registerWalletTools(props);\n registerCheckEndpointTool(props);\n registerRedeemInviteTool(props);\n registerDiscoveryTools(server);\n registerTelemetryTools(props);\n registerSettingsTools(props);\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n\n const shutdown = async () => {\n log.info('Shutting down...');\n await server.close();\n process.exit(0);\n };\n\n process.on('SIGINT', () => void shutdown());\n process.on('SIGTERM', () => void shutdown());\n};\n","import { z } from 'zod';\n\nimport type { Address } from 'viem';\n\nimport { MCP_VERSION } from '@/shared/version';\nimport {\n DEFAULT_USER_FETCH_TIMEOUT,\n safeParseResponse,\n} from '@/shared/neverthrow/fetch';\nimport { isMppEnabled } from '@/shared/mpp-enabled';\nimport {\n createFetchWithPayment,\n type BeforePaymentHook,\n} from '@/operations/fetch-with-payment';\n\nimport {\n mcpError,\n mcpErrorFetch,\n mcpSuccessResponse,\n safeHandler,\n} from './response';\nimport { requestSchema, buildRequest } from './lib/request';\nimport { checkBalance } from './lib/check-balance';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\nimport type { JsonObject } from '@/shared/neverthrow/json/types';\nimport { Network } from '@agentcash/networks';\n\nconst toolName = 'fetch';\n\nconst paymentMethodEnum = isMppEnabled()\n ? z.enum(['x402', 'mpp'])\n : z.enum(['x402']);\n\nconst fetchInputSchema = requestSchema.extend({\n paymentMethod: paymentMethodEnum\n .optional()\n .describe(TOOL_PARAMS.fetch.paymentMethod),\n paymentNetwork: z.enum([Network.BASE, Network.SOLANA]).optional(),\n maxAmount: z\n .number()\n .positive()\n .optional()\n .describe(TOOL_PARAMS.fetch.maxAmount),\n});\n\nexport const registerFetchTool: RegisterTools = ({\n server,\n wallets,\n flags,\n sessionId,\n}) => {\n server.registerTool(\n toolName,\n {\n title: 'Fetch',\n description: DESCRIPTIONS.fetch.mcp,\n inputSchema: fetchInputSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async input => {\n // Balance check hook — throws to abort\n const beforePayment: BeforePaymentHook = async ctx => {\n if (ctx.protocol === 'x402') {\n await checkBalance({\n surface: toolName,\n server,\n input:\n ctx.network === Network.SOLANA\n ? {\n address: wallets.svmAccount.account.address,\n network: Network.SOLANA,\n }\n : {\n address: wallets.evmAccount.account.address,\n network: Network.BASE,\n },\n amountNeeded: ctx.amount,\n message: balance =>\n `This request costs ${ctx.amount} USDC. Your current balance is ${balance} USDC.`,\n flags,\n });\n } else if (isMppEnabled()) {\n await checkBalance({\n surface: toolName,\n server,\n input: {\n address: wallets.evmAccount.account.address,\n network: Network.TEMPO,\n tokenAddress: ctx.currency as Address,\n },\n flags,\n amountNeeded: ctx.amount,\n message: balance =>\n `This request costs ${ctx.amount} tokens. Your current Tempo balance is ${balance}.`,\n });\n }\n };\n\n const provider = flags.provider ?? `agentcash@${MCP_VERSION}`;\n\n const request = buildRequest({\n input,\n wallets,\n sessionId,\n provider,\n });\n\n const fetchResult = await createFetchWithPayment({\n surface: toolName,\n wallets,\n paymentMethod: input.paymentMethod,\n paymentNetwork: input.paymentNetwork,\n flags,\n beforePayment,\n timeout: input.timeout ?? DEFAULT_USER_FETCH_TIMEOUT,\n maxAmount: input.maxAmount,\n })(request);\n\n if (fetchResult.isErr()) {\n return mcpError(fetchResult);\n }\n\n const { response, paymentInfo } = fetchResult.value;\n\n if (!response.ok) {\n return mcpErrorFetch(toolName, response);\n }\n\n const parseResponseResult = await safeParseResponse(toolName, response);\n\n if (parseResponseResult.isErr()) {\n return mcpError(parseResponseResult);\n }\n\n return mcpSuccessResponse(\n parseResponseResult.value,\n paymentInfo as unknown as JsonObject | undefined\n );\n })\n );\n};\n","import type { ParsedResponse } from '@/shared/neverthrow/fetch/types';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\n\nexport const parsedResponseToToolContentPart = (\n data: ParsedResponse\n): CallToolResult['content'][number] => {\n switch (data.type) {\n case 'json':\n return {\n type: 'text' as const,\n text: JSON.stringify(data.data),\n };\n case 'image':\n return {\n type: 'image' as const,\n mimeType: data.mimeType,\n data: Buffer.from(data.data).toString('base64'),\n };\n case 'audio':\n return {\n type: 'audio' as const,\n mimeType: data.mimeType,\n data: Buffer.from(data.data).toString('base64'),\n };\n case 'text':\n return { type: 'text' as const, text: data.data };\n default:\n return {\n type: 'text' as const,\n text: `Unsupported response type: ${data.type}`,\n };\n }\n};\n","import { safeStringifyJson } from '@/shared/neverthrow/json';\n\nimport { parsedResponseToToolContentPart } from './lib';\nimport {\n fetchHttpErr,\n isFetchError,\n safeParseResponse,\n} from '@/shared/neverthrow/fetch';\n\nimport type { JsonObject } from '@/shared/neverthrow/json/types';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport type { BaseError, Err } from '@agentcash/neverthrow/types';\nimport type { BaseX402Error } from '@/shared/protocols/x402/types';\nimport type { BaseMppError } from '@/shared/protocols/mpp/types';\nimport type { BaseFetchError } from '@/shared/neverthrow/fetch/types';\n\nconst buildMcpError = (\n content: CallToolResult['content'],\n options?: { isError?: boolean }\n): CallToolResult => {\n return {\n content,\n // Default: omit isError so siblings survive parallel calls.\n // Tools with outputSchema MUST pass isError: true so the SDK\n // skips output validation on error paths.\n ...(options?.isError ? { isError: true as const } : {}),\n };\n};\n\nexport const mcpErrorJson = (\n error: JsonObject,\n options?: { isError?: boolean }\n): CallToolResult => {\n return safeStringifyJson('mcp-error-json', error).match(\n success =>\n buildMcpError([{ type: 'text' as const, text: success }], options),\n error =>\n buildMcpError(\n [{ type: 'text' as const, text: JSON.stringify(error, null, 2) }],\n options\n )\n );\n};\n\nexport const mcpError = async (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n err: Err<any, BaseX402Error | BaseMppError | BaseFetchError | BaseError>,\n options?: { isError?: boolean }\n) => {\n const { error } = err;\n if (isFetchError(error)) {\n switch (error.cause) {\n case 'network':\n case 'parse':\n return mcpErrorJson({ ...error }, options);\n case 'http':\n const { response, ...rest } = error;\n const parseResponseResult = await safeParseResponse(\n 'mcp-error-fetch-parse-response',\n response\n );\n const httpContent: CallToolResult['content'] = [\n { type: 'text' as const, text: JSON.stringify(rest, null, 2) },\n ...parseResponseResult.match(\n success => [parsedResponseToToolContentPart(success)],\n () => []\n ),\n ];\n return buildMcpError(httpContent, options);\n }\n }\n return mcpErrorJson({ ...error }, options);\n};\n\nexport const mcpErrorFetch = async (surface: string, response: Response) => {\n return mcpError(fetchHttpErr(surface, response));\n};\n","import { safeStringifyJson } from '@/shared/neverthrow/json';\n\nimport { mcpErrorJson } from './error';\n\nimport type { JsonObject } from '@/shared/neverthrow/json/types';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport type { ParsedResponse } from '@/shared/neverthrow/fetch/types';\nimport { parsedResponseToToolContentPart } from './lib';\n\nconst buildMcpSuccess = (\n content: CallToolResult['content']\n): CallToolResult => {\n return {\n content,\n };\n};\n\nexport const mcpSuccessJson = (data: JsonObject): CallToolResult => {\n return safeStringifyJson('mcp-success-text', data).match(\n success => buildMcpSuccess([{ type: 'text' as const, text: success }]),\n error => mcpErrorJson(error)\n );\n};\n\nexport const mcpSuccessStructuredJson = (data: JsonObject): CallToolResult => {\n return safeStringifyJson('mcp-success-structured', data).match(\n success => ({\n content: [{ type: 'text' as const, text: success }],\n structuredContent: data,\n }),\n error => mcpErrorJson(error)\n );\n};\n\nexport const mcpSuccessResponse = (\n data: ParsedResponse,\n extra?: JsonObject\n): CallToolResult => {\n const parsedExtra = extra\n ? safeStringifyJson('mcp-success-extra', extra).match(\n success => success,\n () => undefined\n )\n : undefined;\n\n return buildMcpSuccess([\n parsedResponseToToolContentPart(data),\n ...(parsedExtra ? [{ type: 'text' as const, text: parsedExtra }] : []),\n ]);\n};\n","import { log } from '@/shared/log';\nimport { mcpErrorJson } from './error';\n\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\n\n/**\n * Wraps an MCP tool handler so uncaught exceptions never propagate.\n * Returns error info as normal content (isError omitted) for any unhandled throw.\n *\n * This prevents sibling parallel tool calls from failing when one\n * tool encounters an unexpected error.\n */\nexport function safeHandler<T>(\n handler: (input: T) => Promise<CallToolResult>\n): (input: T) => Promise<CallToolResult> {\n return async (input: T) => {\n // eslint-disable-next-line no-restricted-syntax -- intentional last-resort catch to prevent sibling tool call failures\n try {\n return await handler(input);\n } catch (e) {\n log.error('Unhandled tool error', e);\n return mcpErrorJson({\n error: e instanceof Error ? e.message : String(e),\n cause: 'unhandled_exception',\n });\n }\n };\n}\n","import { getBalance } from '@/shared/balance';\nimport { getDepositLink, openDepositLink } from '@/shared/utils';\nimport { log } from '@/shared/log';\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { GlobalFlags } from '@/types';\nimport type { GetBalanceInput } from '@agentcash/balance';\n\ninterface CheckBalanceProps {\n server: McpServer;\n amountNeeded: number;\n message: (balance: number) => string;\n flags: GlobalFlags;\n surface: string;\n input: GetBalanceInput;\n}\n\nexport const checkBalance = async ({\n server,\n input,\n amountNeeded,\n message,\n flags,\n surface,\n}: CheckBalanceProps) => {\n const balanceResult = await getBalance(surface, input, flags);\n\n if (balanceResult.isErr()) {\n log.error(JSON.stringify(balanceResult.error, null, 2));\n return;\n }\n\n const balance = balanceResult.value;\n\n if (balance.balance < amountNeeded) {\n const capabilities = server.server.getClientCapabilities();\n if (!capabilities?.elicitation) {\n throw new Error(\n `${message(balance.balance)}\\n\\nYou can deposit USDC at ${getDepositLink(input.address, flags, input.network)}`\n );\n }\n\n const result = await server.server.elicitInput({\n mode: 'form',\n message: message(balance.balance),\n requestedSchema: {\n type: 'object',\n properties: {},\n },\n });\n\n if (result.action === 'accept') {\n await openDepositLink(input.address, flags, input.network);\n }\n }\n\n return balance.balance;\n};\n","import {\n DEFAULT_USER_FETCH_TIMEOUT,\n safeParseResponse,\n} from '@/shared/neverthrow/fetch';\nimport { createFetchWithAuth } from '@/operations/fetch-with-auth';\n\nimport {\n mcpError,\n mcpSuccessJson,\n mcpSuccessResponse,\n mcpErrorFetch,\n safeHandler,\n} from './response';\n\nimport { requestSchema, buildRequest } from './lib/request';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\nimport { Network } from '@agentcash/networks';\nimport z from 'zod';\n\nconst toolName = 'fetch_with_auth';\n\nexport const registerAuthTools: RegisterTools = ({\n server,\n wallets,\n sessionId,\n}) => {\n server.registerTool(\n toolName,\n {\n title: 'Fetch with Authentication',\n description: DESCRIPTIONS.fetchWithAuth.mcp,\n inputSchema: requestSchema.extend({\n paymentNetwork: z.enum([Network.BASE, Network.SOLANA]).optional(),\n }),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async input => {\n const result = await createFetchWithAuth({\n surface: toolName,\n wallets,\n timeout: input.timeout ?? DEFAULT_USER_FETCH_TIMEOUT,\n paymentNetwork: input.paymentNetwork,\n })(\n buildRequest({\n input,\n wallets,\n sessionId,\n })\n );\n\n if (result.isErr()) {\n return mcpError(result);\n }\n\n const value = result.value;\n\n if (value.outcome === 'no_siwx_extension') {\n return mcpSuccessJson({\n error: 'Endpoint returned 402 but no sign-in-with-x extension found',\n statusCode: 402,\n hint: 'This endpoint may require payment instead of authentication. Use execute_call for paid requests.',\n });\n }\n\n const { response } = value;\n\n if (!response.ok) {\n return mcpErrorFetch(toolName, response);\n }\n\n const parseResponseResult = await safeParseResponse(toolName, response);\n\n if (parseResponseResult.isErr()) {\n return mcpError(parseResponseResult);\n }\n\n return mcpSuccessResponse(parseResponseResult.value);\n })\n );\n};\n","import { z } from 'zod';\n\nimport { getWalletInfo } from '@/operations/wallet-info';\n\nimport { mcpSuccessStructuredJson, mcpError } from './response';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst chainBalanceSchema = z.object({\n chain: z.string().describe(TOOL_PARAMS.getWalletInfo.output.chain),\n balance: z.number().describe(TOOL_PARAMS.getWalletInfo.output.chainBalance),\n});\n\nexport const registerWalletTools: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n 'get_wallet_info',\n {\n title: 'Get Wallet Info',\n description: DESCRIPTIONS.getWalletInfo.mcp,\n outputSchema: z.object({\n address: z.string().describe(TOOL_PARAMS.getWalletInfo.output.address),\n solanaAddress: z\n .string()\n .describe(TOOL_PARAMS.getWalletInfo.output.address),\n balance: z.number().describe(TOOL_PARAMS.getWalletInfo.output.balance),\n chains: z\n .array(chainBalanceSchema)\n .describe(TOOL_PARAMS.getWalletInfo.output.chains),\n isNewWallet: z\n .boolean()\n .describe(TOOL_PARAMS.getWalletInfo.output.isNewWallet),\n depositLink: z\n .string()\n .url()\n .describe(TOOL_PARAMS.getWalletInfo.output.depositLink),\n solanaDepositLink: z\n .string()\n .url()\n .describe(TOOL_PARAMS.getWalletInfo.output.depositLink),\n onboardingCta: z\n .object({\n onboardLink: z\n .string()\n .url()\n .describe(\n TOOL_PARAMS.getWalletInfo.output.onboardingCtaOnboardLink\n ),\n depositLink: z\n .string()\n .url()\n .describe(\n TOOL_PARAMS.getWalletInfo.output.onboardingCtaDepositLink\n ),\n message: z\n .string()\n .describe(TOOL_PARAMS.getWalletInfo.output.onboardingCtaMessage),\n })\n .optional()\n .describe(TOOL_PARAMS.getWalletInfo.output.onboardingCta),\n message: z\n .string()\n .optional()\n .describe(TOOL_PARAMS.getWalletInfo.output.message),\n }),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async () => {\n const result = await getWalletInfo('get_wallet_info', wallets, flags);\n\n if (result.isErr()) {\n return mcpError(result, { isError: true });\n }\n\n return mcpSuccessStructuredJson({\n address: result.value.address,\n solanaAddress: result.value.solanaAddress,\n balance: result.value.balance,\n chains: result.value.chains,\n isNewWallet: result.value.isNewWallet,\n depositLink: result.value.depositLink,\n solanaDepositLink: result.value.solanaDepositLink,\n ...(result.value.onboardingCta\n ? {\n onboardingCta: {\n onboardLink: result.value.onboardingCta.onboardLink,\n depositLink: result.value.onboardingCta.depositLink,\n message: result.value.onboardingCta.message,\n },\n }\n : {}),\n ...(result.value.message ? { message: result.value.message } : {}),\n });\n }\n );\n};\n","import z from 'zod';\n\nimport { mcpSuccessJson, safeHandler } from './response';\n\nimport { log } from '@/shared/log';\nimport { toJsonObject } from '@/shared/neverthrow/json';\nimport { checkEndpoint } from '@/operations/check-endpoint';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst toolName = 'check_endpoint_schema';\n\nexport const registerCheckEndpointTool: RegisterTools = ({\n server,\n wallets,\n sessionId,\n}) => {\n server.registerTool(\n toolName,\n {\n title: 'Check Endpoint Schema',\n description: DESCRIPTIONS.checkEndpointSchema.mcp,\n inputSchema: z.object({\n url: z.string().describe(TOOL_PARAMS.checkEndpointSchema.url),\n method: z\n .enum(['GET', 'POST', 'PUT', 'DELETE', 'PATCH'])\n .optional()\n .describe(TOOL_PARAMS.checkEndpointSchema.method),\n sample_input_body: z\n .record(z.string(), z.unknown())\n .optional()\n .describe(TOOL_PARAMS.checkEndpointSchema.sampleInputBody),\n headers: z\n .record(z.string(), z.string())\n .optional()\n .describe(TOOL_PARAMS.checkEndpointSchema.headers)\n .default({}),\n }),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async input => {\n log.info('Querying endpoint', {\n url: input.url,\n method: input.method,\n hasSampleInputBody: !!input.sample_input_body,\n });\n\n const result = await checkEndpoint(\n toolName,\n input.url,\n input.method ? [input.method] : undefined,\n input.sample_input_body,\n {\n ...input.headers,\n 'X-Wallet-Address': wallets.evmAccount.account.address,\n ...(sessionId ? { 'X-Session-ID': sessionId } : {}),\n }\n );\n\n if (!result.found) {\n log.error('[checkEndpoint] failed', {\n surface: toolName,\n url: input.url,\n cause: result.cause,\n message: result.message,\n });\n return mcpSuccessJson({\n message: 'No endpoint schema found for this URL.',\n url: input.url,\n });\n }\n\n if (result.advisories.length === 0) {\n return mcpSuccessJson({\n message: 'No endpoint schema found for this URL.',\n url: input.url,\n });\n }\n\n const results = result.advisories.map(a => ({\n ...a,\n requiresPayment: a.authMode === 'paid' || a.authMode === 'apiKey+paid',\n }));\n\n return mcpSuccessJson(toJsonObject({ url: input.url, results }));\n })\n );\n};\n","import z from 'zod';\nimport { mcpError, mcpSuccessStructuredJson } from './response';\n\nimport { redeemInviteCode } from '@/shared/redeem-invite';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nexport const registerRedeemInviteTool: RegisterTools = ({\n server,\n wallets,\n}) => {\n server.registerTool(\n 'redeem_invite',\n {\n title: 'Redeem Invite',\n description: DESCRIPTIONS.redeemInvite.mcp,\n inputSchema: z.object({\n code: z.string().min(1).describe(TOOL_PARAMS.redeemInvite.code),\n }),\n outputSchema: z.object({\n redeemed: z.literal(true),\n amount: z.string().describe(TOOL_PARAMS.redeemInvite.output.amount),\n txHash: z.string().describe(TOOL_PARAMS.redeemInvite.output.txHash),\n }),\n annotations: {\n readOnlyHint: false, // Modifies wallet balance\n destructiveHint: false, // Additive (adds funds), not destructive\n idempotentHint: false, // Same code can't be redeemed twice - second attempt fails\n openWorldHint: true,\n },\n },\n async ({ code }) => {\n const result = await redeemInviteCode({\n code,\n address: wallets.evmAccount.account.address,\n surface: 'redeem_invite',\n dev: false,\n });\n\n if (result.isErr()) {\n return mcpError(result, { isError: true });\n }\n\n const { amount, txHash } = result.value;\n\n return mcpSuccessStructuredJson({\n redeemed: true,\n amount: `${amount} USDC`,\n txHash,\n });\n }\n );\n};\n","import z from 'zod';\n\nimport { log } from '@/shared/log';\nimport { submitErrorReport } from '@/operations/report-error';\nimport { mcpError, mcpSuccessStructuredJson } from './response';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst toolName = 'report_error';\n\nexport const registerTelemetryTools: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n title: 'Report Error',\n description: DESCRIPTIONS.reportError.mcp,\n inputSchema: z.object({\n tool: z.string().describe(TOOL_PARAMS.reportError.tool),\n resource: z\n .string()\n .optional()\n .describe(TOOL_PARAMS.reportError.resource),\n summary: z.string().describe(TOOL_PARAMS.reportError.summary),\n errorMessage: z.string().describe(TOOL_PARAMS.reportError.errorMessage),\n stack: z.string().optional().describe(TOOL_PARAMS.reportError.stack),\n fullReport: z\n .string()\n .optional()\n .describe(TOOL_PARAMS.reportError.fullReport),\n }),\n outputSchema: z.object({\n submitted: z.literal(true),\n reportId: z.string().describe(TOOL_PARAMS.reportError.output.reportId),\n message: z.string().describe(TOOL_PARAMS.reportError.output.message),\n }),\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async input => {\n log.info('Submitting error report', {\n tool: input.tool,\n resource: input.resource,\n summary: input.summary,\n });\n\n const result = await submitErrorReport(\n toolName,\n {\n tool: input.tool,\n summary: input.summary,\n errorMessage: input.errorMessage,\n resource: input.resource,\n stack: input.stack,\n fullReport: input.fullReport,\n },\n wallets.evmAccount.account.address,\n flags.dev\n );\n\n if (result.isErr()) {\n log.error('Failed to submit error report', result.error);\n return mcpError(result, { isError: true });\n }\n\n log.info('Error report submitted successfully', {\n reportId: result.value.reportId,\n });\n\n return mcpSuccessStructuredJson({\n submitted: result.value.submitted,\n reportId: result.value.reportId,\n message: result.value.message,\n });\n }\n );\n};\n","import { z } from 'zod';\n\nimport { resultFromPromise } from '@agentcash/neverthrow';\n\nimport { log } from '@/shared/log';\nimport { discoverResources } from '@/operations/discover';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport {\n mcpError,\n mcpErrorJson,\n mcpSuccessJson,\n safeHandler,\n} from './response';\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { JsonObject } from '@/shared/neverthrow/json/types';\n\nconst toolName = 'discover_api_endpoints';\nconst OPENAPI_TRIED_PATHS = '/openapi.json, /.well-known/x402';\n\nexport function registerDiscoveryTools(server: McpServer): void {\n server.registerTool(\n toolName,\n {\n title: 'Discover API Endpoints',\n description: DESCRIPTIONS.discoverApiEndpoints.mcp,\n inputSchema: z.object({\n url: z.string().describe(TOOL_PARAMS.discoverApiEndpoints.url),\n include_guidance: z\n .boolean()\n .optional()\n .describe(TOOL_PARAMS.discoverApiEndpoints.includeGuidance),\n }),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async ({ url, include_guidance }) => {\n if (!URL.canParse(url)) {\n return mcpErrorJson({\n error: 'Invalid URL',\n url,\n hint: 'Provide a fully-formed URL like https://example.com',\n });\n }\n\n log.info(`Discovering resources for: ${url}`);\n\n const discoverResult = await resultFromPromise(\n 'discover',\n toolName,\n discoverResources(toolName, url, {\n includeGuidance: include_guidance,\n }),\n e => ({\n cause: 'discover' as const,\n message: e instanceof Error ? e.message : String(e),\n })\n );\n\n if (discoverResult.isErr()) {\n return mcpError(discoverResult);\n }\n\n const result = discoverResult.value;\n\n if ('endpoints' in result) {\n return mcpSuccessJson({\n found: true,\n origin: result.origin,\n ...(result.info\n ? { info: result.info as unknown as JsonObject }\n : {}),\n guidanceAvailable: result.guidanceAvailable,\n ...(result.guidanceTokens != null\n ? { guidanceTokens: result.guidanceTokens }\n : {}),\n ...(result.guidance ? { guidance: result.guidance } : {}),\n endpoints: result.endpoints.map(\n e => ({ ...e }) as unknown as JsonObject\n ),\n } as JsonObject);\n }\n\n // Discovery failed — surface the real cause\n const origin = URL.canParse(url) ? new URL(url).origin : url;\n\n if (result.cause === 'not_found') {\n return mcpSuccessJson({\n found: false,\n origin,\n error: `No OpenAPI spec found. Tried: ${OPENAPI_TRIED_PATHS}`,\n });\n }\n\n return mcpSuccessJson({\n found: false,\n origin,\n cause: result.cause,\n error:\n result.message ?? `Failed to fetch OpenAPI spec (${result.cause})`,\n hint:\n result.cause === 'timeout'\n ? 'The server may be slow or unreachable. Try again later.'\n : result.cause === 'network'\n ? 'Could not reach the server. Check the network connection and try again.'\n : `The server returned an unparseable response. Tried: ${OPENAPI_TRIED_PATHS}`,\n });\n })\n );\n}\n","import { z } from 'zod';\n\nimport { getSettings, setSettings } from '@/shared/settings';\nimport { DEFAULT_MAX_AMOUNT } from '@/operations/fetch-with-payment';\n\nimport { mcpSuccessStructuredJson, safeHandler } from './response';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nexport const registerSettingsTools: RegisterTools = ({ server }) => {\n server.registerTool(\n 'update_settings',\n {\n title: 'Update Settings',\n description: DESCRIPTIONS.updateSettings.mcp,\n inputSchema: z.object({\n maxAmount: z\n .number()\n .positive()\n .optional()\n .describe(\n `Maximum amount (USD) to pay per fetch request. Current default: $${DEFAULT_MAX_AMOUNT}.`\n ),\n }),\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n safeHandler(input => {\n if (input.maxAmount !== undefined) {\n setSettings({ maxAmount: input.maxAmount });\n }\n\n const settings = getSettings();\n\n return Promise.resolve(\n mcpSuccessStructuredJson({\n maxAmount: settings.maxAmount ?? DEFAULT_MAX_AMOUNT,\n })\n );\n })\n );\n\n server.registerTool(\n 'get_settings',\n {\n title: 'Get Settings',\n description: DESCRIPTIONS.getSettings.mcp,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n safeHandler(() => {\n const settings = getSettings();\n\n return Promise.resolve(\n mcpSuccessStructuredJson({\n maxAmount: settings.maxAmount ?? DEFAULT_MAX_AMOUNT,\n })\n );\n })\n );\n};\n","import { readFileSync } from 'fs';\nimport { dirname, join } from 'path';\nimport { fileURLToPath } from 'url';\n\ndeclare const __MCP_VERSION__: string | undefined;\n\nfunction getVersion(): string {\n if (typeof __MCP_VERSION__ !== 'undefined') {\n return __MCP_VERSION__;\n }\n // Fallback for dev mode (tsx)\n const __dirname = dirname(fileURLToPath(import.meta.url));\n const pkg = JSON.parse(\n readFileSync(join(__dirname, '../../../package.json'), 'utf-8')\n ) as { version: string };\n return pkg.version;\n}\n\nexport const MCP_VERSION = getVersion();\n"],"mappings":"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","names":["error","z","toolName","z","z","z","toolName","z","z","z","z","toolName","z","z","toolName","z","z","z","__dirname","MCP_VERSION","MCP_VERSION"]}
@@ -5,10 +5,10 @@ async function serverCommand(flags) {
5
5
  "MCP server started. If you meant to explore the CLI, run: npx agentcash --help\n"
6
6
  );
7
7
  }
8
- const { startServer } = await import("./server-7EZORMAF.js");
8
+ const { startServer } = await import("./server-45ZQGODV.js");
9
9
  await startServer(flags);
10
10
  }
11
11
  export {
12
12
  serverCommand
13
13
  };
14
- //# sourceMappingURL=server-ANESRI52.js.map
14
+ //# sourceMappingURL=server-UAIAMGJS.js.map
@@ -2,11 +2,11 @@ import {
2
2
  DEFAULT_MAX_AMOUNT,
3
3
  getSettings,
4
4
  setSettings
5
- } from "./chunk-6RYCEJR7.js";
5
+ } from "./chunk-UVO3ZZGC.js";
6
6
  import "./chunk-6FEDQ4HI.js";
7
7
  import "./chunk-RAFN7MFS.js";
8
8
  import "./chunk-OKHBFFZP.js";
9
- import "./chunk-JM7J5ZIS.js";
9
+ import "./chunk-SF3JWCTJ.js";
10
10
  import "./chunk-G3AVBW3H.js";
11
11
  import "./chunk-M6OXSG34.js";
12
12
  import "./chunk-VDBUUHJF.js";
@@ -58,4 +58,4 @@ export {
58
58
  settingsGetCommand,
59
59
  settingsSetCommand
60
60
  };
61
- //# sourceMappingURL=settings-LUYHCU5T.js.map
61
+ //# sourceMappingURL=settings-NIG3JCWL.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  getWalletInfo
3
- } from "./chunk-EW25ERKW.js";
3
+ } from "./chunk-P7WFI336.js";
4
4
  import "./chunk-6XGAIMNK.js";
5
5
  import "./chunk-RAFN7MFS.js";
6
6
  import "./chunk-OKHBFFZP.js";
7
- import "./chunk-JM7J5ZIS.js";
7
+ import "./chunk-SF3JWCTJ.js";
8
8
  import "./chunk-G3AVBW3H.js";
9
9
  import {
10
10
  getWalletOrExit
@@ -102,4 +102,4 @@ async function tryCommand(args, flags) {
102
102
  export {
103
103
  tryCommand
104
104
  };
105
- //# sourceMappingURL=try-HRKABFHO.js.map
105
+ //# sourceMappingURL=try-IH77VUTC.js.map
@@ -3,11 +3,11 @@ import {
3
3
  } from "./chunk-CM6NIM6K.js";
4
4
  import {
5
5
  getWalletInfo
6
- } from "./chunk-EW25ERKW.js";
6
+ } from "./chunk-P7WFI336.js";
7
7
  import "./chunk-6XGAIMNK.js";
8
8
  import "./chunk-RAFN7MFS.js";
9
9
  import "./chunk-OKHBFFZP.js";
10
- import "./chunk-JM7J5ZIS.js";
10
+ import "./chunk-SF3JWCTJ.js";
11
11
  import "./chunk-G3AVBW3H.js";
12
12
  import {
13
13
  getWalletOrExit
@@ -98,4 +98,4 @@ export {
98
98
  walletInfoCommand,
99
99
  walletRedeemCommand
100
100
  };
101
- //# sourceMappingURL=wallet-DNW6DBSU.js.map
101
+ //# sourceMappingURL=wallet-RXHBDJED.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentcash",
3
- "version": "0.9.0",
3
+ "version": "0.9.1",
4
4
  "description": "Generic MCP server for calling x402-protected APIs with automatic payment handling",
5
5
  "type": "module",
6
6
  "main": "dist/esm/lib.js",
@@ -45,11 +45,11 @@
45
45
  "tsx": "^4.21.0",
46
46
  "typescript": "^5.9.3",
47
47
  "vitest": "^4.0.18",
48
- "@agentcash/balance": "0.0.1",
49
48
  "@agentcash/eslint-config": "0.0.1",
50
49
  "@agentcash/networks": "0.0.1",
50
+ "@agentcash/typescript-config": "0.0.1",
51
51
  "@agentcash/neverthrow": "1.0.1",
52
- "@agentcash/typescript-config": "0.0.1"
52
+ "@agentcash/balance": "0.0.1"
53
53
  },
54
54
  "engines": {
55
55
  "node": ">=20"
@@ -1,7 +0,0 @@
1
- // src/shared/mpp-enabled.ts
2
- var isMppEnabled = () => "0.9.0".includes("-mpp");
3
-
4
- export {
5
- isMppEnabled
6
- };
7
- //# sourceMappingURL=chunk-JM7J5ZIS.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/server/index.ts","../../src/server/tools/fetch.ts","../../src/server/tools/response/lib.ts","../../src/server/tools/response/error.ts","../../src/server/tools/response/success.ts","../../src/server/tools/response/safe-handler.ts","../../src/server/tools/lib/check-balance.ts","../../src/server/tools/auth-fetch.ts","../../src/server/tools/wallet.ts","../../src/server/tools/check-endpoint.ts","../../src/server/tools/redeem-invite.ts","../../src/server/tools/telemetry.ts","../../src/server/tools/discover-resources.ts","../../src/server/tools/settings.ts","../../src/server/lib/version.ts"],"sourcesContent":["import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { randomBytes } from 'crypto';\n\nimport { registerFetchTool } from './tools/fetch';\nimport { registerAuthTools } from './tools/auth-fetch';\nimport { registerWalletTools } from './tools/wallet';\nimport { registerCheckEndpointTool } from './tools/check-endpoint';\nimport { registerRedeemInviteTool } from './tools/redeem-invite';\nimport { registerTelemetryTools } from './tools/telemetry';\nimport { registerDiscoveryTools } from './tools/discover-resources';\nimport { registerSettingsTools } from './tools/settings';\n\nimport { MCP_VERSION } from './lib/version';\n\nimport { log } from '@/shared/log';\nimport { redeemInviteCode } from '@/shared/redeem-invite';\n\nimport type { Command } from '@/types';\nimport { buildServerInstructions } from '@/shared/descriptions';\nimport { loadUserOrigins } from '@/shared/user-origins';\nimport { getWallet } from '@/wallet';\n\nexport const startServer: Command = async flags => {\n log.info('Starting agentcash...');\n\n const { invite } = flags;\n let { sessionId } = flags;\n // Generate a random session ID if not provided\n sessionId ??= randomBytes(16).toString('hex');\n\n const walletResult = await getWallet();\n\n if (walletResult.isErr()) {\n log.error(JSON.stringify(walletResult.error, null, 2));\n console.error(walletResult.error);\n process.exit(1);\n }\n\n const wallets = walletResult.value;\n\n const code = invite ?? process.env.INVITE_CODE;\n\n if (code) {\n await redeemInviteCode({\n code,\n address: wallets.evmAccount.account.address,\n surface: 'startServer',\n });\n }\n\n const serverInstructions = buildServerInstructions(loadUserOrigins());\n\n const server = new McpServer(\n {\n name: 'agentcash',\n title: 'AgentCash',\n version: MCP_VERSION,\n websiteUrl: 'https://agentcash.dev',\n icons: [{ src: 'https://agentcash.dev/favicon.svg' }],\n description: serverInstructions,\n },\n {\n capabilities: {\n resources: {\n subscribe: true,\n listChanged: true,\n },\n prompts: {\n listChanged: true,\n },\n },\n instructions: serverInstructions,\n }\n );\n\n const props = {\n server,\n wallets,\n flags,\n sessionId,\n };\n\n registerFetchTool(props);\n registerAuthTools(props);\n registerWalletTools(props);\n registerCheckEndpointTool(props);\n registerRedeemInviteTool(props);\n registerDiscoveryTools(server);\n registerTelemetryTools(props);\n registerSettingsTools(props);\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n\n const shutdown = async () => {\n log.info('Shutting down...');\n await server.close();\n process.exit(0);\n };\n\n process.on('SIGINT', () => void shutdown());\n process.on('SIGTERM', () => void shutdown());\n};\n","import { z } from 'zod';\n\nimport type { Address } from 'viem';\n\nimport { MCP_VERSION } from '@/shared/version';\nimport {\n DEFAULT_USER_FETCH_TIMEOUT,\n safeParseResponse,\n} from '@/shared/neverthrow/fetch';\nimport { isMppEnabled } from '@/shared/mpp-enabled';\nimport {\n createFetchWithPayment,\n type BeforePaymentHook,\n} from '@/operations/fetch-with-payment';\n\nimport {\n mcpError,\n mcpErrorFetch,\n mcpSuccessResponse,\n safeHandler,\n} from './response';\nimport { requestSchema, buildRequest } from './lib/request';\nimport { checkBalance } from './lib/check-balance';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\nimport type { JsonObject } from '@/shared/neverthrow/json/types';\nimport { Network } from '@agentcash/networks';\n\nconst toolName = 'fetch';\n\nconst paymentMethodEnum = isMppEnabled()\n ? z.enum(['x402', 'mpp'])\n : z.enum(['x402']);\n\nconst fetchInputSchema = requestSchema.extend({\n paymentMethod: paymentMethodEnum\n .optional()\n .describe(TOOL_PARAMS.fetch.paymentMethod),\n paymentNetwork: z.enum([Network.BASE, Network.SOLANA]).optional(),\n maxAmount: z\n .number()\n .positive()\n .optional()\n .describe(TOOL_PARAMS.fetch.maxAmount),\n});\n\nexport const registerFetchTool: RegisterTools = ({\n server,\n wallets,\n flags,\n sessionId,\n}) => {\n server.registerTool(\n toolName,\n {\n title: 'Fetch',\n description: DESCRIPTIONS.fetch.mcp,\n inputSchema: fetchInputSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async input => {\n // Balance check hook — throws to abort\n const beforePayment: BeforePaymentHook = async ctx => {\n if (ctx.protocol === 'x402') {\n await checkBalance({\n surface: toolName,\n server,\n input:\n ctx.network === Network.SOLANA\n ? {\n address: wallets.svmAccount.account.address,\n network: Network.SOLANA,\n }\n : {\n address: wallets.evmAccount.account.address,\n network: Network.BASE,\n },\n amountNeeded: ctx.amount,\n message: balance =>\n `This request costs ${ctx.amount} USDC. Your current balance is ${balance} USDC.`,\n flags,\n });\n } else if (isMppEnabled()) {\n await checkBalance({\n surface: toolName,\n server,\n input: {\n address: wallets.evmAccount.account.address,\n network: Network.TEMPO,\n tokenAddress: ctx.currency as Address,\n },\n flags,\n amountNeeded: ctx.amount,\n message: balance =>\n `This request costs ${ctx.amount} tokens. Your current Tempo balance is ${balance}.`,\n });\n }\n };\n\n const provider = flags.provider ?? `agentcash@${MCP_VERSION}`;\n\n const request = buildRequest({\n input,\n wallets,\n sessionId,\n provider,\n });\n\n const fetchResult = await createFetchWithPayment({\n surface: toolName,\n wallets,\n paymentMethod: input.paymentMethod,\n paymentNetwork: input.paymentNetwork,\n flags,\n beforePayment,\n timeout: input.timeout ?? DEFAULT_USER_FETCH_TIMEOUT,\n maxAmount: input.maxAmount,\n })(request);\n\n if (fetchResult.isErr()) {\n return mcpError(fetchResult);\n }\n\n const { response, paymentInfo } = fetchResult.value;\n\n if (!response.ok) {\n return mcpErrorFetch(toolName, response);\n }\n\n const parseResponseResult = await safeParseResponse(toolName, response);\n\n if (parseResponseResult.isErr()) {\n return mcpError(parseResponseResult);\n }\n\n return mcpSuccessResponse(\n parseResponseResult.value,\n paymentInfo as unknown as JsonObject | undefined\n );\n })\n );\n};\n","import type { ParsedResponse } from '@/shared/neverthrow/fetch/types';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\n\nexport const parsedResponseToToolContentPart = (\n data: ParsedResponse\n): CallToolResult['content'][number] => {\n switch (data.type) {\n case 'json':\n return {\n type: 'text' as const,\n text: JSON.stringify(data.data),\n };\n case 'image':\n return {\n type: 'image' as const,\n mimeType: data.mimeType,\n data: Buffer.from(data.data).toString('base64'),\n };\n case 'audio':\n return {\n type: 'audio' as const,\n mimeType: data.mimeType,\n data: Buffer.from(data.data).toString('base64'),\n };\n case 'text':\n return { type: 'text' as const, text: data.data };\n default:\n return {\n type: 'text' as const,\n text: `Unsupported response type: ${data.type}`,\n };\n }\n};\n","import { safeStringifyJson } from '@/shared/neverthrow/json';\n\nimport { parsedResponseToToolContentPart } from './lib';\nimport {\n fetchHttpErr,\n isFetchError,\n safeParseResponse,\n} from '@/shared/neverthrow/fetch';\n\nimport type { JsonObject } from '@/shared/neverthrow/json/types';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport type { BaseError, Err } from '@agentcash/neverthrow/types';\nimport type { BaseX402Error } from '@/shared/protocols/x402/types';\nimport type { BaseMppError } from '@/shared/protocols/mpp/types';\nimport type { BaseFetchError } from '@/shared/neverthrow/fetch/types';\n\nconst buildMcpError = (\n content: CallToolResult['content'],\n options?: { isError?: boolean }\n): CallToolResult => {\n return {\n content,\n // Default: omit isError so siblings survive parallel calls.\n // Tools with outputSchema MUST pass isError: true so the SDK\n // skips output validation on error paths.\n ...(options?.isError ? { isError: true as const } : {}),\n };\n};\n\nexport const mcpErrorJson = (\n error: JsonObject,\n options?: { isError?: boolean }\n): CallToolResult => {\n return safeStringifyJson('mcp-error-json', error).match(\n success =>\n buildMcpError([{ type: 'text' as const, text: success }], options),\n error =>\n buildMcpError(\n [{ type: 'text' as const, text: JSON.stringify(error, null, 2) }],\n options\n )\n );\n};\n\nexport const mcpError = async (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n err: Err<any, BaseX402Error | BaseMppError | BaseFetchError | BaseError>,\n options?: { isError?: boolean }\n) => {\n const { error } = err;\n if (isFetchError(error)) {\n switch (error.cause) {\n case 'network':\n case 'parse':\n return mcpErrorJson({ ...error }, options);\n case 'http':\n const { response, ...rest } = error;\n const parseResponseResult = await safeParseResponse(\n 'mcp-error-fetch-parse-response',\n response\n );\n const httpContent: CallToolResult['content'] = [\n { type: 'text' as const, text: JSON.stringify(rest, null, 2) },\n ...parseResponseResult.match(\n success => [parsedResponseToToolContentPart(success)],\n () => []\n ),\n ];\n return buildMcpError(httpContent, options);\n }\n }\n return mcpErrorJson({ ...error }, options);\n};\n\nexport const mcpErrorFetch = async (surface: string, response: Response) => {\n return mcpError(fetchHttpErr(surface, response));\n};\n","import { safeStringifyJson } from '@/shared/neverthrow/json';\n\nimport { mcpErrorJson } from './error';\n\nimport type { JsonObject } from '@/shared/neverthrow/json/types';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport type { ParsedResponse } from '@/shared/neverthrow/fetch/types';\nimport { parsedResponseToToolContentPart } from './lib';\n\nconst buildMcpSuccess = (\n content: CallToolResult['content']\n): CallToolResult => {\n return {\n content,\n };\n};\n\nexport const mcpSuccessJson = (data: JsonObject): CallToolResult => {\n return safeStringifyJson('mcp-success-text', data).match(\n success => buildMcpSuccess([{ type: 'text' as const, text: success }]),\n error => mcpErrorJson(error)\n );\n};\n\nexport const mcpSuccessStructuredJson = (data: JsonObject): CallToolResult => {\n return safeStringifyJson('mcp-success-structured', data).match(\n success => ({\n content: [{ type: 'text' as const, text: success }],\n structuredContent: data,\n }),\n error => mcpErrorJson(error)\n );\n};\n\nexport const mcpSuccessResponse = (\n data: ParsedResponse,\n extra?: JsonObject\n): CallToolResult => {\n const parsedExtra = extra\n ? safeStringifyJson('mcp-success-extra', extra).match(\n success => success,\n () => undefined\n )\n : undefined;\n\n return buildMcpSuccess([\n parsedResponseToToolContentPart(data),\n ...(parsedExtra ? [{ type: 'text' as const, text: parsedExtra }] : []),\n ]);\n};\n","import { log } from '@/shared/log';\nimport { mcpErrorJson } from './error';\n\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\n\n/**\n * Wraps an MCP tool handler so uncaught exceptions never propagate.\n * Returns error info as normal content (isError omitted) for any unhandled throw.\n *\n * This prevents sibling parallel tool calls from failing when one\n * tool encounters an unexpected error.\n */\nexport function safeHandler<T>(\n handler: (input: T) => Promise<CallToolResult>\n): (input: T) => Promise<CallToolResult> {\n return async (input: T) => {\n // eslint-disable-next-line no-restricted-syntax -- intentional last-resort catch to prevent sibling tool call failures\n try {\n return await handler(input);\n } catch (e) {\n log.error('Unhandled tool error', e);\n return mcpErrorJson({\n error: e instanceof Error ? e.message : String(e),\n cause: 'unhandled_exception',\n });\n }\n };\n}\n","import { getBalance } from '@/shared/balance';\nimport { getDepositLink, openDepositLink } from '@/shared/utils';\nimport { log } from '@/shared/log';\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { GlobalFlags } from '@/types';\nimport type { GetBalanceInput } from '@agentcash/balance';\n\ninterface CheckBalanceProps {\n server: McpServer;\n amountNeeded: number;\n message: (balance: number) => string;\n flags: GlobalFlags;\n surface: string;\n input: GetBalanceInput;\n}\n\nexport const checkBalance = async ({\n server,\n input,\n amountNeeded,\n message,\n flags,\n surface,\n}: CheckBalanceProps) => {\n const balanceResult = await getBalance(surface, input, flags);\n\n if (balanceResult.isErr()) {\n log.error(JSON.stringify(balanceResult.error, null, 2));\n return;\n }\n\n const balance = balanceResult.value;\n\n if (balance.balance < amountNeeded) {\n const capabilities = server.server.getClientCapabilities();\n if (!capabilities?.elicitation) {\n throw new Error(\n `${message(balance.balance)}\\n\\nYou can deposit USDC at ${getDepositLink(input.address, flags, input.network)}`\n );\n }\n\n const result = await server.server.elicitInput({\n mode: 'form',\n message: message(balance.balance),\n requestedSchema: {\n type: 'object',\n properties: {},\n },\n });\n\n if (result.action === 'accept') {\n await openDepositLink(input.address, flags, input.network);\n }\n }\n\n return balance.balance;\n};\n","import {\n DEFAULT_USER_FETCH_TIMEOUT,\n safeParseResponse,\n} from '@/shared/neverthrow/fetch';\nimport { createFetchWithAuth } from '@/operations/fetch-with-auth';\n\nimport {\n mcpError,\n mcpSuccessJson,\n mcpSuccessResponse,\n mcpErrorFetch,\n safeHandler,\n} from './response';\n\nimport { requestSchema, buildRequest } from './lib/request';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\nimport { Network } from '@agentcash/networks';\nimport z from 'zod';\n\nconst toolName = 'fetch_with_auth';\n\nexport const registerAuthTools: RegisterTools = ({\n server,\n wallets,\n sessionId,\n}) => {\n server.registerTool(\n toolName,\n {\n title: 'Fetch with Authentication',\n description: DESCRIPTIONS.fetchWithAuth.mcp,\n inputSchema: requestSchema.extend({\n paymentNetwork: z.enum([Network.BASE, Network.SOLANA]).optional(),\n }),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async input => {\n const result = await createFetchWithAuth({\n surface: toolName,\n wallets,\n timeout: input.timeout ?? DEFAULT_USER_FETCH_TIMEOUT,\n paymentNetwork: input.paymentNetwork,\n })(\n buildRequest({\n input,\n wallets,\n sessionId,\n })\n );\n\n if (result.isErr()) {\n return mcpError(result);\n }\n\n const value = result.value;\n\n if (value.outcome === 'no_siwx_extension') {\n return mcpSuccessJson({\n error: 'Endpoint returned 402 but no sign-in-with-x extension found',\n statusCode: 402,\n hint: 'This endpoint may require payment instead of authentication. Use execute_call for paid requests.',\n });\n }\n\n const { response } = value;\n\n if (!response.ok) {\n return mcpErrorFetch(toolName, response);\n }\n\n const parseResponseResult = await safeParseResponse(toolName, response);\n\n if (parseResponseResult.isErr()) {\n return mcpError(parseResponseResult);\n }\n\n return mcpSuccessResponse(parseResponseResult.value);\n })\n );\n};\n","import { z } from 'zod';\n\nimport { getWalletInfo } from '@/operations/wallet-info';\n\nimport { mcpSuccessStructuredJson, mcpError } from './response';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst chainBalanceSchema = z.object({\n chain: z.string().describe(TOOL_PARAMS.getWalletInfo.output.chain),\n balance: z.number().describe(TOOL_PARAMS.getWalletInfo.output.chainBalance),\n});\n\nexport const registerWalletTools: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n 'get_wallet_info',\n {\n title: 'Get Wallet Info',\n description: DESCRIPTIONS.getWalletInfo.mcp,\n outputSchema: z.object({\n address: z.string().describe(TOOL_PARAMS.getWalletInfo.output.address),\n balance: z.number().describe(TOOL_PARAMS.getWalletInfo.output.balance),\n chains: z\n .array(chainBalanceSchema)\n .describe(TOOL_PARAMS.getWalletInfo.output.chains),\n isNewWallet: z\n .boolean()\n .describe(TOOL_PARAMS.getWalletInfo.output.isNewWallet),\n depositLink: z\n .string()\n .url()\n .describe(TOOL_PARAMS.getWalletInfo.output.depositLink),\n onboardingCta: z\n .object({\n onboardLink: z\n .string()\n .url()\n .describe(\n TOOL_PARAMS.getWalletInfo.output.onboardingCtaOnboardLink\n ),\n depositLink: z\n .string()\n .url()\n .describe(\n TOOL_PARAMS.getWalletInfo.output.onboardingCtaDepositLink\n ),\n message: z\n .string()\n .describe(TOOL_PARAMS.getWalletInfo.output.onboardingCtaMessage),\n })\n .optional()\n .describe(TOOL_PARAMS.getWalletInfo.output.onboardingCta),\n message: z\n .string()\n .optional()\n .describe(TOOL_PARAMS.getWalletInfo.output.message),\n }),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async () => {\n const result = await getWalletInfo('get_wallet_info', wallets, flags);\n\n if (result.isErr()) {\n return mcpError(result, { isError: true });\n }\n\n return mcpSuccessStructuredJson({\n address: result.value.address,\n balance: result.value.balance,\n chains: result.value.chains.map(c => ({ ...c })),\n isNewWallet: result.value.isNewWallet,\n depositLink: result.value.depositLink,\n ...(result.value.onboardingCta\n ? {\n onboardingCta: {\n onboardLink: result.value.onboardingCta.onboardLink,\n depositLink: result.value.onboardingCta.depositLink,\n message: result.value.onboardingCta.message,\n },\n }\n : {}),\n ...(result.value.message ? { message: result.value.message } : {}),\n });\n }\n );\n};\n","import z from 'zod';\n\nimport { mcpSuccessJson, safeHandler } from './response';\n\nimport { log } from '@/shared/log';\nimport { toJsonObject } from '@/shared/neverthrow/json';\nimport { checkEndpoint } from '@/operations/check-endpoint';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst toolName = 'check_endpoint_schema';\n\nexport const registerCheckEndpointTool: RegisterTools = ({\n server,\n wallets,\n sessionId,\n}) => {\n server.registerTool(\n toolName,\n {\n title: 'Check Endpoint Schema',\n description: DESCRIPTIONS.checkEndpointSchema.mcp,\n inputSchema: z.object({\n url: z.string().describe(TOOL_PARAMS.checkEndpointSchema.url),\n method: z\n .enum(['GET', 'POST', 'PUT', 'DELETE', 'PATCH'])\n .optional()\n .describe(TOOL_PARAMS.checkEndpointSchema.method),\n sample_input_body: z\n .record(z.string(), z.unknown())\n .optional()\n .describe(TOOL_PARAMS.checkEndpointSchema.sampleInputBody),\n headers: z\n .record(z.string(), z.string())\n .optional()\n .describe(TOOL_PARAMS.checkEndpointSchema.headers)\n .default({}),\n }),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async input => {\n log.info('Querying endpoint', {\n url: input.url,\n method: input.method,\n hasSampleInputBody: !!input.sample_input_body,\n });\n\n const result = await checkEndpoint(\n toolName,\n input.url,\n input.method ? [input.method] : undefined,\n input.sample_input_body,\n {\n ...input.headers,\n 'X-Wallet-Address': wallets.evmAccount.account.address,\n ...(sessionId ? { 'X-Session-ID': sessionId } : {}),\n }\n );\n\n if (!result.found) {\n log.error('[checkEndpoint] failed', {\n surface: toolName,\n url: input.url,\n cause: result.cause,\n message: result.message,\n });\n return mcpSuccessJson({\n message: 'No endpoint schema found for this URL.',\n url: input.url,\n });\n }\n\n if (result.advisories.length === 0) {\n return mcpSuccessJson({\n message: 'No endpoint schema found for this URL.',\n url: input.url,\n });\n }\n\n const results = result.advisories.map(a => ({\n ...a,\n requiresPayment: a.authMode === 'paid' || a.authMode === 'apiKey+paid',\n }));\n\n return mcpSuccessJson(toJsonObject({ url: input.url, results }));\n })\n );\n};\n","import z from 'zod';\nimport { mcpError, mcpSuccessStructuredJson } from './response';\n\nimport { redeemInviteCode } from '@/shared/redeem-invite';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nexport const registerRedeemInviteTool: RegisterTools = ({\n server,\n wallets,\n}) => {\n server.registerTool(\n 'redeem_invite',\n {\n title: 'Redeem Invite',\n description: DESCRIPTIONS.redeemInvite.mcp,\n inputSchema: z.object({\n code: z.string().min(1).describe(TOOL_PARAMS.redeemInvite.code),\n }),\n outputSchema: z.object({\n redeemed: z.literal(true),\n amount: z.string().describe(TOOL_PARAMS.redeemInvite.output.amount),\n txHash: z.string().describe(TOOL_PARAMS.redeemInvite.output.txHash),\n }),\n annotations: {\n readOnlyHint: false, // Modifies wallet balance\n destructiveHint: false, // Additive (adds funds), not destructive\n idempotentHint: false, // Same code can't be redeemed twice - second attempt fails\n openWorldHint: true,\n },\n },\n async ({ code }) => {\n const result = await redeemInviteCode({\n code,\n address: wallets.evmAccount.account.address,\n surface: 'redeem_invite',\n dev: false,\n });\n\n if (result.isErr()) {\n return mcpError(result, { isError: true });\n }\n\n const { amount, txHash } = result.value;\n\n return mcpSuccessStructuredJson({\n redeemed: true,\n amount: `${amount} USDC`,\n txHash,\n });\n }\n );\n};\n","import z from 'zod';\n\nimport { log } from '@/shared/log';\nimport { submitErrorReport } from '@/operations/report-error';\nimport { mcpError, mcpSuccessStructuredJson } from './response';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst toolName = 'report_error';\n\nexport const registerTelemetryTools: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n title: 'Report Error',\n description: DESCRIPTIONS.reportError.mcp,\n inputSchema: z.object({\n tool: z.string().describe(TOOL_PARAMS.reportError.tool),\n resource: z\n .string()\n .optional()\n .describe(TOOL_PARAMS.reportError.resource),\n summary: z.string().describe(TOOL_PARAMS.reportError.summary),\n errorMessage: z.string().describe(TOOL_PARAMS.reportError.errorMessage),\n stack: z.string().optional().describe(TOOL_PARAMS.reportError.stack),\n fullReport: z\n .string()\n .optional()\n .describe(TOOL_PARAMS.reportError.fullReport),\n }),\n outputSchema: z.object({\n submitted: z.literal(true),\n reportId: z.string().describe(TOOL_PARAMS.reportError.output.reportId),\n message: z.string().describe(TOOL_PARAMS.reportError.output.message),\n }),\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async input => {\n log.info('Submitting error report', {\n tool: input.tool,\n resource: input.resource,\n summary: input.summary,\n });\n\n const result = await submitErrorReport(\n toolName,\n {\n tool: input.tool,\n summary: input.summary,\n errorMessage: input.errorMessage,\n resource: input.resource,\n stack: input.stack,\n fullReport: input.fullReport,\n },\n wallets.evmAccount.account.address,\n flags.dev\n );\n\n if (result.isErr()) {\n log.error('Failed to submit error report', result.error);\n return mcpError(result, { isError: true });\n }\n\n log.info('Error report submitted successfully', {\n reportId: result.value.reportId,\n });\n\n return mcpSuccessStructuredJson({\n submitted: result.value.submitted,\n reportId: result.value.reportId,\n message: result.value.message,\n });\n }\n );\n};\n","import { z } from 'zod';\n\nimport { resultFromPromise } from '@agentcash/neverthrow';\n\nimport { log } from '@/shared/log';\nimport { discoverResources } from '@/operations/discover';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport {\n mcpError,\n mcpErrorJson,\n mcpSuccessJson,\n safeHandler,\n} from './response';\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { JsonObject } from '@/shared/neverthrow/json/types';\n\nconst toolName = 'discover_api_endpoints';\nconst OPENAPI_TRIED_PATHS = '/openapi.json, /.well-known/x402';\n\nexport function registerDiscoveryTools(server: McpServer): void {\n server.registerTool(\n toolName,\n {\n title: 'Discover API Endpoints',\n description: DESCRIPTIONS.discoverApiEndpoints.mcp,\n inputSchema: z.object({\n url: z.string().describe(TOOL_PARAMS.discoverApiEndpoints.url),\n include_guidance: z\n .boolean()\n .optional()\n .describe(TOOL_PARAMS.discoverApiEndpoints.includeGuidance),\n }),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async ({ url, include_guidance }) => {\n if (!URL.canParse(url)) {\n return mcpErrorJson({\n error: 'Invalid URL',\n url,\n hint: 'Provide a fully-formed URL like https://example.com',\n });\n }\n\n log.info(`Discovering resources for: ${url}`);\n\n const discoverResult = await resultFromPromise(\n 'discover',\n toolName,\n discoverResources(toolName, url, {\n includeGuidance: include_guidance,\n }),\n e => ({\n cause: 'discover' as const,\n message: e instanceof Error ? e.message : String(e),\n })\n );\n\n if (discoverResult.isErr()) {\n return mcpError(discoverResult);\n }\n\n const result = discoverResult.value;\n\n if ('endpoints' in result) {\n return mcpSuccessJson({\n found: true,\n origin: result.origin,\n ...(result.info\n ? { info: result.info as unknown as JsonObject }\n : {}),\n guidanceAvailable: result.guidanceAvailable,\n ...(result.guidanceTokens != null\n ? { guidanceTokens: result.guidanceTokens }\n : {}),\n ...(result.guidance ? { guidance: result.guidance } : {}),\n endpoints: result.endpoints.map(\n e => ({ ...e }) as unknown as JsonObject\n ),\n } as JsonObject);\n }\n\n // Discovery failed — surface the real cause\n const origin = URL.canParse(url) ? new URL(url).origin : url;\n\n if (result.cause === 'not_found') {\n return mcpSuccessJson({\n found: false,\n origin,\n error: `No OpenAPI spec found. Tried: ${OPENAPI_TRIED_PATHS}`,\n });\n }\n\n return mcpSuccessJson({\n found: false,\n origin,\n cause: result.cause,\n error:\n result.message ?? `Failed to fetch OpenAPI spec (${result.cause})`,\n hint:\n result.cause === 'timeout'\n ? 'The server may be slow or unreachable. Try again later.'\n : result.cause === 'network'\n ? 'Could not reach the server. Check the network connection and try again.'\n : `The server returned an unparseable response. Tried: ${OPENAPI_TRIED_PATHS}`,\n });\n })\n );\n}\n","import { z } from 'zod';\n\nimport { getSettings, setSettings } from '@/shared/settings';\nimport { DEFAULT_MAX_AMOUNT } from '@/operations/fetch-with-payment';\n\nimport { mcpSuccessStructuredJson, safeHandler } from './response';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nexport const registerSettingsTools: RegisterTools = ({ server }) => {\n server.registerTool(\n 'update_settings',\n {\n title: 'Update Settings',\n description: DESCRIPTIONS.updateSettings.mcp,\n inputSchema: z.object({\n maxAmount: z\n .number()\n .positive()\n .optional()\n .describe(\n `Maximum amount (USD) to pay per fetch request. Current default: $${DEFAULT_MAX_AMOUNT}.`\n ),\n }),\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n safeHandler(input => {\n if (input.maxAmount !== undefined) {\n setSettings({ maxAmount: input.maxAmount });\n }\n\n const settings = getSettings();\n\n return Promise.resolve(\n mcpSuccessStructuredJson({\n maxAmount: settings.maxAmount ?? DEFAULT_MAX_AMOUNT,\n })\n );\n })\n );\n\n server.registerTool(\n 'get_settings',\n {\n title: 'Get Settings',\n description: DESCRIPTIONS.getSettings.mcp,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n safeHandler(() => {\n const settings = getSettings();\n\n return Promise.resolve(\n mcpSuccessStructuredJson({\n maxAmount: settings.maxAmount ?? DEFAULT_MAX_AMOUNT,\n })\n );\n })\n );\n};\n","import { readFileSync } from 'fs';\nimport { dirname, join } from 'path';\nimport { fileURLToPath } from 'url';\n\ndeclare const __MCP_VERSION__: string | undefined;\n\nfunction getVersion(): string {\n if (typeof __MCP_VERSION__ !== 'undefined') {\n return __MCP_VERSION__;\n }\n // Fallback for dev mode (tsx)\n const __dirname = dirname(fileURLToPath(import.meta.url));\n const pkg = JSON.parse(\n readFileSync(join(__dirname, '../../../package.json'), 'utf-8')\n ) as { version: string };\n return pkg.version;\n}\n\nexport const MCP_VERSION = getVersion();\n"],"mappings":"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","names":["error","z","toolName","z","z","z","toolName","z","z","z","z","toolName","z","z","toolName","z","z","z","__dirname","MCP_VERSION","MCP_VERSION"]}