agentcash 0.13.1 → 0.13.2

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 (104) hide show
  1. package/README.md +7 -1
  2. package/dist/cjs/run-server.cjs +3912 -5574
  3. package/dist/esm/{add-skill-3SHARVQA.js → add-skill-W277MI7L.js} +16 -16
  4. package/dist/esm/{bridge-55J4MKZR.js → bridge-EXVM6MMU.js} +13 -14
  5. package/dist/esm/{bridge-55J4MKZR.js.map → bridge-EXVM6MMU.js.map} +1 -1
  6. package/dist/esm/{check-V262JV5M.js → check-LTH3BZYQ.js} +12 -13
  7. package/dist/esm/{check-V262JV5M.js.map → check-LTH3BZYQ.js.map} +1 -1
  8. package/dist/esm/{chunk-DFHVSUHX.js → chunk-5CMVFNXO.js} +3 -3
  9. package/dist/esm/{chunk-23OVF3MX.js → chunk-5JBG33QY.js} +4 -4
  10. package/dist/esm/{chunk-QOYH6AOG.js → chunk-7AT3NXJ2.js} +2 -2
  11. package/dist/esm/{chunk-DPKUB6GL.js → chunk-AWFBYDYO.js} +7 -7
  12. package/dist/esm/{chunk-HFEYSQRZ.js → chunk-F3KGAMIA.js} +34 -19
  13. package/dist/esm/chunk-F3KGAMIA.js.map +1 -0
  14. package/dist/esm/{chunk-QLW6AJTF.js → chunk-H3L6DHOH.js} +4 -4
  15. package/dist/esm/{chunk-EJDPIURX.js → chunk-IL5RGDIX.js} +9 -9
  16. package/dist/esm/{chunk-Q5SPIJGE.js → chunk-IPBR36VR.js} +48 -29
  17. package/dist/esm/chunk-IPBR36VR.js.map +1 -0
  18. package/dist/esm/{chunk-6XGAIMNK.js → chunk-ISF2WVEZ.js} +2 -2
  19. package/dist/esm/{chunk-4JNU4ZDR.js → chunk-JAA6JEF2.js} +3 -3
  20. package/dist/esm/{chunk-GYJKIBJJ.js → chunk-JOIAQY6V.js} +5 -5
  21. package/dist/esm/{chunk-GKYODP7W.js → chunk-JX2XE6FD.js} +2 -2
  22. package/dist/esm/{chunk-TVSACMMH.js → chunk-KPJJSNZO.js} +7 -7
  23. package/dist/esm/{chunk-LNQRIXFK.js → chunk-KVSTJRSJ.js} +2 -2
  24. package/dist/esm/{chunk-DJLERI6R.js → chunk-MYWE3P7R.js} +5 -5
  25. package/dist/esm/{chunk-RVJ22H4S.js → chunk-NC4UN6IF.js} +2 -2
  26. package/dist/esm/{chunk-BYLBPP4V.js → chunk-O3OVWMBY.js} +8 -8
  27. package/dist/esm/{chunk-QZBSRYSW.js → chunk-PBVLTOFS.js} +3 -3
  28. package/dist/esm/{chunk-Y4VZACTC.js → chunk-QZCSZB7E.js} +6 -8
  29. package/dist/esm/{chunk-Y4VZACTC.js.map → chunk-QZCSZB7E.js.map} +1 -1
  30. package/dist/esm/chunk-TTAO2EJK.js +10 -0
  31. package/dist/esm/chunk-TTAO2EJK.js.map +1 -0
  32. package/dist/esm/{chunk-E5SPXKCI.js → chunk-UBVHQSSW.js} +9 -9
  33. package/dist/esm/{chunk-HOGMCHWI.js → chunk-UMYAGSWZ.js} +5 -5
  34. package/dist/esm/{chunk-BQRFNAMV.js → chunk-VX6PPHSN.js} +5 -5
  35. package/dist/esm/{chunk-X5AS5G23.js → chunk-WRMSVC2R.js} +2 -2
  36. package/dist/esm/{chunk-EMQMCXIC.js → chunk-X2JUL4S3.js} +3 -10
  37. package/dist/esm/chunk-X2JUL4S3.js.map +1 -0
  38. package/dist/esm/{chunk-TX4UYXJO.js → chunk-YIU364NZ.js} +3 -3
  39. package/dist/esm/{chunk-WUNL7OYW.js → chunk-YUGBFY4H.js} +3 -3
  40. package/dist/esm/{chunk-C7KWYVS3.js → chunk-YWNBUUBR.js} +53 -2
  41. package/dist/esm/chunk-YWNBUUBR.js.map +1 -0
  42. package/dist/esm/{discover-RV2HPYM3.js → discover-63V73SKH.js} +7 -7
  43. package/dist/esm/{fetch-5H6NJNO5.js → fetch-G2C4EUTP.js} +17 -18
  44. package/dist/esm/{fetch-5H6NJNO5.js.map → fetch-G2C4EUTP.js.map} +1 -1
  45. package/dist/esm/{fund-OTAWWC7N.js → fund-YCUI5KVH.js} +9 -11
  46. package/dist/esm/{fund-OTAWWC7N.js.map → fund-YCUI5KVH.js.map} +1 -1
  47. package/dist/esm/index.js +35 -35
  48. package/dist/esm/{install-BZLMXTQ6.js → install-OK4J2KEU.js} +12 -14
  49. package/dist/esm/{install-BZLMXTQ6.js.map → install-OK4J2KEU.js.map} +1 -1
  50. package/dist/esm/{onboard-DBENGNGV.js → onboard-SLU3CNO4.js} +17 -19
  51. package/dist/esm/{onboard-DBENGNGV.js.map → onboard-SLU3CNO4.js.map} +1 -1
  52. package/dist/esm/{origins-3AA7U2VW.js → origins-7KBHPH42.js} +10 -10
  53. package/dist/esm/register-HP4VTPU7.js +150 -0
  54. package/dist/esm/register-HP4VTPU7.js.map +1 -0
  55. package/dist/esm/{report-error-F44RFQ54.js → report-error-D3RRKDEC.js} +10 -12
  56. package/dist/esm/{report-error-F44RFQ54.js.map → report-error-D3RRKDEC.js.map} +1 -1
  57. package/dist/esm/{search-WTPHS4A3.js → search-G25PLCS2.js} +14 -15
  58. package/dist/esm/{search-WTPHS4A3.js.map → search-G25PLCS2.js.map} +1 -1
  59. package/dist/esm/{server-BR4W2YCH.js → server-KWXWCPIO.js} +36 -37
  60. package/dist/esm/{server-BR4W2YCH.js.map → server-KWXWCPIO.js.map} +1 -1
  61. package/dist/esm/{server-6V4NB65Q.js → server-QJNQOPBK.js} +2 -2
  62. package/dist/esm/{settings-SEZ65YUC.js → settings-RLSKK5RM.js} +3 -4
  63. package/dist/esm/{settings-SEZ65YUC.js.map → settings-RLSKK5RM.js.map} +1 -1
  64. package/dist/esm/{try-2KUOYSRY.js → try-JK56MOLD.js} +16 -17
  65. package/dist/esm/{try-2KUOYSRY.js.map → try-JK56MOLD.js.map} +1 -1
  66. package/dist/esm/{wallet-RZVO77IB.js → wallet-RWNVHHCO.js} +17 -19
  67. package/dist/esm/{wallet-RZVO77IB.js.map → wallet-RWNVHHCO.js.map} +1 -1
  68. package/package.json +7 -7
  69. package/dist/esm/chunk-C7KWYVS3.js.map +0 -1
  70. package/dist/esm/chunk-EMQMCXIC.js.map +0 -1
  71. package/dist/esm/chunk-HFEYSQRZ.js.map +0 -1
  72. package/dist/esm/chunk-NROPRHIC.js +0 -25
  73. package/dist/esm/chunk-NROPRHIC.js.map +0 -1
  74. package/dist/esm/chunk-Q5SPIJGE.js.map +0 -1
  75. package/dist/esm/chunk-VDBUUHJF.js +0 -58
  76. package/dist/esm/chunk-VDBUUHJF.js.map +0 -1
  77. package/dist/esm/register-NAPAV4G7.js +0 -64
  78. package/dist/esm/register-NAPAV4G7.js.map +0 -1
  79. /package/dist/esm/{add-skill-3SHARVQA.js.map → add-skill-W277MI7L.js.map} +0 -0
  80. /package/dist/esm/{chunk-DFHVSUHX.js.map → chunk-5CMVFNXO.js.map} +0 -0
  81. /package/dist/esm/{chunk-23OVF3MX.js.map → chunk-5JBG33QY.js.map} +0 -0
  82. /package/dist/esm/{chunk-QOYH6AOG.js.map → chunk-7AT3NXJ2.js.map} +0 -0
  83. /package/dist/esm/{chunk-DPKUB6GL.js.map → chunk-AWFBYDYO.js.map} +0 -0
  84. /package/dist/esm/{chunk-QLW6AJTF.js.map → chunk-H3L6DHOH.js.map} +0 -0
  85. /package/dist/esm/{chunk-EJDPIURX.js.map → chunk-IL5RGDIX.js.map} +0 -0
  86. /package/dist/esm/{chunk-6XGAIMNK.js.map → chunk-ISF2WVEZ.js.map} +0 -0
  87. /package/dist/esm/{chunk-4JNU4ZDR.js.map → chunk-JAA6JEF2.js.map} +0 -0
  88. /package/dist/esm/{chunk-GYJKIBJJ.js.map → chunk-JOIAQY6V.js.map} +0 -0
  89. /package/dist/esm/{chunk-GKYODP7W.js.map → chunk-JX2XE6FD.js.map} +0 -0
  90. /package/dist/esm/{chunk-TVSACMMH.js.map → chunk-KPJJSNZO.js.map} +0 -0
  91. /package/dist/esm/{chunk-LNQRIXFK.js.map → chunk-KVSTJRSJ.js.map} +0 -0
  92. /package/dist/esm/{chunk-DJLERI6R.js.map → chunk-MYWE3P7R.js.map} +0 -0
  93. /package/dist/esm/{chunk-RVJ22H4S.js.map → chunk-NC4UN6IF.js.map} +0 -0
  94. /package/dist/esm/{chunk-BYLBPP4V.js.map → chunk-O3OVWMBY.js.map} +0 -0
  95. /package/dist/esm/{chunk-QZBSRYSW.js.map → chunk-PBVLTOFS.js.map} +0 -0
  96. /package/dist/esm/{chunk-E5SPXKCI.js.map → chunk-UBVHQSSW.js.map} +0 -0
  97. /package/dist/esm/{chunk-HOGMCHWI.js.map → chunk-UMYAGSWZ.js.map} +0 -0
  98. /package/dist/esm/{chunk-BQRFNAMV.js.map → chunk-VX6PPHSN.js.map} +0 -0
  99. /package/dist/esm/{chunk-X5AS5G23.js.map → chunk-WRMSVC2R.js.map} +0 -0
  100. /package/dist/esm/{chunk-TX4UYXJO.js.map → chunk-YIU364NZ.js.map} +0 -0
  101. /package/dist/esm/{chunk-WUNL7OYW.js.map → chunk-YUGBFY4H.js.map} +0 -0
  102. /package/dist/esm/{discover-RV2HPYM3.js.map → discover-63V73SKH.js.map} +0 -0
  103. /package/dist/esm/{origins-3AA7U2VW.js.map → origins-7KBHPH42.js.map} +0 -0
  104. /package/dist/esm/{server-6V4NB65Q.js.map → server-QJNQOPBK.js.map} +0 -0
