agentcash 0.8.1 → 0.8.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 (47) hide show
  1. package/dist/cjs/run-server.cjs +167 -37
  2. package/dist/esm/{chunk-YQFK4U62.js → chunk-36KCO2CQ.js} +2 -2
  3. package/dist/esm/{chunk-X4YQNM7D.js → chunk-3WG74L5Z.js} +86 -17
  4. package/dist/esm/chunk-3WG74L5Z.js.map +1 -0
  5. package/dist/esm/{chunk-W7DAJMFQ.js → chunk-4ALGXM6F.js} +11 -4
  6. package/dist/esm/chunk-4ALGXM6F.js.map +1 -0
  7. package/dist/esm/{chunk-ZDDDU5O2.js → chunk-5GVHLIVV.js} +2 -2
  8. package/dist/esm/{chunk-7ZEXMJYJ.js → chunk-B2JUF6FK.js} +3 -3
  9. package/dist/esm/{chunk-6PU3XK6I.js → chunk-CM4BCEDY.js} +2 -2
  10. package/dist/esm/{chunk-6PU3XK6I.js.map → chunk-CM4BCEDY.js.map} +1 -1
  11. package/dist/esm/{chunk-UN3PRLTL.js → chunk-DXPPE7QC.js} +5 -5
  12. package/dist/esm/{chunk-AUDGOEEE.js → chunk-EQTHURHC.js} +4 -4
  13. package/dist/esm/{chunk-AVLTYWSD.js → chunk-FFYCYLF4.js} +6 -6
  14. package/dist/esm/chunk-I7DEUXBL.js +7 -0
  15. package/dist/esm/{chunk-4R52CY5Q.js → chunk-LKZJ456N.js} +2 -2
  16. package/dist/esm/{chunk-OHA3LLUQ.js → chunk-NCBPOUV6.js} +3 -3
  17. package/dist/esm/{chunk-C36IAW7R.js → chunk-NPZ6POPF.js} +3 -3
  18. package/dist/esm/{chunk-TQ4SMW3W.js → chunk-RD4Y3CJX.js} +2 -2
  19. package/dist/esm/{commands-B5TNSXYH.js → commands-ZBVUG2Q5.js} +60 -17
  20. package/dist/esm/commands-ZBVUG2Q5.js.map +1 -0
  21. package/dist/esm/{fund-PRV53MDA.js → fund-IZ2RYDXT.js} +7 -7
  22. package/dist/esm/index.js +61 -24
  23. package/dist/esm/index.js.map +1 -1
  24. package/dist/esm/{install-JQKZJ656.js → install-LUCT7K6W.js} +9 -9
  25. package/dist/esm/lib.js +4 -4
  26. package/dist/esm/{server-HVKLQ3C3.js → server-EH7FWUSW.js} +88 -27
  27. package/dist/esm/server-EH7FWUSW.js.map +1 -0
  28. package/dist/esm/shared/operations/index.js +7 -7
  29. package/package.json +3 -3
  30. package/dist/esm/chunk-W7DAJMFQ.js.map +0 -1
  31. package/dist/esm/chunk-X4YQNM7D.js.map +0 -1
  32. package/dist/esm/chunk-YK5LKPBE.js +0 -7
  33. package/dist/esm/commands-B5TNSXYH.js.map +0 -1
  34. package/dist/esm/server-HVKLQ3C3.js.map +0 -1
  35. /package/dist/esm/{chunk-YQFK4U62.js.map → chunk-36KCO2CQ.js.map} +0 -0
  36. /package/dist/esm/{chunk-ZDDDU5O2.js.map → chunk-5GVHLIVV.js.map} +0 -0
  37. /package/dist/esm/{chunk-7ZEXMJYJ.js.map → chunk-B2JUF6FK.js.map} +0 -0
  38. /package/dist/esm/{chunk-UN3PRLTL.js.map → chunk-DXPPE7QC.js.map} +0 -0
  39. /package/dist/esm/{chunk-AUDGOEEE.js.map → chunk-EQTHURHC.js.map} +0 -0
  40. /package/dist/esm/{chunk-AVLTYWSD.js.map → chunk-FFYCYLF4.js.map} +0 -0
  41. /package/dist/esm/{chunk-YK5LKPBE.js.map → chunk-I7DEUXBL.js.map} +0 -0
  42. /package/dist/esm/{chunk-4R52CY5Q.js.map → chunk-LKZJ456N.js.map} +0 -0
  43. /package/dist/esm/{chunk-OHA3LLUQ.js.map → chunk-NCBPOUV6.js.map} +0 -0
  44. /package/dist/esm/{chunk-C36IAW7R.js.map → chunk-NPZ6POPF.js.map} +0 -0
  45. /package/dist/esm/{chunk-TQ4SMW3W.js.map → chunk-RD4Y3CJX.js.map} +0 -0
  46. /package/dist/esm/{fund-PRV53MDA.js.map → fund-IZ2RYDXT.js.map} +0 -0
  47. /package/dist/esm/{install-JQKZJ656.js.map → install-LUCT7K6W.js.map} +0 -0
package/dist/esm/index.js CHANGED
@@ -3,16 +3,16 @@ import {
3
3
  DESCRIPTIONS,
4
4
  buildServerInstructions,
5
5
  loadUserOrigins
6
- } from "./chunk-W7DAJMFQ.js";
6
+ } from "./chunk-4ALGXM6F.js";
7
7
  import {
8
8
  isMppEnabled
9
- } from "./chunk-YK5LKPBE.js";
9
+ } from "./chunk-I7DEUXBL.js";
10
10
  import "./chunk-KAEAFW3A.js";
11
11
  import {
12
12
  MCP_VERSION
13
- } from "./chunk-TQ4SMW3W.js";
14
- import "./chunk-ZDDDU5O2.js";
15
- import "./chunk-6PU3XK6I.js";
13
+ } from "./chunk-RD4Y3CJX.js";
14
+ import "./chunk-5GVHLIVV.js";
15
+ import "./chunk-CM4BCEDY.js";
16
16
 
17
17
  // src/index.ts
18
18
  import yargs from "yargs";
@@ -86,16 +86,20 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
86
86
  description: "Payment protocol to use",
87
87
  choices: isMppEnabled() ? ["x402", "mpp", "auto"] : ["x402", "auto"],
88
88
  default: "auto"
89
+ }).option("max-amount", {
90
+ type: "number",
91
+ description: "Maximum amount (USD) to pay per request. Aborts if the endpoint requests more. Defaults to $5."
89
92
  }).epilogue(DESCRIPTIONS.fetch.epilogue),
90
93
  async (args) => {
91
- const { fetchCommand } = await import("./commands-B5TNSXYH.js");
94
+ const { fetchCommand } = await import("./commands-ZBVUG2Q5.js");
92
95
  await fetchCommand(
93
96
  {
94
97
  url: args.url,
95
98
  method: args.method,
96
99
  body: args.body,
97
100
  headers: args.headers,
98
- paymentMethod: args.paymentMethod
101
+ paymentMethod: args.paymentMethod,
102
+ maxAmount: args.maxAmount
99
103
  },
100
104
  args
101
105
  );
@@ -123,7 +127,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
123
127
  description: "Additional headers as JSON object"
124
128
  }).epilogue(DESCRIPTIONS.fetchWithAuth.epilogue),
125
129
  async (args) => {
126
- const { fetchAuthCommand } = await import("./commands-B5TNSXYH.js");
130
+ const { fetchAuthCommand } = await import("./commands-ZBVUG2Q5.js");
127
131
  await fetchAuthCommand(
128
132
  {
129
133
  url: args.url,
@@ -156,7 +160,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
156
160
  description: "Additional headers as JSON object"
157
161
  }).epilogue(DESCRIPTIONS.checkEndpointSchema.epilogue),
158
162
  async (args) => {
159
- const { checkCommand } = await import("./commands-B5TNSXYH.js");
163
+ const { checkCommand } = await import("./commands-ZBVUG2Q5.js");
160
164
  await checkCommand(
161
165
  {
162
166
  url: args.url,
@@ -176,7 +180,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
176
180
  demandOption: true
177
181
  }),
178
182
  async (args) => {
179
- const { tryCommand } = await import("./commands-B5TNSXYH.js");
183
+ const { tryCommand } = await import("./commands-ZBVUG2Q5.js");
180
184
  await tryCommand({ url: args.url }, args);
181
185
  }
182
186
  ).command(
@@ -191,7 +195,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
191
195
  description: "Guidance override: true=always include, false=never include, omitted=auto by threshold"
192
196
  }).epilogue(DESCRIPTIONS.discoverApiEndpoints.epilogue),