@@ -0,0 +1,150 @@
1
+ import {
2
+ executeFetch
3
+ } from "./chunk-IPBR36VR.js";
4
+ import "./chunk-JX2XE6FD.js";
5
+ import "./chunk-IKPLMFAK.js";
6
+ import "./chunk-LNJIXYCU.js";
7
+ import "./chunk-MYWE3P7R.js";
8
+ import "./chunk-PBVLTOFS.js";
9
+ import {
10
+ getWalletOrExit
11
+ } from "./chunk-7AT3NXJ2.js";
12
+ import "./chunk-F3KGAMIA.js";
13
+ import "./chunk-NPJV7AMV.js";
14
+ import {
15
+ safeParseJson
16
+ } from "./chunk-KVSTJRSJ.js";
17
+ import {
18
+ ensureProtocol
19
+ } from "./chunk-FB5CMO3J.js";
20
+ import {
21
+ fromNeverthrowError,
22
+ outputAndExit,
23
+ successResponse
24
+ } from "./chunk-7EBJ4BCH.js";
25
+ import "./chunk-QZCSZB7E.js";
26
+ import "./chunk-TTAO2EJK.js";
27
+ import {
28
+ err,
29
+ ok
30
+ } from "./chunk-YWNBUUBR.js";
31
+ import "./chunk-ITCDZXBZ.js";
32
+
33
+ // src/operations/register.ts
34
+ import z from "zod";
35
+ var X402SCAN_URL = "https://www.x402scan.com/api/x402/registry/register-origin";
36
+ var MPPSCAN_URL = "https://www.mppscan.com/api/mpp/register";
37
+ var x402scanResponseSchema = z.object({
38
+ success: z.boolean(),
39
+ registered: z.number().optional(),
40
+ failed: z.number().optional(),
41
+ total: z.number().optional(),
42
+ source: z.string().optional()
43
+ });
44
+ var mppscanDoneSchema = z.object({
45
+ type: z.literal("done"),
46
+ origin: z.object({
47
+ id: z.string(),
48
+ origin: z.string(),
49
+ name: z.string()
50
+ }),
51
+ resourceCount: z.number()
52
+ });
53
+ async function registerX402Scan(url, options) {
54
+ const { surface, wallets, flags } = options;
55
+ const fetchResult = await executeFetch(
56
+ {
57
+ url: X402SCAN_URL,
58
+ method: "POST" /* POST */,
59
+ headers: { "Content-Type": "application/json" },
60
+ body: JSON.stringify({ origin: url })
61
+ },
62
+ { surface, wallets, flags, params: {} }
63
+ );
64
+ if (fetchResult.isErr()) return fetchResult;
65
+ const { response } = fetchResult.value;
66
+ if (!response.ok) {
67
+ return err("register", surface, {
68
+ cause: "x402scan_http",
69
+ message: `x402scan returned ${response.status} ${response.statusText}`
70
+ });
71
+ }
72
+ const text = await response.text();
73
+ const jsonResult = safeParseJson(surface, text);
74
+ if (jsonResult.isErr()) return jsonResult;
75
+ const parsed = x402scanResponseSchema.safeParse(jsonResult.value);
76
+ if (!parsed.success) {
77
+ return err("register", surface, {
78
+ cause: "x402scan_parse",
79
+ message: "Invalid x402scan response"
80
+ });
81
+ }
82
+ return ok(parsed.data);
83
+ }
84
+ async function registerMppscan(url, options) {
85
+ const { surface, wallets, flags } = options;
86
+ const fetchResult = await executeFetch(
87
+ {
88
+ url: MPPSCAN_URL,
89
+ method: "POST" /* POST */,
90
+ headers: { "Content-Type": "application/json" },
91
+ body: JSON.stringify({ url })
92
+ },
93
+ { surface, wallets, flags, params: {} }
94
+ );
95
+ if (fetchResult.isErr()) return fetchResult;
96
+ const { response } = fetchResult.value;
97
+ if (!response.ok) {
98
+ return err("register", surface, {
99
+ cause: "mppscan_http",
100
+ message: `mppscan returned ${response.status} ${response.statusText}`
101
+ });
102
+ }
103
+ const text = await response.text();
104
+ const lines = text.trim().split("\n");
105
+ for (let i = lines.length - 1; i >= 0; i--) {
106
+ const lineResult = safeParseJson(surface, lines[i]);
107
+ if (lineResult.isErr()) continue;
108
+ const parsed = mppscanDoneSchema.safeParse(lineResult.value);
109
+ if (parsed.success) return ok(parsed.data);
110
+ }
111
+ return err("register", surface, {
112
+ cause: "mppscan_parse",
113
+ message: "No done message in mppscan response"
114
+ });
115
+ }
116
+ async function registerOrigin(input, options) {
117
+ const url = ensureProtocol(input.url);
118
+ const [x402Result, mppResult] = await Promise.all([
119
+ registerX402Scan(url, options),
120
+ registerMppscan(url, options)
121
+ ]);
122
+ if (x402Result.isErr() && mppResult.isErr()) {
123
+ return err("register", options.surface, {
124
+ cause: "register_failed",
125
+ message: `Both registries failed. x402scan: ${x402Result.error.message}. mppscan: ${mppResult.error.message}`
126
+ });
127
+ }
128
+ return ok({
129
+ x402scan: x402Result.isOk() ? x402Result.value : { success: false, error: x402Result.error.message },
130
+ mppscan: mppResult.isOk() ? mppResult.value : { success: false, error: mppResult.error.message }
131
+ });
132
+ }
133
+
134
+ // src/cli/commands/register.ts
135
+ var SURFACE = "cli:register";
136
+ var registerCommand = async (args) => {
137
+ const wallets = await getWalletOrExit(args);
138
+ const result = await registerOrigin(
139
+ { url: args.url },
140
+ { surface: SURFACE, wallets, flags: args }
141
+ );
142
+ if (result.isErr()) {
143
+ return outputAndExit(fromNeverthrowError(result), args);
144
+ }
145
+ return outputAndExit(successResponse(result.value), args);
146
+ };
147
+ export {
148
+ registerCommand
149
+ };
150
+ //# sourceMappingURL=register-HP4VTPU7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/operations/register.ts","../../src/cli/commands/register.ts"],"sourcesContent":["import z from 'zod';\nimport { ok, err } from '@agentcash/neverthrow';\n\nimport { executeFetch } from './fetch';\nimport { ensureProtocol } from '@/shared/url';\nimport { RequestMethod } from '@/shared/request/types';\nimport { safeParseJson } from '@/shared/neverthrow/json';\n\nimport type { Wallets } from '@/wallet';\nimport type { GlobalFlags } from '@/types';\n\nconst X402SCAN_URL =\n 'https://www.x402scan.com/api/x402/registry/register-origin';\nconst MPPSCAN_URL = 'https://www.mppscan.com/api/mpp/register';\n\nexport interface RegisterInput {\n url: string;\n}\n\nexport interface RegisterOptions {\n surface: string;\n wallets: Wallets;\n flags: GlobalFlags;\n}\n\nconst x402scanResponseSchema = z.object({\n success: z.boolean(),\n registered: z.number().optional(),\n failed: z.number().optional(),\n total: z.number().optional(),\n source: z.string().optional(),\n});\n\nconst mppscanDoneSchema = z.object({\n type: z.literal('done'),\n origin: z.object({\n id: z.string(),\n origin: z.string(),\n name: z.string(),\n }),\n resourceCount: z.number(),\n});\n\nasync function registerX402Scan(url: string, options: RegisterOptions) {\n const { surface, wallets, flags } = options;\n\n const fetchResult = await executeFetch(\n {\n url: X402SCAN_URL,\n method: RequestMethod.POST,\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ origin: url }),\n },\n { surface, wallets, flags, params: {} }\n );\n\n if (fetchResult.isErr()) return fetchResult;\n\n const { response } = fetchResult.value;\n if (!response.ok) {\n return err('register', surface, {\n cause: 'x402scan_http' as const,\n message: `x402scan returned ${response.status} ${response.statusText}`,\n });\n }\n\n const text = await response.text();\n const jsonResult = safeParseJson(surface, text);\n if (jsonResult.isErr()) return jsonResult;\n\n const parsed = x402scanResponseSchema.safeParse(jsonResult.value);\n if (!parsed.success) {\n return err('register', surface, {\n cause: 'x402scan_parse' as const,\n message: 'Invalid x402scan response',\n });\n }\n\n return ok(parsed.data);\n}\n\nasync function registerMppscan(url: string, options: RegisterOptions) {\n const { surface, wallets, flags } = options;\n\n const fetchResult = await executeFetch(\n {\n url: MPPSCAN_URL,\n method: RequestMethod.POST,\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ url }),\n },\n { surface, wallets, flags, params: {} }\n );\n\n if (fetchResult.isErr()) return fetchResult;\n\n const { response } = fetchResult.value;\n if (!response.ok) {\n return err('register', surface, {\n cause: 'mppscan_http' as const,\n message: `mppscan returned ${response.status} ${response.statusText}`,\n });\n }\n\n const text = await response.text();\n const lines = text.trim().split('\\n');\n for (let i = lines.length - 1; i >= 0; i--) {\n const lineResult = safeParseJson(surface, lines[i]!);\n if (lineResult.isErr()) continue;\n const parsed = mppscanDoneSchema.safeParse(lineResult.value);\n if (parsed.success) return ok(parsed.data);\n }\n\n return err('register', surface, {\n cause: 'mppscan_parse' as const,\n message: 'No done message in mppscan response',\n });\n}\n\nexport async function registerOrigin(\n input: RegisterInput,\n options: RegisterOptions\n) {\n const url = ensureProtocol(input.url);\n\n const [x402Result, mppResult] = await Promise.all([\n registerX402Scan(url, options),\n registerMppscan(url, options),\n ]);\n\n if (x402Result.isErr() && mppResult.isErr()) {\n return err('register', options.surface, {\n cause: 'register_failed' as const,\n message: `Both registries failed. x402scan: ${x402Result.error.message}. mppscan: ${mppResult.error.message}`,\n });\n }\n\n return ok({\n x402scan: x402Result.isOk()\n ? x402Result.value\n : { success: false as const, error: x402Result.error.message },\n mppscan: mppResult.isOk()\n ? mppResult.value\n : { success: false as const, error: mppResult.error.message },\n });\n}\n","import {\n successResponse,\n fromNeverthrowError,\n outputAndExit,\n} from '@/cli/output';\n\nimport { registerOrigin } from '@/operations/register';\nimport { getWalletOrExit } from '../lib/get-wallet-or-exit';\n\nimport type { RegisterInput } from '@/operations/register';\nimport type { Command } from '@/types';\n\nconst SURFACE = 'cli:register';\n\nexport const registerCommand: Command<RegisterInput> = async args => {\n const wallets = await getWalletOrExit(args);\n\n const result = await registerOrigin(\n { url: args.url },\n { surface: SURFACE, wallets, flags: args }\n );\n\n if (result.isErr()) {\n return outputAndExit(fromNeverthrowError(result), args);\n }\n\n return outputAndExit(successResponse(result.value), args);\n};\n"],"mappings":"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","names":[]}
@@ -1,23 +1,21 @@
1
1
  import {
2
2
  submitErrorReport
3
- } from "./chunk-23OVF3MX.js";
4
- import "./chunk-X5AS5G23.js";
3
+ } from "./chunk-5JBG33QY.js";
4
+ import "./chunk-WRMSVC2R.js";
5
+ import "./chunk-PBVLTOFS.js";
5
6
  import {
6
7
  getWalletOrExit
7
- } from "./chunk-QOYH6AOG.js";
8
- import "./chunk-HFEYSQRZ.js";
9
- import "./chunk-LNQRIXFK.js";
10
- import "./chunk-Y4VZACTC.js";
11
- import "./chunk-VDBUUHJF.js";
12
- import "./chunk-ITCDZXBZ.js";
13
- import "./chunk-QZBSRYSW.js";
14
- import "./chunk-NROPRHIC.js";
8
+ } from "./chunk-7AT3NXJ2.js";
9
+ import "./chunk-F3KGAMIA.js";
10
+ import "./chunk-KVSTJRSJ.js";
15
11
  import {
16
12
  fromNeverthrowError,
17
13
  outputAndExit,
18
14
  successResponse
19
15
  } from "./chunk-7EBJ4BCH.js";
20
- import "./chunk-C7KWYVS3.js";
16
+ import "./chunk-QZCSZB7E.js";
17
+ import "./chunk-YWNBUUBR.js";
18
+ import "./chunk-ITCDZXBZ.js";
21
19
 
22
20
  // src/cli/commands/report-error.ts
23
21
  var SURFACE = "cli:report-error";
@@ -34,4 +32,4 @@ var reportErrorCommand = async (args) => {
34
32
  export {
35
33
  reportErrorCommand
36
34
  };
37
- //# sourceMappingURL=report-error-F44RFQ54.js.map
35
+ //# sourceMappingURL=report-error-D3RRKDEC.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/commands/report-error.ts"],"sourcesContent":["import {\n successResponse,\n fromNeverthrowError,\n outputAndExit,\n} from '@/cli/output';\n\nimport { submitErrorReport } from '@/operations/report-error';\nimport { getWalletOrExit } from '../lib/get-wallet-or-exit';\n\nimport type { Command } from '@/types';\nimport type { ErrorReportInput } from '@/operations/report-error';\n\nconst SURFACE = 'cli:report-error';\n\nexport const reportErrorCommand: Command<ErrorReportInput> = async args => {\n const {\n evm: { address },\n } = await getWalletOrExit(args);\n\n const result = await submitErrorReport(SURFACE, args, address, args.dev);\n\n if (result.isErr()) {\n return outputAndExit(fromNeverthrowError(result), args);\n }\n\n return outputAndExit(successResponse(result.value), args);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAYA,IAAM,UAAU;AAET,IAAM,qBAAgD,OAAM,SAAQ;AACzE,QAAM;AAAA,IACJ,KAAK,EAAE,QAAQ;AAAA,EACjB,IAAI,MAAM,gBAAgB,IAAI;AAE9B,QAAM,SAAS,MAAM,kBAAkB,SAAS,MAAM,SAAS,KAAK,GAAG;AAEvE,MAAI,OAAO,MAAM,GAAG;AAClB,WAAO,cAAc,oBAAoB,MAAM,GAAG,IAAI;AAAA,EACxD;AAEA,SAAO,cAAc,gBAAgB,OAAO,KAAK,GAAG,IAAI;AAC1D;","names":[]}
1
+ {"version":3,"sources":["../../src/cli/commands/report-error.ts"],"sourcesContent":["import {\n successResponse,\n fromNeverthrowError,\n outputAndExit,\n} from '@/cli/output';\n\nimport { submitErrorReport } from '@/operations/report-error';\nimport { getWalletOrExit } from '../lib/get-wallet-or-exit';\n\nimport type { Command } from '@/types';\nimport type { ErrorReportInput } from '@/operations/report-error';\n\nconst SURFACE = 'cli:report-error';\n\nexport const reportErrorCommand: Command<ErrorReportInput> = async args => {\n const {\n evm: { address },\n } = await getWalletOrExit(args);\n\n const result = await submitErrorReport(SURFACE, args, address, args.dev);\n\n if (result.isErr()) {\n return outputAndExit(fromNeverthrowError(result), args);\n }\n\n return outputAndExit(successResponse(result.value), args);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAYA,IAAM,UAAU;AAET,IAAM,qBAAgD,OAAM,SAAQ;AACzE,QAAM;AAAA,IACJ,KAAK,EAAE,QAAQ;AAAA,EACjB,IAAI,MAAM,gBAAgB,IAAI;AAE9B,QAAM,SAAS,MAAM,kBAAkB,SAAS,MAAM,SAAS,KAAK,GAAG;AAEvE,MAAI,OAAO,MAAM,GAAG;AAClB,WAAO,cAAc,oBAAoB,MAAM,GAAG,IAAI;AAAA,EACxD;AAEA,SAAO,cAAc,gBAAgB,OAAO,KAAK,GAAG,IAAI;AAC1D;","names":[]}
@@ -1,29 +1,28 @@
1
1
  import {
2
2
  search
3
- } from "./chunk-E5SPXKCI.js";
4
- import "./chunk-Q5SPIJGE.js";
5
- import "./chunk-GKYODP7W.js";
3
+ } from "./chunk-UBVHQSSW.js";
4
+ import "./chunk-X2JUL4S3.js";
5
+ import "./chunk-IPBR36VR.js";
6
+ import "./chunk-JX2XE6FD.js";
6
7
  import "./chunk-IKPLMFAK.js";
7
8
  import "./chunk-LNJIXYCU.js";
8
- import "./chunk-DJLERI6R.js";
9
+ import "./chunk-MYWE3P7R.js";
10
+ import "./chunk-PBVLTOFS.js";
9
11
  import {
10
12
  getWalletOrExit
11
- } from "./chunk-QOYH6AOG.js";
12
- import "./chunk-HFEYSQRZ.js";
13
+ } from "./chunk-7AT3NXJ2.js";
14
+ import "./chunk-F3KGAMIA.js";
13
15
  import "./chunk-NPJV7AMV.js";