193
197
  async (args) => {
194
- const { discoverCommand } = await import("./commands-B5TNSXYH.js");
198
+ const { discoverCommand } = await import("./commands-ZBVUG2Q5.js");
195
199
  await discoverCommand(
196
200
  { url: args.url, includeGuidance: args.includeGuidance },
197
201
  args
@@ -206,7 +210,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
206
210
  demandOption: true
207
211
  }),
208
212
  async (args) => {
209
- const { registerCommand } = await import("./commands-B5TNSXYH.js");
213
+ const { registerCommand } = await import("./commands-ZBVUG2Q5.js");
210
214
  await registerCommand({ url: args.url }, args);
211
215
  }
212
216
  ).command(
@@ -218,7 +222,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
218
222
  demandOption: true
219
223
  }),
220
224
  async (args) => {
221
- const { addSkillCommand } = await import("./commands-B5TNSXYH.js");
225
+ const { addSkillCommand } = await import("./commands-ZBVUG2Q5.js");
222
226
  await addSkillCommand({ url: args.url }, args);
223
227
  }
224
228
  ).command(
@@ -233,7 +237,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
233
237
  demandOption: true
234
238
  }),
235
239
  async (args) => {
236
- const { originsAddCommand } = await import("./commands-B5TNSXYH.js");
240
+ const { originsAddCommand } = await import("./commands-ZBVUG2Q5.js");
237
241
  await originsAddCommand({ url: args.url }, args);
238
242
  }
239
243
  ).command(
@@ -241,7 +245,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
241
245
  "List all registered origins",
242
246
  (yargs3) => yargs3,
243
247
  async (args) => {
244
- const { originsListCommand } = await import("./commands-B5TNSXYH.js");
248
+ const { originsListCommand } = await import("./commands-ZBVUG2Q5.js");
245
249
  originsListCommand({}, args);
246
250
  }
247
251
  ).command(
@@ -253,7 +257,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
253
257
  demandOption: true
254
258
  }),
255
259
  async (args) => {
256
- const { originsRemoveCommand } = await import("./commands-B5TNSXYH.js");
260
+ const { originsRemoveCommand } = await import("./commands-ZBVUG2Q5.js");
257
261
  originsRemoveCommand({ url: args.url }, args);
258
262
  }
259
263
  ).demandCommand(1, "You must specify an origins subcommand").strict(),
@@ -267,7 +271,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
267
271
  description: "The invite code to redeem (optional)"
268
272
  }),
269
273
  async (args) => {
270
- const { onboardCommand } = await import("./commands-B5TNSXYH.js");
274
+ const { onboardCommand } = await import("./commands-ZBVUG2Q5.js");
271
275
  await onboardCommand({ code: args.code ?? args.invite }, args);
272
276
  }
273
277
  ).command(
@@ -278,7 +282,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
278
282
  DESCRIPTIONS.getWalletInfo.cli,
279
283
  (yargs3) => yargs3,
280
284
  async (args) => {
281
- const { walletInfoCommand } = await import("./commands-B5TNSXYH.js");
285
+ const { walletInfoCommand } = await import("./commands-ZBVUG2Q5.js");
282
286
  await walletInfoCommand({}, args);
283
287
  }
284
288
  ).command(
@@ -290,7 +294,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
290
294
  demandOption: true
291
295
  }),
292
296
  async (args) => {
293
- const { walletRedeemCommand } = await import("./commands-B5TNSXYH.js");
297
+ const { walletRedeemCommand } = await import("./commands-ZBVUG2Q5.js");
294
298
  await walletRedeemCommand({ code: args.code }, args);
295
299
  }
296
300
  ).command(
@@ -298,12 +302,45 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
298
302
  "Get wallet address",
299
303
  (yargs3) => yargs3,
300
304
  async (args) => {
301
- const { walletAddressCommand } = await import("./commands-B5TNSXYH.js");
305
+ const { walletAddressCommand } = await import("./commands-ZBVUG2Q5.js");
302
306
  await walletAddressCommand({}, args);
303
307
  }
304
308
  ).demandCommand(1, "You must specify a wallet subcommand").strict(),
305
309
  () => {
306
310
  }
311
+ ).command(
312
+ "settings",
313
+ "View and update user settings",
314
+ (yargs2) => yargs2.command(
315
+ "get",
316
+ "Show current settings",
317
+ (yargs3) => yargs3,
318
+ async (args) => {
319
+ const { settingsGetCommand } = await import("./commands-ZBVUG2Q5.js");
320
+ settingsGetCommand({}, args);
321
+ }
322
+ ).command(
323
+ "set <key> <value>",
324
+ "Update a setting (e.g. settings set maxAmount 10)",
325
+ (yargs3) => yargs3.positional("key", {
326
+ type: "string",
327
+ description: "Setting name (e.g. maxAmount)",
328
+ demandOption: true
329
+ }).positional("value", {
330
+ type: "string",
331
+ description: "Setting value",
332
+ demandOption: true
333
+ }),
334
+ async (args) => {
335
+ const { settingsSetCommand } = await import("./commands-ZBVUG2Q5.js");
336
+ settingsSetCommand(
337
+ { key: args.key, value: args.value },
338
+ args
339
+ );
340
+ }
341
+ ).demandCommand(1, "You must specify a settings subcommand").strict(),
342
+ () => {
343
+ }
307
344
  ).command(
308
345
  "report-error",
309
346
  DESCRIPTIONS.reportError.cli,
@@ -330,7 +367,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
330
367
  description: "Detailed report with context and repro steps"
331
368
  }),
332
369
  async (args) => {
333
- const { reportErrorCommand } = await import("./commands-B5TNSXYH.js");
370
+ const { reportErrorCommand } = await import("./commands-ZBVUG2Q5.js");
334
371
  await reportErrorCommand(
335
372
  {
336
373
  tool: args.tool,
@@ -348,7 +385,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
348
385
  "Start the MCP server (default when no command specified)",
349
386
  (yargs2) => yargs2,
350
387
  async (args) => {
351
- const { serverCommand } = await import("./commands-B5TNSXYH.js");
388
+ const { serverCommand } = await import("./commands-ZBVUG2Q5.js");
352
389
  await serverCommand(args);
353
390
  }
354
391
  ).command(
@@ -361,7 +398,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
361
398
  default: isClaudeCode ? "claude-code" /* ClaudeCode */ : void 0
362
399
  }),
363
400
  async (args) => {
364
- const { installMcpServer } = await import("./install-JQKZJ656.js");
401
+ const { installMcpServer } = await import("./install-LUCT7K6W.js");
365
402
  await installMcpServer(args);
366
403
  }
367
404
  ).command(
@@ -369,7 +406,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
369
406
  "Open the funding page to add USDC to your wallet",
370
407
  (yargs2) => yargs2,
371
408
  async (args) => {
372
- const { fundMcpServer } = await import("./fund-PRV53MDA.js");
409
+ const { fundMcpServer } = await import("./fund-IZ2RYDXT.js");
373
410
  await fundMcpServer(args);
374
411
  }
375
412
  ).example(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\nimport { Clients } from './cli/install/clients';\nimport { isMppEnabled } from '@/shared/mpp-enabled';\nimport { MCP_VERSION } from '@/shared/version';\nimport { DESCRIPTIONS, buildServerInstructions } from '@/shared/descriptions';\nimport { loadUserOrigins } from '@/shared/user-origins';\n\nconst isClaudeCode = Boolean(process.env.CLAUDECODE);\nconst defaultYes = isClaudeCode || Boolean(process.env.CI);\n\nvoid yargs(hideBin(process.argv))\n .scriptName('agentcash')\n .usage('$0 [command] [options]')\n .option('dev', {\n type: 'boolean',\n description: 'Enable dev mode (use localhost endpoints)',\n default: false,\n })\n .option('invite', {\n type: 'string',\n description: 'Invite code to redeem for starter money',\n required: false,\n })\n .option('yes', {\n alias: 'y',\n type: 'boolean',\n description: 'Yes to all prompts',\n default: defaultYes ? true : undefined,\n })\n .option('sessionId', {\n type: 'string',\n description:\n 'Session ID for matching requests (auto-generated if not provided)',\n required: false,\n })\n .option('provider', {\n type: 'string',\n description: 'Provider to use for the MCP server',\n required: false,\n })\n .option('format', {\n type: 'string',\n description:\n 'Output format: json (default for pipes) or pretty (default for TTY)',\n choices: ['json', 'pretty'],\n })\n .option('quiet', {\n alias: 'q',\n type: 'boolean',\n description: 'Suppress stderr output',\n default: false,\n })\n .option('verbose', {\n alias: 'v',\n type: 'boolean',\n description: 'Enable verbose logging (debug output to stderr)',\n default: false,\n })\n .middleware(async argv => {\n // Configure CLI context for shared modules (like logging)\n if (argv.verbose) {\n const { configureCliContext } = await import('@/shared/cli-context');\n configureCliContext({ verbose: true });\n }\n })\n // ============================================================\n // Core CLI Commands (for agent/programmatic use)\n // ============================================================\n .command(\n 'fetch <url>',\n DESCRIPTIONS.fetch.cli,\n yargs =>\n yargs\n .positional('url', {\n type: 'string',\n description: 'The endpoint URL to fetch',\n demandOption: true,\n })\n .option('method', {\n alias: 'm',\n type: 'string',\n description: 'HTTP method',\n choices: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'],\n default: 'GET',\n })\n .option('body', {\n alias: 'b',\n type: 'string',\n description: 'Request body as JSON string',\n })\n .option('headers', {\n alias: 'H',\n type: 'string',\n description: 'Additional headers as JSON object',\n })\n .option('payment-method', {\n alias: 'p',\n type: 'string',\n description: 'Payment protocol to use',\n choices: isMppEnabled() ? ['x402', 'mpp', 'auto'] : ['x402', 'auto'],\n default: 'auto',\n })\n .epilogue(DESCRIPTIONS.fetch.epilogue),\n async args => {\n const { fetchCommand } = await import('@/cli/commands');\n await fetchCommand(\n {\n url: args.url,\n method: args.method,\n body: args.body,\n headers: args.headers,\n paymentMethod: args.paymentMethod,\n },\n args\n );\n }\n )\n .command(\n 'fetch-auth <url>',\n DESCRIPTIONS.fetchWithAuth.cli,\n yargs =>\n yargs\n .positional('url', {\n type: 'string',\n description: 'The endpoint URL to fetch',\n demandOption: true,\n })\n .option('method', {\n alias: 'm',\n type: 'string',\n description: 'HTTP method',\n choices: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'],\n default: 'GET',\n })\n .option('body', {\n alias: 'b',\n type: 'string',\n description: 'Request body as JSON string',\n })\n .option('headers', {\n alias: 'H',\n type: 'string',\n description: 'Additional headers as JSON object',\n })\n .epilogue(DESCRIPTIONS.fetchWithAuth.epilogue),\n async args => {\n const { fetchAuthCommand } = await import('@/cli/commands');\n await fetchAuthCommand(\n {\n url: args.url,\n method: args.method,\n body: args.body,\n headers: args.headers,\n },\n args\n );\n }\n )\n .command(\n 'check <url>',\n DESCRIPTIONS.checkEndpointSchema.cli,\n yargs =>\n yargs\n .positional('url', {\n type: 'string',\n description: 'The endpoint URL to check',\n demandOption: true,\n })\n .option('method', {\n alias: 'm',\n type: 'string',\n description:\n 'HTTP method to check. If omitted, all methods declared in the spec are returned.',\n choices: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'],\n })\n .option('body', {\n alias: 'b',\n type: 'string',\n description: 'Request body as JSON string',\n })\n .option('headers', {\n alias: 'H',\n type: 'string',\n description: 'Additional headers as JSON object',\n })\n .epilogue(DESCRIPTIONS.checkEndpointSchema.epilogue),\n async args => {\n const { checkCommand } = await import('@/cli/commands');\n await checkCommand(\n {\n url: args.url,\n method: args.method,\n body: args.body,\n headers: args.headers,\n },\n args\n );\n }\n )\n .command(\n 'try <url>',\n DESCRIPTIONS.try.cli,\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The origin URL to explore',\n demandOption: true,\n }),\n async args => {\n const { tryCommand } = await import('@/cli/commands');\n await tryCommand({ url: args.url }, args);\n }\n )\n .command(\n 'discover <url>',\n DESCRIPTIONS.discoverApiEndpoints.cli,\n yargs =>\n yargs\n .positional('url', {\n type: 'string',\n description: 'The origin URL to discover endpoints from',\n demandOption: true,\n })\n .option('include-guidance', {\n type: 'boolean',\n description:\n 'Guidance override: true=always include, false=never include, omitted=auto by threshold',\n })\n .epilogue(DESCRIPTIONS.discoverApiEndpoints.epilogue),\n async args => {\n const { discoverCommand } = await import('@/cli/commands');\n await discoverCommand(\n { url: args.url, includeGuidance: args.includeGuidance },\n args\n );\n }\n )\n .command(\n 'register <url>',\n 'Register an origin with agentcash (discover + index endpoints)',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The origin URL to register',\n demandOption: true,\n }),\n async args => {\n const { registerCommand } = await import('@/cli/commands');\n await registerCommand({ url: args.url }, args);\n }\n )\n .command(\n 'add <url>',\n 'Add an origin and install its skill to agent clients. The origin is added to the MCP server description.',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The URL of the origin to add',\n demandOption: true,\n }),\n async args => {\n const { addSkillCommand } = await import('@/cli/commands');\n await addSkillCommand({ url: args.url }, args);\n }\n )\n .command(\n 'origins',\n 'Manage registered origins',\n yargs =>\n yargs\n .command(\n 'add <url>',\n 'Add an origin to agent clients. The origin is added to the MCP server description.',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The origin URL to register',\n demandOption: true,\n }),\n async args => {\n const { originsAddCommand } = await import('@/cli/commands');\n await originsAddCommand({ url: args.url }, args);\n }\n )\n .command(\n 'list',\n 'List all registered origins',\n yargs => yargs,\n async args => {\n const { originsListCommand } = await import('@/cli/commands');\n originsListCommand({}, args);\n }\n )\n .command(\n 'remove <url>',\n 'Remove a user-added origin',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The origin URL to remove',\n demandOption: true,\n }),\n async args => {\n const { originsRemoveCommand } = await import('@/cli/commands');\n originsRemoveCommand({ url: args.url }, args);\n }\n )\n .demandCommand(1, 'You must specify an origins subcommand')\n .strict(),\n () => {\n // Show help for origins command\n }\n )\n .command(\n 'onboard [code]',\n 'Non-interactive onboarding flow for agentcash wallet + MCP setup',\n yargs =>\n yargs.positional('code', {\n type: 'string',\n description: 'The invite code to redeem (optional)',\n }),\n async args => {\n const { onboardCommand } = await import('@/cli/commands');\n await onboardCommand({ code: args.code ?? args.invite }, args);\n }\n )\n .command(\n 'wallet',\n 'Wallet management commands',\n yargs =>\n yargs\n .command(\n 'info',\n DESCRIPTIONS.getWalletInfo.cli,\n yargs => yargs,\n async args => {\n const { walletInfoCommand } = await import('@/cli/commands');\n await walletInfoCommand({}, args);\n }\n )\n .command(\n 'redeem <code>',\n DESCRIPTIONS.redeemInvite.cli,\n yargs =>\n yargs.positional('code', {\n type: 'string',\n description: 'The invite code to redeem',\n demandOption: true,\n }),\n async args => {\n const { walletRedeemCommand } = await import('@/cli/commands');\n await walletRedeemCommand({ code: args.code }, args);\n }\n )\n .command(\n 'address',\n 'Get wallet address',\n yargs => yargs,\n async args => {\n const { walletAddressCommand } = await import('@/cli/commands');\n await walletAddressCommand({}, args);\n }\n )\n .demandCommand(1, 'You must specify a wallet subcommand')\n .strict(),\n () => {\n // Show help for wallet command\n }\n )\n .command(\n 'report-error',\n DESCRIPTIONS.reportError.cli,\n yargs =>\n yargs\n .option('tool', {\n type: 'string',\n description: 'The tool/command that failed',\n demandOption: true,\n })\n .option('summary', {\n type: 'string',\n description: '1-2 sentence summary of the issue',\n demandOption: true,\n })\n .option('error-message', {\n type: 'string',\n description: 'The error message',\n demandOption: true,\n })\n .option('resource', {\n type: 'string',\n description: 'The x402 resource URL (if applicable)',\n })\n .option('stack', {\n type: 'string',\n description: 'Stack trace (if available)',\n })\n .option('full-report', {\n type: 'string',\n description: 'Detailed report with context and repro steps',\n }),\n async args => {\n const { reportErrorCommand } = await import('@/cli/commands');\n await reportErrorCommand(\n {\n tool: args.tool,\n summary: args.summary,\n errorMessage: args.errorMessage,\n resource: args.resource,\n stack: args.stack,\n fullReport: args.fullReport,\n },\n args\n );\n }\n )\n // ============================================================\n // Server & Installation Commands\n // ============================================================\n .command(\n ['$0', 'server'],\n 'Start the MCP server (default when no command specified)',\n yargs => yargs,\n async args => {\n const { serverCommand } = await import('@/cli/commands');\n await serverCommand(args);\n }\n )\n .command(\n 'install',\n 'Install the MCP server configuration for a client',\n yargs =>\n yargs.option('client', {\n type: 'string',\n description: 'The client name',\n required: false,\n default: isClaudeCode ? Clients.ClaudeCode : undefined,\n }),\n async args => {\n const { installMcpServer } = await import('@/cli/install');\n await installMcpServer(args);\n }\n )\n .command(\n 'fund',\n 'Open the funding page to add USDC to your wallet',\n yargs => yargs,\n async args => {\n const { fundMcpServer } = await import('@/cli/fund');\n await fundMcpServer(args);\n }\n )\n .example(\n '$0 fetch \"https://stableenrich.dev/api/apollo/people-enrich\" -m POST -b \\'{\"email\":\"user@example.com\"}\\'',\n 'Fetch with x402 payment'\n )\n .example(\n '$0 check \"https://stableenrich.dev/api/apollo/people-enrich\"',\n 'Check endpoint pricing'\n )\n .example(\n '$0 discover \"https://stableenrich.dev\"',\n 'Discover endpoints on origin'\n )\n .example(\n '$0 register \"https://stableenrich.dev\"',\n 'Register origin with agentcash'\n )\n .example(\n '$0 onboard ABC123',\n 'Install onboarding skill, configure MCP, and redeem an invite'\n )\n .example('$0 wallet info', 'Get wallet balance')\n .example('$0 wallet redeem ABC123', 'Redeem invite code')\n .example('$0', 'Start MCP server (default)')\n .example('$0 install --client cursor', 'Install MCP for Cursor')\n .strict()\n .epilogue(buildServerInstructions(loadUserOrigins()))\n .help()\n .version(MCP_VERSION)\n .parseAsync()\n .catch(err => {\n // Output error in JSON format for agent consumption\n const response = {\n success: false,\n error: {\n code: 'GENERAL_ERROR',\n message: err instanceof Error ? err.message : String(err),\n surface: 'cli',\n cause: 'unknown',\n },\n };\n console.log(JSON.stringify(response, null, 2));\n process.exit(1);\n });\n"],"mappings":";;;;;;;;;;;;;;;;;AAEA,OAAO,WAAW;AAClB,SAAS,eAAe;AAOxB,IAAM,eAAe,QAAQ,QAAQ,IAAI,UAAU;AACnD,IAAM,aAAa,gBAAgB,QAAQ,QAAQ,IAAI,EAAE;AAEzD,KAAK,MAAM,QAAQ,QAAQ,IAAI,CAAC,EAC7B,WAAW,WAAW,EACtB,MAAM,wBAAwB,EAC9B,OAAO,OAAO;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS;AACX,CAAC,EACA,OAAO,UAAU;AAAA,EAChB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AACZ,CAAC,EACA,OAAO,OAAO;AAAA,EACb,OAAO;AAAA,EACP,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS,aAAa,OAAO;AAC/B,CAAC,EACA,OAAO,aAAa;AAAA,EACnB,MAAM;AAAA,EACN,aACE;AAAA,EACF,UAAU;AACZ,CAAC,EACA,OAAO,YAAY;AAAA,EAClB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AACZ,CAAC,EACA,OAAO,UAAU;AAAA,EAChB,MAAM;AAAA,EACN,aACE;AAAA,EACF,SAAS,CAAC,QAAQ,QAAQ;AAC5B,CAAC,EACA,OAAO,SAAS;AAAA,EACf,OAAO;AAAA,EACP,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS;AACX,CAAC,EACA,OAAO,WAAW;AAAA,EACjB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS;AACX,CAAC,EACA,WAAW,OAAM,SAAQ;AAExB,MAAI,KAAK,SAAS;AAChB,UAAM,EAAE,oBAAoB,IAAI,MAAM,OAAO,2BAAsB;AACnE,wBAAoB,EAAE,SAAS,KAAK,CAAC;AAAA,EACvC;AACF,CAAC,EAIA;AAAA,EACC;AAAA,EACA,aAAa,MAAM;AAAA,EACnB,CAAAA,WACEA,OACG,WAAW,OAAO;AAAA,IACjB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB,CAAC,EACA,OAAO,UAAU;AAAA,IAChB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,IACb,SAAS,CAAC,OAAO,QAAQ,OAAO,UAAU,OAAO;AAAA,IACjD,SAAS;AAAA,EACX,CAAC,EACA,OAAO,QAAQ;AAAA,IACd,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,EACf,CAAC,EACA,OAAO,WAAW;AAAA,IACjB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,EACf,CAAC,EACA,OAAO,kBAAkB;AAAA,IACxB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,IACb,SAAS,aAAa,IAAI,CAAC,QAAQ,OAAO,MAAM,IAAI,CAAC,QAAQ,MAAM;AAAA,IACnE,SAAS;AAAA,EACX,CAAC,EACA,SAAS,aAAa,MAAM,QAAQ;AAAA,EACzC,OAAM,SAAQ;AACZ,UAAM,EAAE,aAAa,IAAI,MAAM,OAAO,wBAAgB;AACtD,UAAM;AAAA,MACJ;AAAA,QACE,KAAK,KAAK;AAAA,QACV,QAAQ,KAAK;AAAA,QACb,MAAM,KAAK;AAAA,QACX,SAAS,KAAK;AAAA,QACd,eAAe,KAAK;AAAA,MACtB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF,EACC;AAAA,EACC;AAAA,EACA,aAAa,cAAc;AAAA,EAC3B,CAAAA,WACEA,OACG,WAAW,OAAO;AAAA,IACjB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB,CAAC,EACA,OAAO,UAAU;AAAA,IAChB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,IACb,SAAS,CAAC,OAAO,QAAQ,OAAO,UAAU,OAAO;AAAA,IACjD,SAAS;AAAA,EACX,CAAC,EACA,OAAO,QAAQ;AAAA,IACd,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,EACf,CAAC,EACA,OAAO,WAAW;AAAA,IACjB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,EACf,CAAC,EACA,SAAS,aAAa,cAAc,QAAQ;AAAA,EACjD,OAAM,SAAQ;AACZ,UAAM,EAAE,iBAAiB,IAAI,MAAM,OAAO,wBAAgB;AAC1D,UAAM;AAAA,MACJ;AAAA,QACE,KAAK,KAAK;AAAA,QACV,QAAQ,KAAK;AAAA,QACb,MAAM,KAAK;AAAA,QACX,SAAS,KAAK;AAAA,MAChB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF,EACC;AAAA,EACC;AAAA,EACA,aAAa,oBAAoB;AAAA,EACjC,CAAAA,WACEA,OACG,WAAW,OAAO;AAAA,IACjB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB,CAAC,EACA,OAAO,UAAU;AAAA,IAChB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aACE;AAAA,IACF,SAAS,CAAC,OAAO,QAAQ,OAAO,UAAU,OAAO;AAAA,EACnD,CAAC,EACA,OAAO,QAAQ;AAAA,IACd,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,EACf,CAAC,EACA,OAAO,WAAW;AAAA,IACjB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,EACf,CAAC,EACA,SAAS,aAAa,oBAAoB,QAAQ;AAAA,EACvD,OAAM,SAAQ;AACZ,UAAM,EAAE,aAAa,IAAI,MAAM,OAAO,wBAAgB;AACtD,UAAM;AAAA,MACJ;AAAA,QACE,KAAK,KAAK;AAAA,QACV,QAAQ,KAAK;AAAA,QACb,MAAM,KAAK;AAAA,QACX,SAAS,KAAK;AAAA,MAChB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF,EACC;AAAA,EACC;AAAA,EACA,aAAa,IAAI;AAAA,EACjB,CAAAA,WACEA,OAAM,WAAW,OAAO;AAAA,IACtB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB,CAAC;AAAA,EACH,OAAM,SAAQ;AACZ,UAAM,EAAE,WAAW,IAAI,MAAM,OAAO,wBAAgB;AACpD,UAAM,WAAW,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;AAAA,EAC1C;AACF,EACC;AAAA,EACC;AAAA,EACA,aAAa,qBAAqB;AAAA,EAClC,CAAAA,WACEA,OACG,WAAW,OAAO;AAAA,IACjB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB,CAAC,EACA,OAAO,oBAAoB;AAAA,IAC1B,MAAM;AAAA,IACN,aACE;AAAA,EACJ,CAAC,EACA,SAAS,aAAa,qBAAqB,QAAQ;AAAA,EACxD,OAAM,SAAQ;AACZ,UAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,wBAAgB;AACzD,UAAM;AAAA,MACJ,EAAE,KAAK,KAAK,KAAK,iBAAiB,KAAK,gBAAgB;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WACEA,OAAM,WAAW,OAAO;AAAA,IACtB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB,CAAC;AAAA,EACH,OAAM,SAAQ;AACZ,UAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,wBAAgB;AACzD,UAAM,gBAAgB,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;AAAA,EAC/C;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WACEA,OAAM,WAAW,OAAO;AAAA,IACtB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB,CAAC;AAAA,EACH,OAAM,SAAQ;AACZ,UAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,wBAAgB;AACzD,UAAM,gBAAgB,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;AAAA,EAC/C;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WACEA,OACG;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAAA,WACEA,OAAM,WAAW,OAAO;AAAA,MACtB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,cAAc;AAAA,IAChB,CAAC;AAAA,IACH,OAAM,SAAQ;AACZ,YAAM,EAAE,kBAAkB,IAAI,MAAM,OAAO,wBAAgB;AAC3D,YAAM,kBAAkB,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;AAAA,IACjD;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAAA,WAASA;AAAA,IACT,OAAM,SAAQ;AACZ,YAAM,EAAE,mBAAmB,IAAI,MAAM,OAAO,wBAAgB;AAC5D,yBAAmB,CAAC,GAAG,IAAI;AAAA,IAC7B;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAAA,WACEA,OAAM,WAAW,OAAO;AAAA,MACtB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,cAAc;AAAA,IAChB,CAAC;AAAA,IACH,OAAM,SAAQ;AACZ,YAAM,EAAE,qBAAqB,IAAI,MAAM,OAAO,wBAAgB;AAC9D,2BAAqB,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;AAAA,IAC9C;AAAA,EACF,EACC,cAAc,GAAG,wCAAwC,EACzD,OAAO;AAAA,EACZ,MAAM;AAAA,EAEN;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WACEA,OAAM,WAAW,QAAQ;AAAA,IACvB,MAAM;AAAA,IACN,aAAa;AAAA,EACf,CAAC;AAAA,EACH,OAAM,SAAQ;AACZ,UAAM,EAAE,eAAe,IAAI,MAAM,OAAO,wBAAgB;AACxD,UAAM,eAAe,EAAE,MAAM,KAAK,QAAQ,KAAK,OAAO,GAAG,IAAI;AAAA,EAC/D;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WACEA,OACG;AAAA,IACC;AAAA,IACA,aAAa,cAAc;AAAA,IAC3B,CAAAA,WAASA;AAAA,IACT,OAAM,SAAQ;AACZ,YAAM,EAAE,kBAAkB,IAAI,MAAM,OAAO,wBAAgB;AAC3D,YAAM,kBAAkB,CAAC,GAAG,IAAI;AAAA,IAClC;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA,aAAa,aAAa;AAAA,IAC1B,CAAAA,WACEA,OAAM,WAAW,QAAQ;AAAA,MACvB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,cAAc;AAAA,IAChB,CAAC;AAAA,IACH,OAAM,SAAQ;AACZ,YAAM,EAAE,oBAAoB,IAAI,MAAM,OAAO,wBAAgB;AAC7D,YAAM,oBAAoB,EAAE,MAAM,KAAK,KAAK,GAAG,IAAI;AAAA,IACrD;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAAA,WAASA;AAAA,IACT,OAAM,SAAQ;AACZ,YAAM,EAAE,qBAAqB,IAAI,MAAM,OAAO,wBAAgB;AAC9D,YAAM,qBAAqB,CAAC,GAAG,IAAI;AAAA,IACrC;AAAA,EACF,EACC,cAAc,GAAG,sCAAsC,EACvD,OAAO;AAAA,EACZ,MAAM;AAAA,EAEN;AACF,EACC;AAAA,EACC;AAAA,EACA,aAAa,YAAY;AAAA,EACzB,CAAAA,WACEA,OACG,OAAO,QAAQ;AAAA,IACd,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB,CAAC,EACA,OAAO,WAAW;AAAA,IACjB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB,CAAC,EACA,OAAO,iBAAiB;AAAA,IACvB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB,CAAC,EACA,OAAO,YAAY;AAAA,IAClB,MAAM;AAAA,IACN,aAAa;AAAA,EACf,CAAC,EACA,OAAO,SAAS;AAAA,IACf,MAAM;AAAA,IACN,aAAa;AAAA,EACf,CAAC,EACA,OAAO,eAAe;AAAA,IACrB,MAAM;AAAA,IACN,aAAa;AAAA,EACf,CAAC;AAAA,EACL,OAAM,SAAQ;AACZ,UAAM,EAAE,mBAAmB,IAAI,MAAM,OAAO,wBAAgB;AAC5D,UAAM;AAAA,MACJ;AAAA,QACE,MAAM,KAAK;AAAA,QACX,SAAS,KAAK;AAAA,QACd,cAAc,KAAK;AAAA,QACnB,UAAU,KAAK;AAAA,QACf,OAAO,KAAK;AAAA,QACZ,YAAY,KAAK;AAAA,MACnB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF,EAIC;AAAA,EACC,CAAC,MAAM,QAAQ;AAAA,EACf;AAAA,EACA,CAAAA,WAASA;AAAA,EACT,OAAM,SAAQ;AACZ,UAAM,EAAE,cAAc,IAAI,MAAM,OAAO,wBAAgB;AACvD,UAAM,cAAc,IAAI;AAAA,EAC1B;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WACEA,OAAM,OAAO,UAAU;AAAA,IACrB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,SAAS,gDAAoC;AAAA,EAC/C,CAAC;AAAA,EACH,OAAM,SAAQ;AACZ,UAAM,EAAE,iBAAiB,IAAI,MAAM,OAAO,uBAAe;AACzD,UAAM,iBAAiB,IAAI;AAAA,EAC7B;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WAASA;AAAA,EACT,OAAM,SAAQ;AACZ,UAAM,EAAE,cAAc,IAAI,MAAM,OAAO,oBAAY;AACnD,UAAM,cAAc,IAAI;AAAA,EAC1B;AACF,EACC;AAAA,EACC;AAAA,EACA;AACF,EACC;AAAA,EACC;AAAA,EACA;AACF,EACC;AAAA,EACC;AAAA,EACA;AACF,EACC;AAAA,EACC;AAAA,EACA;AACF,EACC;AAAA,EACC;AAAA,EACA;AACF,EACC,QAAQ,kBAAkB,oBAAoB,EAC9C,QAAQ,2BAA2B,oBAAoB,EACvD,QAAQ,MAAM,4BAA4B,EAC1C,QAAQ,8BAA8B,wBAAwB,EAC9D,OAAO,EACP,SAAS,wBAAwB,gBAAgB,CAAC,CAAC,EACnD,KAAK,EACL,QAAQ,WAAW,EACnB,WAAW,EACX,MAAM,SAAO;AAEZ,QAAM,WAAW;AAAA,IACf,SAAS;AAAA,IACT,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,MACxD,SAAS;AAAA,MACT,OAAO;AAAA,IACT;AAAA,EACF;AACA,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AAC7C,UAAQ,KAAK,CAAC;AAChB,CAAC;","names":["yargs"]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\nimport { Clients } from './cli/install/clients';\nimport { isMppEnabled } from '@/shared/mpp-enabled';\nimport { MCP_VERSION } from '@/shared/version';\nimport { DESCRIPTIONS, buildServerInstructions } from '@/shared/descriptions';\nimport { loadUserOrigins } from '@/shared/user-origins';\n\nconst isClaudeCode = Boolean(process.env.CLAUDECODE);\nconst defaultYes = isClaudeCode || Boolean(process.env.CI);\n\nvoid yargs(hideBin(process.argv))\n .scriptName('agentcash')\n .usage('$0 [command] [options]')\n .option('dev', {\n type: 'boolean',\n description: 'Enable dev mode (use localhost endpoints)',\n default: false,\n })\n .option('invite', {\n type: 'string',\n description: 'Invite code to redeem for starter money',\n required: false,\n })\n .option('yes', {\n alias: 'y',\n type: 'boolean',\n description: 'Yes to all prompts',\n default: defaultYes ? true : undefined,\n })\n .option('sessionId', {\n type: 'string',\n description:\n 'Session ID for matching requests (auto-generated if not provided)',\n required: false,\n })\n .option('provider', {\n type: 'string',\n description: 'Provider to use for the MCP server',\n required: false,\n })\n .option('format', {\n type: 'string',\n description:\n 'Output format: json (default for pipes) or pretty (default for TTY)',\n choices: ['json', 'pretty'],\n })\n .option('quiet', {\n alias: 'q',\n type: 'boolean',\n description: 'Suppress stderr output',\n default: false,\n })\n .option('verbose', {\n alias: 'v',\n type: 'boolean',\n description: 'Enable verbose logging (debug output to stderr)',\n default: false,\n })\n .middleware(async argv => {\n // Configure CLI context for shared modules (like logging)\n if (argv.verbose) {\n const { configureCliContext } = await import('@/shared/cli-context');\n configureCliContext({ verbose: true });\n }\n })\n // ============================================================\n // Core CLI Commands (for agent/programmatic use)\n // ============================================================\n .command(\n 'fetch <url>',\n DESCRIPTIONS.fetch.cli,\n yargs =>\n yargs\n .positional('url', {\n type: 'string',\n description: 'The endpoint URL to fetch',\n demandOption: true,\n })\n .option('method', {\n alias: 'm',\n type: 'string',\n description: 'HTTP method',\n choices: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'],\n default: 'GET',\n })\n .option('body', {\n alias: 'b',\n type: 'string',\n description: 'Request body as JSON string',\n })\n .option('headers', {\n alias: 'H',\n type: 'string',\n description: 'Additional headers as JSON object',\n })\n .option('payment-method', {\n alias: 'p',\n type: 'string',\n description: 'Payment protocol to use',\n choices: isMppEnabled() ? ['x402', 'mpp', 'auto'] : ['x402', 'auto'],\n default: 'auto',\n })\n .option('max-amount', {\n type: 'number',\n description:\n 'Maximum amount (USD) to pay per request. Aborts if the endpoint requests more. Defaults to $5.',\n })\n .epilogue(DESCRIPTIONS.fetch.epilogue),\n async args => {\n const { fetchCommand } = await import('@/cli/commands');\n await fetchCommand(\n {\n url: args.url,\n method: args.method,\n body: args.body,\n headers: args.headers,\n paymentMethod: args.paymentMethod,\n maxAmount: args.maxAmount,\n },\n args\n );\n }\n )\n .command(\n 'fetch-auth <url>',\n DESCRIPTIONS.fetchWithAuth.cli,\n yargs =>\n yargs\n .positional('url', {\n type: 'string',\n description: 'The endpoint URL to fetch',\n demandOption: true,\n })\n .option('method', {\n alias: 'm',\n type: 'string',\n description: 'HTTP method',\n choices: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'],\n default: 'GET',\n })\n .option('body', {\n alias: 'b',\n type: 'string',\n description: 'Request body as JSON string',\n })\n .option('headers', {\n alias: 'H',\n type: 'string',\n description: 'Additional headers as JSON object',\n })\n .epilogue(DESCRIPTIONS.fetchWithAuth.epilogue),\n async args => {\n const { fetchAuthCommand } = await import('@/cli/commands');\n await fetchAuthCommand(\n {\n url: args.url,\n method: args.method,\n body: args.body,\n headers: args.headers,\n },\n args\n );\n }\n )\n .command(\n 'check <url>',\n DESCRIPTIONS.checkEndpointSchema.cli,\n yargs =>\n yargs\n .positional('url', {\n type: 'string',\n description: 'The endpoint URL to check',\n demandOption: true,\n })\n .option('method', {\n alias: 'm',\n type: 'string',\n description:\n 'HTTP method to check. If omitted, all methods declared in the spec are returned.',\n choices: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'],\n })\n .option('body', {\n alias: 'b',\n type: 'string',\n description: 'Request body as JSON string',\n })\n .option('headers', {\n alias: 'H',\n type: 'string',\n description: 'Additional headers as JSON object',\n })\n .epilogue(DESCRIPTIONS.checkEndpointSchema.epilogue),\n async args => {\n const { checkCommand } = await import('@/cli/commands');\n await checkCommand(\n {\n url: args.url,\n method: args.method,\n body: args.body,\n headers: args.headers,\n },\n args\n );\n }\n )\n .command(\n 'try <url>',\n DESCRIPTIONS.try.cli,\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The origin URL to explore',\n demandOption: true,\n }),\n async args => {\n const { tryCommand } = await import('@/cli/commands');\n await tryCommand({ url: args.url }, args);\n }\n )\n .command(\n 'discover <url>',\n DESCRIPTIONS.discoverApiEndpoints.cli,\n yargs =>\n yargs\n .positional('url', {\n type: 'string',\n description: 'The origin URL to discover endpoints from',\n demandOption: true,\n })\n .option('include-guidance', {\n type: 'boolean',\n description:\n 'Guidance override: true=always include, false=never include, omitted=auto by threshold',\n })\n .epilogue(DESCRIPTIONS.discoverApiEndpoints.epilogue),\n async args => {\n const { discoverCommand } = await import('@/cli/commands');\n await discoverCommand(\n { url: args.url, includeGuidance: args.includeGuidance },\n args\n );\n }\n )\n .command(\n 'register <url>',\n 'Register an origin with agentcash (discover + index endpoints)',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The origin URL to register',\n demandOption: true,\n }),\n async args => {\n const { registerCommand } = await import('@/cli/commands');\n await registerCommand({ url: args.url }, args);\n }\n )\n .command(\n 'add <url>',\n 'Add an origin and install its skill to agent clients. The origin is added to the MCP server description.',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The URL of the origin to add',\n demandOption: true,\n }),\n async args => {\n const { addSkillCommand } = await import('@/cli/commands');\n await addSkillCommand({ url: args.url }, args);\n }\n )\n .command(\n 'origins',\n 'Manage registered origins',\n yargs =>\n yargs\n .command(\n 'add <url>',\n 'Add an origin to agent clients. The origin is added to the MCP server description.',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The origin URL to register',\n demandOption: true,\n }),\n async args => {\n const { originsAddCommand } = await import('@/cli/commands');\n await originsAddCommand({ url: args.url }, args);\n }\n )\n .command(\n 'list',\n 'List all registered origins',\n yargs => yargs,\n async args => {\n const { originsListCommand } = await import('@/cli/commands');\n originsListCommand({}, args);\n }\n )\n .command(\n 'remove <url>',\n 'Remove a user-added origin',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The origin URL to remove',\n demandOption: true,\n }),\n async args => {\n const { originsRemoveCommand } = await import('@/cli/commands');\n originsRemoveCommand({ url: args.url }, args);\n }\n )\n .demandCommand(1, 'You must specify an origins subcommand')\n .strict(),\n () => {\n // Show help for origins command\n }\n )\n .command(\n 'onboard [code]',\n 'Non-interactive onboarding flow for agentcash wallet + MCP setup',\n yargs =>\n yargs.positional('code', {\n type: 'string',\n description: 'The invite code to redeem (optional)',\n }),\n async args => {\n const { onboardCommand } = await import('@/cli/commands');\n await onboardCommand({ code: args.code ?? args.invite }, args);\n }\n )\n .command(\n 'wallet',\n 'Wallet management commands',\n yargs =>\n yargs\n .command(\n 'info',\n DESCRIPTIONS.getWalletInfo.cli,\n yargs => yargs,\n async args => {\n const { walletInfoCommand } = await import('@/cli/commands');\n await walletInfoCommand({}, args);\n }\n )\n .command(\n 'redeem <code>',\n DESCRIPTIONS.redeemInvite.cli,\n yargs =>\n yargs.positional('code', {\n type: 'string',\n description: 'The invite code to redeem',\n demandOption: true,\n }),\n async args => {\n const { walletRedeemCommand } = await import('@/cli/commands');\n await walletRedeemCommand({ code: args.code }, args);\n }\n )\n .command(\n 'address',\n 'Get wallet address',\n yargs => yargs,\n async args => {\n const { walletAddressCommand } = await import('@/cli/commands');\n await walletAddressCommand({}, args);\n }\n )\n .demandCommand(1, 'You must specify a wallet subcommand')\n .strict(),\n () => {\n // Show help for wallet command\n }\n )\n .command(\n 'settings',\n 'View and update user settings',\n yargs =>\n yargs\n .command(\n 'get',\n 'Show current settings',\n yargs => yargs,\n async args => {\n const { settingsGetCommand } = await import('@/cli/commands');\n settingsGetCommand({}, args);\n }\n )\n .command(\n 'set <key> <value>',\n 'Update a setting (e.g. settings set maxAmount 10)',\n yargs =>\n yargs\n .positional('key', {\n type: 'string',\n description: 'Setting name (e.g. maxAmount)',\n demandOption: true,\n })\n .positional('value', {\n type: 'string',\n description: 'Setting value',\n demandOption: true,\n }),\n async args => {\n const { settingsSetCommand } = await import('@/cli/commands');\n settingsSetCommand(\n { key: args.key, value: args.value },\n args\n );\n }\n )\n .demandCommand(1, 'You must specify a settings subcommand')\n .strict(),\n () => {\n // Show help for settings command\n }\n )\n .command(\n 'report-error',\n DESCRIPTIONS.reportError.cli,\n yargs =>\n yargs\n .option('tool', {\n type: 'string',\n description: 'The tool/command that failed',\n demandOption: true,\n })\n .option('summary', {\n type: 'string',\n description: '1-2 sentence summary of the issue',\n demandOption: true,\n })\n .option('error-message', {\n type: 'string',\n description: 'The error message',\n demandOption: true,\n })\n .option('resource', {\n type: 'string',\n description: 'The x402 resource URL (if applicable)',\n })\n .option('stack', {\n type: 'string',\n description: 'Stack trace (if available)',\n })\n .option('full-report', {\n type: 'string',\n description: 'Detailed report with context and repro steps',\n }),\n async args => {\n const { reportErrorCommand } = await import('@/cli/commands');\n await reportErrorCommand(\n {\n tool: args.tool,\n summary: args.summary,\n errorMessage: args.errorMessage,\n resource: args.resource,\n stack: args.stack,\n fullReport: args.fullReport,\n },\n args\n );\n }\n )\n // ============================================================\n // Server & Installation Commands\n // ============================================================\n .command(\n ['$0', 'server'],\n 'Start the MCP server (default when no command specified)',\n yargs => yargs,\n async args => {\n const { serverCommand } = await import('@/cli/commands');\n await serverCommand(args);\n }\n )\n .command(\n 'install',\n 'Install the MCP server configuration for a client',\n yargs =>\n yargs.option('client', {\n type: 'string',\n description: 'The client name',\n required: false,\n default: isClaudeCode ? Clients.ClaudeCode : undefined,\n }),\n async args => {\n const { installMcpServer } = await import('@/cli/install');\n await installMcpServer(args);\n }\n )\n .command(\n 'fund',\n 'Open the funding page to add USDC to your wallet',\n yargs => yargs,\n async args => {\n const { fundMcpServer } = await import('@/cli/fund');\n await fundMcpServer(args);\n }\n )\n .example(\n '$0 fetch \"https://stableenrich.dev/api/apollo/people-enrich\" -m POST -b \\'{\"email\":\"user@example.com\"}\\'',\n 'Fetch with x402 payment'\n )\n .example(\n '$0 check \"https://stableenrich.dev/api/apollo/people-enrich\"',\n 'Check endpoint pricing'\n )\n .example(\n '$0 discover \"https://stableenrich.dev\"',\n 'Discover endpoints on origin'\n )\n .example(\n '$0 register \"https://stableenrich.dev\"',\n 'Register origin with agentcash'\n )\n .example(\n '$0 onboard ABC123',\n 'Install onboarding skill, configure MCP, and redeem an invite'\n )\n .example('$0 wallet info', 'Get wallet balance')\n .example('$0 wallet redeem ABC123', 'Redeem invite code')\n .example('$0', 'Start MCP server (default)')\n .example('$0 install --client cursor', 'Install MCP for Cursor')\n .strict()\n .epilogue(buildServerInstructions(loadUserOrigins()))\n .help()\n .version(MCP_VERSION)\n .parseAsync()\n .catch(err => {\n // Output error in JSON format for agent consumption\n const response = {\n success: false,\n error: {\n code: 'GENERAL_ERROR',\n message: err instanceof Error ? err.message : String(err),\n surface: 'cli',\n cause: 'unknown',\n },\n };\n console.log(JSON.stringify(response, null, 2));\n process.exit(1);\n });\n"],"mappings":"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","names":["yargs"]}
@@ -1,29 +1,29 @@
1
1
  import {
2
2
  addServer
3
- } from "./chunk-AUDGOEEE.js";
3
+ } from "./chunk-EQTHURHC.js";
4
4
  import {
5
5
  Clients,
6
6
  clientMetadata
7
7
  } from "./chunk-KAEAFW3A.js";
8
- import "./chunk-TQ4SMW3W.js";
8
+ import "./chunk-RD4Y3CJX.js";
9
9
  import {
10
10
  promptDeposit
11
- } from "./chunk-OHA3LLUQ.js";
11
+ } from "./chunk-NCBPOUV6.js";
12
12
  import {
13
13
  wait
14
14
  } from "./chunk-DZNSJ2BA.js";
15
15
  import {
16
16
  getWallet,
17
17
  redeemInviteCode
18
- } from "./chunk-UN3PRLTL.js";
19
- import "./chunk-ZDDDU5O2.js";
18
+ } from "./chunk-DXPPE7QC.js";
19
+ import "./chunk-5GVHLIVV.js";
20
20
  import {
21
21
  getBalance
22
- } from "./chunk-7ZEXMJYJ.js";
22
+ } from "./chunk-B2JUF6FK.js";
23
23
  import {
24
24
  log
25
- } from "./chunk-YQFK4U62.js";
26
- import "./chunk-6PU3XK6I.js";
25
+ } from "./chunk-36KCO2CQ.js";
26
+ import "./chunk-CM4BCEDY.js";
27
27
  import "./chunk-ISR6DJ53.js";