14
- import "./chunk-LNQRIXFK.js";
15
- import "./chunk-Y4VZACTC.js";
16
- import "./chunk-EMQMCXIC.js";
17
- import "./chunk-VDBUUHJF.js";
18
- import "./chunk-ITCDZXBZ.js";
19
- import "./chunk-QZBSRYSW.js";
20
- import "./chunk-NROPRHIC.js";
16
+ import "./chunk-KVSTJRSJ.js";
21
17
  import {
22
18
  errorResponse,
23
19
  outputAndExit,
24
20
  successResponse
25
21
  } from "./chunk-7EBJ4BCH.js";
26
- import "./chunk-C7KWYVS3.js";
22
+ import "./chunk-QZCSZB7E.js";
23
+ import "./chunk-TTAO2EJK.js";
24
+ import "./chunk-YWNBUUBR.js";
25
+ import "./chunk-ITCDZXBZ.js";
27
26
 
28
27
  // src/cli/commands/search.ts
29
28
  var SURFACE = "cli:search";
@@ -49,4 +48,4 @@ var searchCommand = async (input) => {
49
48
  export {
50
49
  searchCommand
51
50
  };
52
- //# sourceMappingURL=search-WTPHS4A3.js.map
51
+ //# sourceMappingURL=search-G25PLCS2.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/commands/search.ts"],"sourcesContent":["import { successResponse, errorResponse, outputAndExit } from '@/cli/output';\n\nimport { search } from '@/operations/search';\nimport { getWalletOrExit } from '../lib/get-wallet-or-exit';\n\nimport type { Command } from '@/types';\nimport type { SearchInput } from '@/operations/search';\n\nconst SURFACE = 'cli:search';\n\nexport const searchCommand: Command<SearchInput> = async input => {\n const wallets = await getWalletOrExit(input);\n\n const result = await search(\n { query: input.query },\n { surface: SURFACE, wallets, flags: input }\n );\n\n if (!result.success) {\n return outputAndExit(\n errorResponse({\n code: 'GENERAL_ERROR',\n message: result.message,\n surface: SURFACE,\n cause: result.cause,\n }),\n input\n );\n }\n\n return outputAndExit(successResponse(result), input);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,IAAM,UAAU;AAET,IAAM,gBAAsC,OAAM,UAAS;AAChE,QAAM,UAAU,MAAM,gBAAgB,KAAK;AAE3C,QAAM,SAAS,MAAM;AAAA,IACnB,EAAE,OAAO,MAAM,MAAM;AAAA,IACrB,EAAE,SAAS,SAAS,SAAS,OAAO,MAAM;AAAA,EAC5C;AAEA,MAAI,CAAC,OAAO,SAAS;AACnB,WAAO;AAAA,MACL,cAAc;AAAA,QACZ,MAAM;AAAA,QACN,SAAS,OAAO;AAAA,QAChB,SAAS;AAAA,QACT,OAAO,OAAO;AAAA,MAChB,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAEA,SAAO,cAAc,gBAAgB,MAAM,GAAG,KAAK;AACrD;","names":[]}
1
+ {"version":3,"sources":["../../src/cli/commands/search.ts"],"sourcesContent":["import { successResponse, errorResponse, outputAndExit } from '@/cli/output';\n\nimport { search } from '@/operations/search';\nimport { getWalletOrExit } from '../lib/get-wallet-or-exit';\n\nimport type { Command } from '@/types';\nimport type { SearchInput } from '@/operations/search';\n\nconst SURFACE = 'cli:search';\n\nexport const searchCommand: Command<SearchInput> = async input => {\n const wallets = await getWalletOrExit(input);\n\n const result = await search(\n { query: input.query },\n { surface: SURFACE, wallets, flags: input }\n );\n\n if (!result.success) {\n return outputAndExit(\n errorResponse({\n code: 'GENERAL_ERROR',\n message: result.message,\n surface: SURFACE,\n cause: result.cause,\n }),\n input\n );\n }\n\n return outputAndExit(successResponse(result), input);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,IAAM,UAAU;AAET,IAAM,gBAAsC,OAAM,UAAS;AAChE,QAAM,UAAU,MAAM,gBAAgB,KAAK;AAE3C,QAAM,SAAS,MAAM;AAAA,IACnB,EAAE,OAAO,MAAM,MAAM;AAAA,IACrB,EAAE,SAAS,SAAS,SAAS,OAAO,MAAM;AAAA,EAC5C;AAEA,MAAI,CAAC,OAAO,SAAS;AACnB,WAAO;AAAA,MACL,cAAc;AAAA,QACZ,MAAM;AAAA,QACN,SAAS,OAAO;AAAA,QAChB,SAAS;AAAA,QACT,OAAO,OAAO;AAAA,MAChB,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAEA,SAAO,cAAc,gBAAgB,MAAM,GAAG,KAAK;AACrD;","names":[]}
@@ -1,77 +1,76 @@
1
1
  import {
2
2
  redeemInviteCode
3
- } from "./chunk-DPKUB6GL.js";
3
+ } from "./chunk-AWFBYDYO.js";
4
4
  import {
5
5
  submitErrorReport
6
- } from "./chunk-23OVF3MX.js";
6
+ } from "./chunk-5JBG33QY.js";
7
7
  import {
8
8
  bridge,
9
9
  bridgeSchema
10
- } from "./chunk-EJDPIURX.js";
10
+ } from "./chunk-IL5RGDIX.js";
11
11
  import {
12
12
  loadUserOrigins
13
- } from "./chunk-TX4UYXJO.js";
14
- import "./chunk-X5AS5G23.js";
13
+ } from "./chunk-YIU364NZ.js";
14
+ import "./chunk-WRMSVC2R.js";
15
15
  import {
16
16
  checkEndpoint
17
- } from "./chunk-DFHVSUHX.js";
17
+ } from "./chunk-5CMVFNXO.js";
18
18
  import {
19
19
  coreRequestSchema,
20
20
  fetchShape
21
- } from "./chunk-BQRFNAMV.js";
21
+ } from "./chunk-VX6PPHSN.js";
22
22
  import {
23
23
  getBalances,
24
24
  listAccountsWithBalances
25
- } from "./chunk-TVSACMMH.js";
26
- import "./chunk-6XGAIMNK.js";
25
+ } from "./chunk-KPJJSNZO.js";
26
+ import "./chunk-ISF2WVEZ.js";
27
27
  import {
28
28
  search,
29
29
  searchSchema
30
- } from "./chunk-E5SPXKCI.js";
30
+ } from "./chunk-UBVHQSSW.js";
31
+ import {
32
+ discoverResources,
33
+ discoverResourcesSchema
34
+ } from "./chunk-UMYAGSWZ.js";
35
+ import {
36
+ DESCRIPTIONS,
37
+ TOOL_PARAMS,
38
+ buildServerInstructions
39
+ } from "./chunk-X2JUL4S3.js";
31
40
  import {
32
41
  executeFetch
33
- } from "./chunk-Q5SPIJGE.js";
42
+ } from "./chunk-IPBR36VR.js";
34
43
  import {
35
44
  DEFAULT_MAX_AMOUNT,
36
45
  getSettings,
37
46
  setSettings
38
- } from "./chunk-GKYODP7W.js";
47
+ } from "./chunk-JX2XE6FD.js";
39
48
  import "./chunk-IKPLMFAK.js";