28
28
 
29
29
  // src/cli/install/index.ts
@@ -178,4 +178,4 @@ var installMcpServer = async (flags) => {
178
178
  export {
179
179
  installMcpServer
180
180
  };
181
- //# sourceMappingURL=install-JQKZJ656.js.map
181
+ //# sourceMappingURL=install-LUCT7K6W.js.map
package/dist/esm/lib.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  registerOrigin2 as registerOrigin
3
- } from "./chunk-C36IAW7R.js";
3
+ } from "./chunk-NPZ6POPF.js";
4
4
  import {
5
5
  SUPPORTED_METHODS,
6
6
  checkEndpoint,
7
7
  discoverResources
8
- } from "./chunk-4R52CY5Q.js";
9
- import "./chunk-YQFK4U62.js";
10
- import "./chunk-6PU3XK6I.js";
8
+ } from "./chunk-LKZJ456N.js";
9
+ import "./chunk-36KCO2CQ.js";
10
+ import "./chunk-CM4BCEDY.js";
11
11
  import "./chunk-ISR6DJ53.js";
12
12
  export {
13
13
  SUPPORTED_METHODS,
@@ -1,13 +1,16 @@
1
1
  import {
2
+ DEFAULT_MAX_AMOUNT,
2
3
  buildRequest,
3
4
  createFetchWithAuth,
4
5
  createFetchWithPayment,
5
6
  detectPaymentProtocols,
6
7
  getInputSchema,
8
+ getSettings,
7
9
  requestSchema,
8
10
  safeGetMppChallenge,
9
- safeGetPaymentRequired
10
- } from "./chunk-X4YQNM7D.js";
11
+ safeGetPaymentRequired,
12
+ setSettings
13
+ } from "./chunk-3WG74L5Z.js";
11
14
  import {
12
15
  DESCRIPTIONS,
13
16
  ORIGINS,
@@ -15,37 +18,37 @@ import {
15
18
  TOOL_PARAMS,
16
19
  buildServerInstructions,
17
20
  loadUserOrigins
18
- } from "./chunk-W7DAJMFQ.js";
21
+ } from "./chunk-4ALGXM6F.js";
19
22
  import {
20
23
  TEMPO_RPC_URL,
21
24
  getTempoBalance,
22
25
  getWalletInfo,
23
26
  submitErrorReport
24
- } from "./chunk-AVLTYWSD.js";
27
+ } from "./chunk-FFYCYLF4.js";
25
28
  import {
26
29
  isMppEnabled
27
- } from "./chunk-YK5LKPBE.js";
30
+ } from "./chunk-I7DEUXBL.js";
28
31
  import {
29
32
  checkEndpoint,
30
33
  discoverResources
31
- } from "./chunk-4R52CY5Q.js";
34
+ } from "./chunk-LKZJ456N.js";
32
35
  import {
33
36
  MCP_VERSION
34
- } from "./chunk-TQ4SMW3W.js";
37
+ } from "./chunk-RD4Y3CJX.js";
35
38
  import {
36
39
  DEFAULT_NETWORK,
37
40
  getWallet,
38
41
  redeemInviteCode
39
- } from "./chunk-UN3PRLTL.js";
42
+ } from "./chunk-DXPPE7QC.js";
40
43
  import {
41
44
  safeStringifyJson,
42
45
  toJsonObject
43
- } from "./chunk-ZDDDU5O2.js";
46
+ } from "./chunk-5GVHLIVV.js";
44
47
  import {
45
48
  getBalance,
46
49
  getDepositLink,
47
50
  openDepositLink
48
- } from "./chunk-7ZEXMJYJ.js";
51
+ } from "./chunk-B2JUF6FK.js";
49
52
  import {
50
53
  DEFAULT_FETCH_TIMEOUT,
51
54
  DEFAULT_USER_FETCH_TIMEOUT,
@@ -55,12 +58,12 @@ import {
55
58
  safeFetch,
56
59
  safeFetchJson,
57
60
  safeParseResponse
58
- } from "./chunk-YQFK4U62.js";
61
+ } from "./chunk-36KCO2CQ.js";
59
62
  import {
60
63
  err,
61
64
  ok,
62
65
  resultFromPromise
63
- } from "./chunk-6PU3XK6I.js";
66
+ } from "./chunk-CM4BCEDY.js";
64
67
  import "./chunk-ISR6DJ53.js";
65
68
 
66
69
  // src/server/index.ts
@@ -292,7 +295,8 @@ Insufficient Tempo balance for this payment.`
292
295
  var toolName = "fetch";
293
296
  var paymentMethodEnum = isMppEnabled() ? z.enum(["x402", "mpp", "auto"]) : z.enum(["x402", "auto"]);
294
297
  var fetchInputSchema = requestSchema.extend({
295
- paymentMethod: paymentMethodEnum.default("auto").optional().describe(TOOL_PARAMS.fetch.paymentMethod)
298
+ paymentMethod: paymentMethodEnum.default("auto").optional().describe(TOOL_PARAMS.fetch.paymentMethod),
299
+ maxAmount: z.number().positive().optional().describe(TOOL_PARAMS.fetch.maxAmount)
296
300
  });
297
301
  var registerFetchTool = ({
298
302
  server,
@@ -380,7 +384,8 @@ var registerFetchTool = ({
380
384
  account,
381
385
  flags,
382
386
  beforePayment,
383
- timeout: input.timeout ?? DEFAULT_USER_FETCH_TIMEOUT
387
+ timeout: input.timeout ?? DEFAULT_USER_FETCH_TIMEOUT,
388
+ maxAmount: input.maxAmount
384
389
  })(request);
385
390
  if (fetchResult.isErr()) {
386
391
  return mcpError(fetchResult);
@@ -780,21 +785,76 @@ function registerDiscoveryTools(server) {
780
785
  );
781
786
  }
782
787
 
788
+ // src/server/tools/settings.ts
789
+ import { z as z7 } from "zod";
790
+ var registerSettingsTools = ({ server }) => {
791
+ server.registerTool(
792
+ "update_settings",
793
+ {
794
+ title: "Update Settings",
795
+ description: DESCRIPTIONS.updateSettings.mcp,
796
+ inputSchema: z7.object({
797
+ maxAmount: z7.number().positive().optional().describe(
798
+ `Maximum amount (USD) to pay per fetch request. Current default: $${DEFAULT_MAX_AMOUNT}.`
799
+ )
800
+ }),
801
+ annotations: {
802
+ readOnlyHint: false,
803
+ destructiveHint: false,
804
+ idempotentHint: true,
805
+ openWorldHint: false
806
+ }
807
+ },
808
+ safeHandler((input) => {
809
+ if (input.maxAmount !== void 0) {
810
+ setSettings({ maxAmount: input.maxAmount });
811
+ }
812
+ const settings = getSettings();
813
+ return Promise.resolve(
814
+ mcpSuccessStructuredJson({
815
+ maxAmount: settings.maxAmount ?? DEFAULT_MAX_AMOUNT
816
+ })
817
+ );
818
+ })
819
+ );
820
+ server.registerTool(
821
+ "get_settings",
822
+ {
823
+ title: "Get Settings",
824
+ description: DESCRIPTIONS.getSettings.mcp,
825
+ annotations: {
826
+ readOnlyHint: true,
827
+ destructiveHint: false,
828
+ idempotentHint: true,
829
+ openWorldHint: false
830
+ }
831
+ },
832
+ safeHandler(() => {
833
+ const settings = getSettings();
834
+ return Promise.resolve(
835
+ mcpSuccessStructuredJson({
836
+ maxAmount: settings.maxAmount ?? DEFAULT_MAX_AMOUNT
837
+ })
838
+ );
839
+ })
840
+ );
841
+ };
842
+
783
843
  // src/server/resources/origins.ts
784
- import z7 from "zod";
844
+ import z8 from "zod";
785
845
  import { x402HTTPClient as x402HTTPClient2 } from "@x402/core/client";
786
846
  import { x402Client as x402Client2 } from "@x402/core/client";
787
847
  var surface = "registerOrigins";
788
- var wellKnownResourceItem = z7.union([
789
- z7.string(),
790
- z7.object({
791
- url: z7.string().optional(),
792
- path: z7.string().optional(),
793
- method: z7.string().optional()
848
+ var wellKnownResourceItem = z8.union([
849
+ z8.string(),
850
+ z8.object({
851
+ url: z8.string().optional(),
852
+ path: z8.string().optional(),
853
+ method: z8.string().optional()
794
854
  }).passthrough()
795
855
  ]);
796
- var wellKnownSchema = z7.object({
797
- resources: z7.array(wellKnownResourceItem)
856
+ var wellKnownSchema = z8.object({
857
+ resources: z8.array(wellKnownResourceItem)
798
858
  });
799
859
  var registerOrigins = ({ server }) => {
800
860
  for (const origin of ORIGINS) {
@@ -1100,7 +1160,7 @@ var registerGettingStartedPrompt = ({ server }) => {
1100
1160
  };
1101
1161
 
1102
1162
  // src/server/prompts/enrich.ts
1103
- import { z as z8 } from "zod";
1163
+ import { z as z9 } from "zod";
1104
1164
  var PROMPT_CONTENT2 = `To start, you should check this resource page: ${"https://stableenrich.dev" /* StableEnrich */}/llms.txt, which has access to all of the paid endpoints.