40
49
  import {
41
50
  RequestMethod
42
51
  } from "./chunk-LNJIXYCU.js";
43
- import "./chunk-DJLERI6R.js";
52
+ import "./chunk-MYWE3P7R.js";
53
+ import {
54
+ fetchHttpErr,
55
+ isFetchError,
56
+ safeParseResponse
57
+ } from "./chunk-PBVLTOFS.js";
44
58
  import {
45
59
  getWallet
46
- } from "./chunk-HFEYSQRZ.js";
60
+ } from "./chunk-F3KGAMIA.js";
47
61
  import "./chunk-NPJV7AMV.js";
48
62
  import {
49
63
  safeStringifyJson
50
- } from "./chunk-LNQRIXFK.js";
51
- import {
52
- discoverResources,
53
- discoverResourcesSchema
54
- } from "./chunk-HOGMCHWI.js";
64
+ } from "./chunk-KVSTJRSJ.js";
65
+ import "./chunk-FB5CMO3J.js";
55
66
  import {
56
67
  log
57
- } from "./chunk-Y4VZACTC.js";
58
- import {
59
- DESCRIPTIONS,
60
- TOOL_PARAMS,
61
- buildServerInstructions
62
- } from "./chunk-EMQMCXIC.js";
63
- import "./chunk-VDBUUHJF.js";
64
- import "./chunk-ITCDZXBZ.js";
65
- import {
66
- fetchHttpErr,
67
- isFetchError,
68
- safeParseResponse
69
- } from "./chunk-QZBSRYSW.js";
70
- import "./chunk-NROPRHIC.js";
71
- import "./chunk-FB5CMO3J.js";
68
+ } from "./chunk-QZCSZB7E.js";
69
+ import "./chunk-TTAO2EJK.js";
72
70
  import {
73
71
  resultFromPromise
74
- } from "./chunk-C7KWYVS3.js";
72
+ } from "./chunk-YWNBUUBR.js";
73
+ import "./chunk-ITCDZXBZ.js";
75
74
 
76
75
  // src/server/index.ts
77
76
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
@@ -683,7 +682,7 @@ import { dirname, join } from "path";
683
682
  import { fileURLToPath } from "url";