1105
1165
 
1106
1166
  - You have access to the agentcash MCP server, which allows you to call paid endpoints which contain potentially extremely useful information.
@@ -1183,7 +1243,7 @@ var registerEnrichPrompt = ({ server }) => {
1183
1243
  title: "Enrich",
1184
1244
  description: "Use premium APIs to enrich data. Optionally provide a query, or let the assistant infer the best task from context.",
1185
1245
  argsSchema: {
1186
- query: z8.string().optional().describe(
1246
+ query: z9.string().optional().describe(
1187
1247
  "Optional: The user's query to enrich. If omitted, the assistant will infer the task from conversation context."
1188
1248
  )
1189
1249
  }
@@ -1221,7 +1281,7 @@ import { dirname, join } from "path";
1221
1281
  import { fileURLToPath } from "url";
1222
1282
  function getVersion() {
1223
1283
  if (true) {
1224
- return "0.8.1";
1284
+ return "0.8.2";
1225
1285
  }
1226
1286
  const __dirname2 = dirname(fileURLToPath(import.meta.url));
1227
1287
  const pkg = JSON.parse(
@@ -1289,6 +1349,7 @@ var startServer = async (flags) => {
1289
1349
  registerRedeemInviteTool(props);
1290
1350
  registerDiscoveryTools(server);
1291
1351
  registerTelemetryTools(props);
1352
+ registerSettingsTools(props);
1292
1353
  registerPrompts(props);
1293
1354
  await registerOrigins({ server, flags });
1294
1355
  const transport = new StdioServerTransport();
@@ -1304,4 +1365,4 @@ var startServer = async (flags) => {
1304
1365
  export {
1305
1366
  startServer
1306
1367
  };
1307
- //# sourceMappingURL=server-HVKLQ3C3.js.map
1368
+ //# sourceMappingURL=server-EH7FWUSW.js.map