684
683
  function getVersion() {
685
684
  if (true) {
686
- return "0.13.1";
685
+ return "0.13.2";
687
686
  }
688
687
  const __dirname2 = dirname(fileURLToPath(import.meta.url));
689
688
  const pkg = JSON.parse(
@@ -749,4 +748,4 @@ var startServer = async (flags) => {
749
748
  export {
750
749
  startServer
751
750
  };
752
- //# sourceMappingURL=server-BR4W2YCH.js.map
751
+ //# sourceMappingURL=server-KWXWCPIO.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/server/index.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/shared/request/schemas/mcp.ts","../../src/server/tools/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/tools/bridge.ts","../../src/server/tools/search.ts","../../src/server/lib/version.ts"],"sourcesContent":["import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\n\nimport { registerFetchTool } from './tools/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';\nimport { registerBridgeTool } from './tools/bridge';\nimport { registerSearchTool } from './tools/search';\n\nimport { MCP_VERSION } from './lib/version';\n\nimport { log } from '@/shared/log';\nimport { redeemInviteCode } from '@/shared/redeem-invite';\n\nimport { buildServerInstructions } from '@/shared/descriptions';\nimport { loadUserOrigins } from '@/shared/user-origins';\nimport { getWallet } from '@/wallet';\n\nimport type { Command } from '@/types';\n\nexport const startServer: Command = async flags => {\n log.info('Starting agentcash...');\n\n const { invite, sessionId } = flags;\n\n const walletResult = await getWallet();\n\n if (walletResult.isErr()) {\n log.error(JSON.stringify(walletResult.error, null, 2));\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('startServer', { code }, flags, wallets);\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 instructions: serverInstructions,\n }\n );\n\n const props = {\n server,\n wallets,\n flags,\n sessionId,\n };\n\n registerFetchTool(props);\n registerWalletTools(props);\n registerCheckEndpointTool(props);\n registerRedeemInviteTool(props);\n registerDiscoveryTools(server);\n registerTelemetryTools(props);\n registerSettingsTools(props);\n registerBridgeTool(props);\n registerSearchTool(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 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 { JsonStringifyValue } 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: JsonStringifyValue,\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 {\n JsonStringifyObject,\n JsonStringifyValue,\n} 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: JsonStringifyValue): 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 = (\n data: JsonStringifyObject\n): 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?: JsonStringifyValue\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 z from 'zod';\n\nimport type { JsonValue } from '@/shared/neverthrow/json/types';\nimport { coreRequestSchema, fetchShape } from './core';\n\nconst jsonValueSchema: z.ZodType<\n string | number | boolean | null | JsonValue[] | Record<string, JsonValue>\n> = z.lazy(() =>\n z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.array(jsonValueSchema),\n z.record(z.string(), jsonValueSchema),\n ])\n);\n\nexport const mcpBodySchema = z\n .union([\n z\n .string()\n .describe(\n 'Raw request body string. Passed through to the underlying fetch call as-is.'\n ),\n jsonValueSchema\n .transform(json => JSON.stringify(json))\n .describe('JSON object to be sent as the request body'),\n ])\n .optional()\n .describe(\n 'Request body. Can be a string or an object that will be stringified.'\n );\n\nexport const mcpRequestSchema = coreRequestSchema.extend({\n body: mcpBodySchema,\n headers: z\n .record(z.string(), z.string())\n .optional()\n .default({})\n .transform(headers =>\n Object.fromEntries(\n Object.entries(headers).map(([key, value]) => [key, value.trim()])\n )\n )\n .describe('Additional headers to include as a key-value pair'),\n});\n\nexport const mcpFetchRequestSchema = mcpRequestSchema.extend(fetchShape);\n","import { safeParseResponse } from '@/shared/neverthrow/fetch';\nimport { executeFetch } from '@/operations/fetch';\n\nimport {\n mcpError,\n mcpErrorFetch,\n mcpSuccessResponse,\n safeHandler,\n} from './response';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\nimport { mcpFetchRequestSchema } from '@/shared/request/schemas/mcp';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst TOOL_NAME = 'fetch';\n\nexport const registerFetchTool: RegisterTools = props => {\n const { server, wallets, flags } = props;\n\n server.registerTool(\n TOOL_NAME,\n {\n title: DESCRIPTIONS.fetch.mcp,\n description: DESCRIPTIONS.fetch.mcp,\n inputSchema: mcpFetchRequestSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async input => {\n const fetchResult = await executeFetch(input, {\n surface: TOOL_NAME,\n wallets,\n flags,\n params: input,\n });\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(TOOL_NAME, response);\n }\n\n const parseResponseResult = await safeParseResponse(TOOL_NAME, response);\n\n if (parseResponseResult.isErr()) {\n return mcpError(parseResponseResult);\n }\n\n return mcpSuccessResponse(\n parseResponseResult.value,\n paymentInfo ?? undefined\n );\n })\n );\n};\n","import { getBalances, listAccountsWithBalances } from '@/operations/wallet';\n\nimport { mcpSuccessStructuredJson } from './response';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nexport const registerWalletTools: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n const getBalanceToolName = 'get_balance';\n server.registerTool(\n getBalanceToolName,\n {\n title: 'Get Balance',\n description: DESCRIPTIONS.getBalance.mcp,\n },\n async () => {\n const result = await getBalances(getBalanceToolName, wallets, flags);\n return mcpSuccessStructuredJson({\n balance: result.totalBalance,\n });\n }\n );\n\n const listAccountsToolName = 'list_accounts';\n\n server.registerTool(\n listAccountsToolName,\n {\n title: 'Get Accounts',\n description: DESCRIPTIONS.listAccounts.mcp,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async () => {\n const result = await listAccountsWithBalances(\n listAccountsToolName,\n wallets,\n flags\n );\n return mcpSuccessStructuredJson(result);\n }\n );\n};\n","import { mcpSuccessJson, safeHandler } from './response';\n\nimport { log } from '@/shared/log';\nimport { checkEndpoint } from '@/operations/check-endpoint';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport { mcpRequestSchema, mcpBodySchema } from '@/shared/request/schemas/mcp';\n\nimport type { RegisterTools } from '@/server/types';\nimport { RequestMethod } from '@/shared/request/types';\nimport z from 'zod';\n\nconst toolName = 'check_endpoint_schema';\n\nexport const registerCheckEndpointTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n title: 'Check Endpoint Schema',\n description: DESCRIPTIONS.checkEndpointSchema.mcp,\n inputSchema: mcpRequestSchema.extend({\n method: z\n .enum(RequestMethod)\n .optional()\n .describe(TOOL_PARAMS.checkEndpointSchema.method),\n body: mcpBodySchema.describe(TOOL_PARAMS.checkEndpointSchema.body),\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.body,\n });\n\n const result = await checkEndpoint(toolName, input, { wallets, flags });\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 return mcpSuccessJson({\n url: input.url,\n results: result.advisories,\n });\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';\nimport { Network } from '@agentcash/networks';\n\nconst SURFACE = 'server:redeem-invite';\n\nexport const registerRedeemInviteTool: RegisterTools = ({\n server,\n wallets,\n flags,\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 args => {\n const result = await redeemInviteCode(\n SURFACE,\n { code: args.code },\n flags,\n wallets\n );\n\n if (result.isErr()) {\n return mcpError(result, { isError: true });\n }\n\n const { amount, txHash, solanaTxHash, network } = result.value;\n const effectiveTxHash = solanaTxHash ?? txHash;\n const explorerUrl =\n solanaTxHash || network === Network.SOLANA\n ? `https://solscan.io/tx/${effectiveTxHash}`\n : `https://basescan.org/tx/${effectiveTxHash}`;\n\n return mcpSuccessStructuredJson({\n redeemed: true,\n amount: `${amount} USDC`,\n txHash: effectiveTxHash,\n explorerUrl,\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.evm.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(result.value);\n }\n );\n};\n","import { resultFromPromise } from '@agentcash/neverthrow';\n\nimport { log } from '@/shared/log';\nimport {\n discoverResources,\n discoverResourcesSchema,\n} from '@/operations/discover';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport { mcpError, mcpSuccessJson, safeHandler } from './response';\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\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: discoverResourcesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async args => {\n log.info(`Discovering resources for: ${args.url}`);\n\n const discoverResult = await resultFromPromise(\n 'discover',\n toolName,\n discoverResources(toolName, args),\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 (result.found) {\n return mcpSuccessJson(result);\n }\n\n if (result.cause === 'not_found') {\n return mcpSuccessJson({\n found: false,\n origin: result.origin,\n error: `No OpenAPI spec found. Tried: ${OPENAPI_TRIED_PATHS}`,\n });\n }\n\n return mcpSuccessJson({\n found: false,\n cause: result.cause,\n error: result.message ?? `Failed to fetch OpenAPI spec`,\n hint:\n hintMap[result.cause] ??\n `The server returned an unparseable response. Tried: ${OPENAPI_TRIED_PATHS}`,\n });\n })\n );\n}\n\nconst hintMap = {\n timeout: 'The server may be slow or unreachable. Try again later.',\n network:\n 'Could not reach the server. Check the network connection and try again.',\n invalid_input: 'Invalid input. Please check the input and try again.',\n};\n","import { z } from 'zod';\n\nimport { getSettings, setSettings } from '@/shared/settings';\nimport { DEFAULT_MAX_AMOUNT } from '@/operations/fetch/types';\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(mcpSuccessStructuredJson(settings));\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(mcpSuccessStructuredJson(settings));\n })\n );\n};\n","import { mcpError, mcpSuccessJson, safeHandler } from './response';\n\nimport { DESCRIPTIONS } from '@/shared/descriptions';\nimport type { RegisterTools } from '@/server/types';\nimport { bridge, bridgeSchema } from '@/operations/bridge';\n\nconst toolName = DESCRIPTIONS.bridge.toolNames.mcp;\n\nexport const registerBridgeTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n title: DESCRIPTIONS.bridge.title,\n description: DESCRIPTIONS.bridge.mcp,\n inputSchema: bridgeSchema,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n },\n },\n safeHandler(async input => {\n const result = await bridge({ ...input, ...flags }, wallets);\n\n if (result.isErr()) {\n return mcpError(result);\n }\n\n return mcpSuccessJson(result.value);\n })\n );\n};\n","import { resultFromPromise } from '@agentcash/neverthrow';\n\nimport { log } from '@/shared/log';\nimport { search, searchSchema } from '@/operations/search';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport {\n mcpError,\n mcpErrorJson,\n mcpSuccessJson,\n safeHandler,\n} from './response';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst TOOL_NAME = 'search';\n\nexport const registerSearchTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n TOOL_NAME,\n {\n title: 'Search APIs',\n description: DESCRIPTIONS.search.mcp,\n inputSchema: searchSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async args => {\n log.info(`[search] query: ${args.query}`);\n\n const searchResult = await resultFromPromise(\n 'search',\n TOOL_NAME,\n search(args, { surface: TOOL_NAME, wallets, flags }),\n e => ({\n cause: 'search' as const,\n message: e instanceof Error ? e.message : String(e),\n })\n );\n\n if (searchResult.isErr()) {\n return mcpError(searchResult);\n }\n\n const result = searchResult.value;\n\n if (!result.success) {\n return mcpErrorJson({\n error: result.message,\n cause: result.cause,\n details: result.details,\n });\n }\n\n return mcpSuccessJson({\n success: result.success,\n results: result.results,\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","z","z","z","toolName","z","toolName","z","z","toolName","TOOL_NAME","__dirname"]}
1
+ {"version":3,"sources":["../../src/server/index.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/shared/request/schemas/mcp.ts","../../src/server/tools/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/tools/bridge.ts","../../src/server/tools/search.ts","../../src/server/lib/version.ts"],"sourcesContent":["import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\n\nimport { registerFetchTool } from './tools/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';\nimport { registerBridgeTool } from './tools/bridge';\nimport { registerSearchTool } from './tools/search';\n\nimport { MCP_VERSION } from './lib/version';\n\nimport { log } from '@/shared/log';\nimport { redeemInviteCode } from '@/shared/redeem-invite';\n\nimport { buildServerInstructions } from '@/shared/descriptions';\nimport { loadUserOrigins } from '@/shared/user-origins';\nimport { getWallet } from '@/wallet';\n\nimport type { Command } from '@/types';\n\nexport const startServer: Command = async flags => {\n log.info('Starting agentcash...');\n\n const { invite, sessionId } = flags;\n\n const walletResult = await getWallet();\n\n if (walletResult.isErr()) {\n log.error(JSON.stringify(walletResult.error, null, 2));\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('startServer', { code }, flags, wallets);\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 instructions: serverInstructions,\n }\n );\n\n const props = {\n server,\n wallets,\n flags,\n sessionId,\n };\n\n registerFetchTool(props);\n registerWalletTools(props);\n registerCheckEndpointTool(props);\n registerRedeemInviteTool(props);\n registerDiscoveryTools(server);\n registerTelemetryTools(props);\n registerSettingsTools(props);\n registerBridgeTool(props);\n registerSearchTool(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 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 { JsonStringifyValue } 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: JsonStringifyValue,\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 {\n JsonStringifyObject,\n JsonStringifyValue,\n} 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: JsonStringifyValue): 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 = (\n data: JsonStringifyObject\n): 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?: JsonStringifyValue\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 z from 'zod';\n\nimport type { JsonValue } from '@/shared/neverthrow/json/types';\nimport { coreRequestSchema, fetchShape } from './core';\n\nconst jsonValueSchema: z.ZodType<\n string | number | boolean | null | JsonValue[] | Record<string, JsonValue>\n> = z.lazy(() =>\n z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.array(jsonValueSchema),\n z.record(z.string(), jsonValueSchema),\n ])\n);\n\nexport const mcpBodySchema = z\n .union([\n z\n .string()\n .describe(\n 'Raw request body string. Passed through to the underlying fetch call as-is.'\n ),\n jsonValueSchema\n .transform(json => JSON.stringify(json))\n .describe('JSON object to be sent as the request body'),\n ])\n .optional()\n .describe(\n 'Request body. Can be a string or an object that will be stringified.'\n );\n\nexport const mcpRequestSchema = coreRequestSchema.extend({\n body: mcpBodySchema,\n headers: z\n .record(z.string(), z.string())\n .optional()\n .default({})\n .transform(headers =>\n Object.fromEntries(\n Object.entries(headers).map(([key, value]) => [key, value.trim()])\n )\n )\n .describe('Additional headers to include as a key-value pair'),\n});\n\nexport const mcpFetchRequestSchema = mcpRequestSchema.extend(fetchShape);\n","import { safeParseResponse } from '@/shared/neverthrow/fetch';\nimport { executeFetch } from '@/operations/fetch';\n\nimport {\n mcpError,\n mcpErrorFetch,\n mcpSuccessResponse,\n safeHandler,\n} from './response';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\nimport { mcpFetchRequestSchema } from '@/shared/request/schemas/mcp';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst TOOL_NAME = 'fetch';\n\nexport const registerFetchTool: RegisterTools = props => {\n const { server, wallets, flags } = props;\n\n server.registerTool(\n TOOL_NAME,\n {\n title: DESCRIPTIONS.fetch.mcp,\n description: DESCRIPTIONS.fetch.mcp,\n inputSchema: mcpFetchRequestSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async input => {\n const fetchResult = await executeFetch(input, {\n surface: TOOL_NAME,\n wallets,\n flags,\n params: input,\n });\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(TOOL_NAME, response);\n }\n\n const parseResponseResult = await safeParseResponse(TOOL_NAME, response);\n\n if (parseResponseResult.isErr()) {\n return mcpError(parseResponseResult);\n }\n\n return mcpSuccessResponse(\n parseResponseResult.value,\n paymentInfo ?? undefined\n );\n })\n );\n};\n","import { getBalances, listAccountsWithBalances } from '@/operations/wallet';\n\nimport { mcpSuccessStructuredJson } from './response';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nexport const registerWalletTools: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n const getBalanceToolName = 'get_balance';\n server.registerTool(\n getBalanceToolName,\n {\n title: 'Get Balance',\n description: DESCRIPTIONS.getBalance.mcp,\n },\n async () => {\n const result = await getBalances(getBalanceToolName, wallets, flags);\n return mcpSuccessStructuredJson({\n balance: result.totalBalance,\n });\n }\n );\n\n const listAccountsToolName = 'list_accounts';\n\n server.registerTool(\n listAccountsToolName,\n {\n title: 'Get Accounts',\n description: DESCRIPTIONS.listAccounts.mcp,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async () => {\n const result = await listAccountsWithBalances(\n listAccountsToolName,\n wallets,\n flags\n );\n return mcpSuccessStructuredJson(result);\n }\n );\n};\n","import { mcpSuccessJson, safeHandler } from './response';\n\nimport { log } from '@/shared/log';\nimport { checkEndpoint } from '@/operations/check-endpoint';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport { mcpRequestSchema, mcpBodySchema } from '@/shared/request/schemas/mcp';\n\nimport type { RegisterTools } from '@/server/types';\nimport { RequestMethod } from '@/shared/request/types';\nimport z from 'zod';\n\nconst toolName = 'check_endpoint_schema';\n\nexport const registerCheckEndpointTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n title: 'Check Endpoint Schema',\n description: DESCRIPTIONS.checkEndpointSchema.mcp,\n inputSchema: mcpRequestSchema.extend({\n method: z\n .enum(RequestMethod)\n .optional()\n .describe(TOOL_PARAMS.checkEndpointSchema.method),\n body: mcpBodySchema.describe(TOOL_PARAMS.checkEndpointSchema.body),\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.body,\n });\n\n const result = await checkEndpoint(toolName, input, { wallets, flags });\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 return mcpSuccessJson({\n url: input.url,\n results: result.advisories,\n });\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';\nimport { Network } from '@agentcash/networks';\n\nconst SURFACE = 'server:redeem-invite';\n\nexport const registerRedeemInviteTool: RegisterTools = ({\n server,\n wallets,\n flags,\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 args => {\n const result = await redeemInviteCode(\n SURFACE,\n { code: args.code },\n flags,\n wallets\n );\n\n if (result.isErr()) {\n return mcpError(result, { isError: true });\n }\n\n const { amount, txHash, solanaTxHash, network } = result.value;\n const effectiveTxHash = solanaTxHash ?? txHash;\n const explorerUrl =\n solanaTxHash || network === Network.SOLANA\n ? `https://solscan.io/tx/${effectiveTxHash}`\n : `https://basescan.org/tx/${effectiveTxHash}`;\n\n return mcpSuccessStructuredJson({\n redeemed: true,\n amount: `${amount} USDC`,\n txHash: effectiveTxHash,\n explorerUrl,\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.evm.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(result.value);\n }\n );\n};\n","import { resultFromPromise } from '@agentcash/neverthrow';\n\nimport { log } from '@/shared/log';\nimport {\n discoverResources,\n discoverResourcesSchema,\n} from '@/operations/discover';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport { mcpError, mcpSuccessJson, safeHandler } from './response';\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\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: discoverResourcesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async args => {\n log.info(`Discovering resources for: ${args.url}`);\n\n const discoverResult = await resultFromPromise(\n 'discover',\n toolName,\n discoverResources(toolName, args),\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 (result.found) {\n return mcpSuccessJson(result);\n }\n\n if (result.cause === 'not_found') {\n return mcpSuccessJson({\n found: false,\n origin: result.origin,\n error: `No OpenAPI spec found. Tried: ${OPENAPI_TRIED_PATHS}`,\n });\n }\n\n return mcpSuccessJson({\n found: false,\n cause: result.cause,\n error: result.message ?? `Failed to fetch OpenAPI spec`,\n hint:\n hintMap[result.cause] ??\n `The server returned an unparseable response. Tried: ${OPENAPI_TRIED_PATHS}`,\n });\n })\n );\n}\n\nconst hintMap = {\n timeout: 'The server may be slow or unreachable. Try again later.',\n network:\n 'Could not reach the server. Check the network connection and try again.',\n invalid_input: 'Invalid input. Please check the input and try again.',\n};\n","import { z } from 'zod';\n\nimport { getSettings, setSettings } from '@/shared/settings';\nimport { DEFAULT_MAX_AMOUNT } from '@/operations/fetch/types';\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(mcpSuccessStructuredJson(settings));\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(mcpSuccessStructuredJson(settings));\n })\n );\n};\n","import { mcpError, mcpSuccessJson, safeHandler } from './response';\n\nimport { DESCRIPTIONS } from '@/shared/descriptions';\nimport type { RegisterTools } from '@/server/types';\nimport { bridge, bridgeSchema } from '@/operations/bridge';\n\nconst toolName = DESCRIPTIONS.bridge.toolNames.mcp;\n\nexport const registerBridgeTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n title: DESCRIPTIONS.bridge.title,\n description: DESCRIPTIONS.bridge.mcp,\n inputSchema: bridgeSchema,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n },\n },\n safeHandler(async input => {\n const result = await bridge({ ...input, ...flags }, wallets);\n\n if (result.isErr()) {\n return mcpError(result);\n }\n\n return mcpSuccessJson(result.value);\n })\n );\n};\n","import { resultFromPromise } from '@agentcash/neverthrow';\n\nimport { log } from '@/shared/log';\nimport { search, searchSchema } from '@/operations/search';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport {\n mcpError,\n mcpErrorJson,\n mcpSuccessJson,\n safeHandler,\n} from './response';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst TOOL_NAME = 'search';\n\nexport const registerSearchTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n TOOL_NAME,\n {\n title: 'Search APIs',\n description: DESCRIPTIONS.search.mcp,\n inputSchema: searchSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async args => {\n log.info(`[search] query: ${args.query}`);\n\n const searchResult = await resultFromPromise(\n 'search',\n TOOL_NAME,\n search(args, { surface: TOOL_NAME, wallets, flags }),\n e => ({\n cause: 'search' as const,\n message: e instanceof Error ? e.message : String(e),\n })\n );\n\n if (searchResult.isErr()) {\n return mcpError(searchResult);\n }\n\n const result = searchResult.value;\n\n if (!result.success) {\n return mcpErrorJson({\n error: result.message,\n cause: result.cause,\n details: result.details,\n });\n }\n\n return mcpSuccessJson({\n success: result.success,\n results: result.results,\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","z","z","z","toolName","z","toolName","z","z","toolName","TOOL_NAME","__dirname"]}
@@ -5,10 +5,10 @@ var serverCommand = async (args) => {
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-BR4W2YCH.js");
8
+ const { startServer } = await import("./server-KWXWCPIO.js");
9
9
  await startServer(args);
10
10
  };
11
11
  export {
12
12
  serverCommand
13
13
  };
14
- //# sourceMappingURL=server-6V4NB65Q.js.map
14
+ //# sourceMappingURL=server-QJNQOPBK.js.map