run402-mcp 1.8.1 → 1.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.
@@ -1 +1 @@
1
- {"version":3,"file":"bundle-deploy.d.ts","sourceRoot":"","sources":["../../src/tools/bundle-deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmD9B,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IACpF,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IAClG,IAAI,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA6FjF"}
1
+ {"version":3,"file":"bundle-deploy.d.ts","sourceRoot":"","sources":["../../src/tools/bundle-deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmD9B,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IACpF,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IAClG,IAAI,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAsEjF"}
@@ -2,6 +2,7 @@ import { z } from "zod";
2
2
  import { apiRequest } from "../client.js";
3
3
  import { saveProject } from "../keystore.js";
4
4
  import { formatApiError } from "../errors.js";
5
+ import { requireWalletAuth } from "../wallet-auth.js";
5
6
  export const bundleDeploySchema = {
6
7
  name: z.string().describe("App name (used as project name and default subdomain)"),
7
8
  migrations: z
@@ -49,8 +50,12 @@ export const bundleDeploySchema = {
49
50
  .describe("Custom subdomain to claim (e.g. 'myapp' → myapp.run402.com)"),
50
51
  };
51
52
  export async function handleBundleDeploy(args) {
53
+ const auth = requireWalletAuth();
54
+ if ("error" in auth)
55
+ return auth.error;
52
56
  const res = await apiRequest("/deploy/v1", {
53
57
  method: "POST",
58
+ headers: { ...auth.headers },
54
59
  body: {
55
60
  name: args.name,
56
61
  migrations: args.migrations,
@@ -61,31 +66,6 @@ export async function handleBundleDeploy(args) {
61
66
  subdomain: args.subdomain,
62
67
  },
63
68
  });
64
- if (res.is402) {
65
- const body = res.body;
66
- const lines = [
67
- `## Payment Required`,
68
- ``,
69
- `To bundle-deploy **${args.name}**, an x402 payment is needed.`,
70
- ``,
71
- ];
72
- if (body.x402) {
73
- lines.push(`**Payment details:**`);
74
- lines.push("```json");
75
- lines.push(JSON.stringify(body.x402, null, 2));
76
- lines.push("```");
77
- }
78
- else {
79
- lines.push(`**Server response:**`);
80
- lines.push("```json");
81
- lines.push(JSON.stringify(body, null, 2));
82
- lines.push("```");
83
- }
84
- lines.push(``);
85
- lines.push(`The user's wallet or payment agent must send the required amount. ` +
86
- `Once payment is confirmed, retry this tool call.`);
87
- return { content: [{ type: "text", text: lines.join("\n") }] };
88
- }
89
69
  if (!res.ok)
90
70
  return formatApiError(res, "deploying bundle");
91
71
  const body = res.body;
@@ -1 +1 @@
1
- {"version":3,"file":"bundle-deploy.js","sourceRoot":"","sources":["../../src/tools/bundle-deploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bundle-deploy.js","sourceRoot":"","sources":["../../src/tools/bundle-deploy.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-site.d.ts","sourceRoot":"","sources":["../../src/tools/deploy-site.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;CAwB5B,CAAC;AAEF,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjE,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAsEjF"}
1
+ {"version":3,"file":"deploy-site.d.ts","sourceRoot":"","sources":["../../src/tools/deploy-site.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;CAwB5B,CAAC;AAEF,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjE,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA+CjF"}
@@ -1,6 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { apiRequest } from "../client.js";
3
3
  import { formatApiError } from "../errors.js";
4
+ import { requireWalletAuth } from "../wallet-auth.js";
4
5
  export const deploySiteSchema = {
5
6
  name: z
6
7
  .string()
@@ -25,8 +26,12 @@ export const deploySiteSchema = {
25
26
  .describe("Array of files to deploy. Must include at least index.html."),
26
27
  };
27
28
  export async function handleDeploySite(args) {
29
+ const auth = requireWalletAuth();
30
+ if ("error" in auth)
31
+ return auth.error;
28
32
  const res = await apiRequest("/deployments/v1", {
29
33
  method: "POST",
34
+ headers: { ...auth.headers },
30
35
  body: {
31
36
  name: args.name,
32
37
  project: args.project,
@@ -34,31 +39,6 @@ export async function handleDeploySite(args) {
34
39
  files: args.files,
35
40
  },
36
41
  });
37
- if (res.is402) {
38
- const body = res.body;
39
- const lines = [
40
- `## Payment Required`,
41
- ``,
42
- `To deploy a static site, an active tier subscription is needed.`,
43
- ``,
44
- ];
45
- if (body.x402) {
46
- lines.push(`**Payment details:**`);
47
- lines.push("```json");
48
- lines.push(JSON.stringify(body.x402, null, 2));
49
- lines.push("```");
50
- }
51
- else {
52
- lines.push(`**Server response:**`);
53
- lines.push("```json");
54
- lines.push(JSON.stringify(body, null, 2));
55
- lines.push("```");
56
- }
57
- lines.push(``);
58
- lines.push(`The user's wallet or payment agent must send the required amount. ` +
59
- `Once payment is confirmed, retry this tool call.`);
60
- return { content: [{ type: "text", text: lines.join("\n") }] };
61
- }
62
42
  if (!res.ok)
63
43
  return formatApiError(res, "deploying site");
64
44
  const body = res.body;
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-site.js","sourceRoot":"","sources":["../../src/tools/deploy-site.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy-site.js","sourceRoot":"","sources":["../../src/tools/deploy-site.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2EAA2E,CAAC;IACxF,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,gFAAgF,CAAC;IAC7F,KAAK,EAAE,CAAC;SACL,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QAC7E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QAClE,QAAQ,EAAE,CAAC;aACR,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;aACzB,QAAQ,EAAE;aACV,QAAQ,CAAC,iEAAiE,CAAC;KAC/E,CAAC,CACH;SACA,QAAQ,CAAC,6DAA6D,CAAC;CAC3E,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAKtC;IACC,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;IACjC,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IAEvC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,iBAAiB,EAAE;QAC9C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;QAC5B,IAAI,EAAE;YACJ,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,cAAc,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAE1D,MAAM,IAAI,GAAG,GAAG,CAAC,IAShB,CAAC;IAEF,MAAM,KAAK,GAAG;QACZ,kBAAkB;QAClB,EAAE;QACF,mBAAmB;QACnB,mBAAmB;QACnB,YAAY,IAAI,CAAC,EAAE,MAAM;QACzB,WAAW,IAAI,CAAC,GAAG,IAAI;QACvB,cAAc,IAAI,CAAC,MAAM,IAAI;QAC7B,aAAa,IAAI,CAAC,WAAW,IAAI;QACjC,YAAY,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;QACtD,EAAE;QACF,yBAAyB,IAAI,CAAC,GAAG,IAAI;KACtC,CAAC;IAEF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AACjE,CAAC"}
@@ -2,13 +2,11 @@ import { z } from "zod";
2
2
  export declare const forkAppSchema: {
3
3
  version_id: z.ZodString;
4
4
  name: z.ZodString;
5
- tier: z.ZodDefault<z.ZodEnum<["prototype", "hobby", "team"]>>;
6
5
  subdomain: z.ZodOptional<z.ZodString>;
7
6
  };
8
7
  export declare function handleForkApp(args: {
9
8
  version_id: string;
10
9
  name: string;
11
- tier?: string;
12
10
  subdomain?: string;
13
11
  }): Promise<{
14
12
  content: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"fork-app.d.ts","sourceRoot":"","sources":["../../src/tools/fork-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,aAAa;;;;;CAWzB,CAAC;AAEF,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAmFjF"}
1
+ {"version":3,"file":"fork-app.d.ts","sourceRoot":"","sources":["../../src/tools/fork-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,aAAa;;;;CAOzB,CAAC;AAEF,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA0DjF"}
@@ -2,53 +2,28 @@ import { z } from "zod";
2
2
  import { apiRequest } from "../client.js";
3
3
  import { saveProject } from "../keystore.js";
4
4
  import { formatApiError } from "../errors.js";
5
+ import { requireWalletAuth } from "../wallet-auth.js";
5
6
  export const forkAppSchema = {
6
7
  version_id: z.string().describe("The app version ID to fork (from browse_apps)"),
7
8
  name: z.string().describe("Name for the new forked project"),
8
- tier: z
9
- .enum(["prototype", "hobby", "team"])
10
- .default("prototype")
11
- .describe("Database tier: prototype ($0.10/7d), hobby ($5/30d), team ($20/30d)"),
12
9
  subdomain: z
13
10
  .string()
14
11
  .optional()
15
12
  .describe("Optional subdomain to claim for the forked app"),
16
13
  };
17
14
  export async function handleForkApp(args) {
18
- const tier = args.tier || "prototype";
15
+ const auth = requireWalletAuth();
16
+ if ("error" in auth)
17
+ return auth.error;
19
18
  const res = await apiRequest("/fork/v1", {
20
19
  method: "POST",
20
+ headers: { ...auth.headers },
21
21
  body: {
22
22
  version_id: args.version_id,
23
23
  name: args.name,
24
24
  subdomain: args.subdomain,
25
25
  },
26
26
  });
27
- if (res.is402) {
28
- const body = res.body;
29
- const lines = [
30
- `## Payment Required`,
31
- ``,
32
- `To fork this app (tier: **${tier}**), an x402 payment is needed.`,
33
- ``,
34
- ];
35
- if (body.x402) {
36
- lines.push(`**Payment details:**`);
37
- lines.push("```json");
38
- lines.push(JSON.stringify(body.x402, null, 2));
39
- lines.push("```");
40
- }
41
- else {
42
- lines.push(`**Server response:**`);
43
- lines.push("```json");
44
- lines.push(JSON.stringify(body, null, 2));
45
- lines.push("```");
46
- }
47
- lines.push(``);
48
- lines.push(`The user's wallet or payment agent must send the required amount. ` +
49
- `Once payment is confirmed, retry this tool call.`);
50
- return { content: [{ type: "text", text: lines.join("\n") }] };
51
- }
52
27
  if (!res.ok)
53
28
  return formatApiError(res, "forking app");
54
29
  const body = res.body;
@@ -1 +1 @@
1
- {"version":3,"file":"fork-app.js","sourceRoot":"","sources":["../../src/tools/fork-app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fork-app.js","sourceRoot":"","sources":["../../src/tools/fork-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IAChF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAC5D,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,gDAAgD,CAAC;CAC9D,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAInC;IACC,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;IACjC,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IAEvC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE;QACvC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;QAC5B,IAAI,EAAE;YACJ,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,cAAc,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAEvD,MAAM,IAAI,GAAG,GAAG,CAAC,IAUhB,CAAC;IAEF,sCAAsC;IACtC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,UAAU,EAAE,IAAI,CAAC,gBAAgB;KAClC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG;QACZ,kBAAkB,IAAI,CAAC,IAAI,EAAE;QAC7B,EAAE;QACF,mBAAmB;QACnB,mBAAmB;QACnB,oBAAoB,IAAI,CAAC,UAAU,MAAM;QACzC,YAAY,IAAI,CAAC,IAAI,IAAI;QACzB,cAAc,IAAI,CAAC,WAAW,IAAI;QAClC,eAAe,IAAI,CAAC,gBAAgB,IAAI;KACzC,CAAC;IAEF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAE7C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AACjE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../../src/tools/provision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,eAAe;;;CAS3B,CAAC;AAEF,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAsEjF"}
1
+ {"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../../src/tools/provision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,eAAe;;;CAS3B,CAAC;AAEF,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA8CjF"}
@@ -2,6 +2,7 @@ import { z } from "zod";
2
2
  import { apiRequest } from "../client.js";
3
3
  import { saveProject } from "../keystore.js";
4
4
  import { formatApiError } from "../errors.js";
5
+ import { requireWalletAuth } from "../wallet-auth.js";
5
6
  export const provisionSchema = {
6
7
  tier: z
7
8
  .enum(["prototype", "hobby", "team"])
@@ -13,38 +14,16 @@ export const provisionSchema = {
13
14
  .describe("Optional project name (auto-generated if omitted)"),
14
15
  };
15
16
  export async function handleProvision(args) {
17
+ const auth = requireWalletAuth();
18
+ if ("error" in auth)
19
+ return auth.error;
16
20
  const tier = args.tier || "prototype";
17
21
  const name = args.name;
18
22
  const res = await apiRequest("/projects/v1", {
19
23
  method: "POST",
24
+ headers: { ...auth.headers },
20
25
  body: { tier, name },
21
26
  });
22
- if (res.is402) {
23
- const body = res.body;
24
- const lines = [
25
- `## Payment Required`,
26
- ``,
27
- `To provision a **${tier}** database, an x402 payment is needed.`,
28
- ``,
29
- ];
30
- if (body.x402) {
31
- lines.push(`**Payment details:**`);
32
- lines.push("```json");
33
- lines.push(JSON.stringify(body.x402, null, 2));
34
- lines.push("```");
35
- }
36
- else {
37
- lines.push(`**Server response:**`);
38
- lines.push("```json");
39
- lines.push(JSON.stringify(body, null, 2));
40
- lines.push("```");
41
- }
42
- lines.push(``);
43
- lines.push(`The user's wallet or payment agent must send the required amount. ` +
44
- `Once payment is confirmed, retry this tool call.`);
45
- // Return as text (NOT isError) so the LLM can reason about payment
46
- return { content: [{ type: "text", text: lines.join("\n") }] };
47
- }
48
27
  if (!res.ok)
49
28
  return formatApiError(res, "provisioning project");
50
29
  const body = res.body;
@@ -1 +1 @@
1
- {"version":3,"file":"provision.js","sourceRoot":"","sources":["../../src/tools/provision.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provision.js","sourceRoot":"","sources":["../../src/tools/provision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;SACpC,OAAO,CAAC,WAAW,CAAC;SACpB,QAAQ,CAAC,qEAAqE,CAAC;IAClF,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,mDAAmD,CAAC;CACjE,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAGrC;IACC,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;IACjC,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IAEvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAEvB,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE;QAC3C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;QAC5B,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;KACrB,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,cAAc,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;IAEhE,MAAM,IAAI,GAAG,GAAG,CAAC,IAOhB,CAAC;IAEF,sCAAsC;IACtC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,UAAU,EAAE,IAAI,CAAC,gBAAgB;KAClC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG;QACZ,wBAAwB;QACxB,EAAE;QACF,mBAAmB;QACnB,mBAAmB;QACnB,oBAAoB,IAAI,CAAC,UAAU,MAAM;QACzC,YAAY,IAAI,CAAC,IAAI,IAAI;QACzB,cAAc,IAAI,CAAC,WAAW,IAAI;QAClC,eAAe,IAAI,CAAC,gBAAgB,IAAI;QACxC,EAAE;QACF,oHAAoH;KACrH,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AACjE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"send-message.d.ts","sourceRoot":"","sources":["../../src/tools/send-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,iBAAiB;;CAE7B,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAiBjF"}
1
+ {"version":3,"file":"send-message.d.ts","sourceRoot":"","sources":["../../src/tools/send-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,iBAAiB;;CAE7B,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAejF"}
@@ -1,19 +1,19 @@
1
1
  import { z } from "zod";
2
2
  import { apiRequest } from "../client.js";
3
3
  import { formatApiError } from "../errors.js";
4
+ import { requireWalletAuth } from "../wallet-auth.js";
4
5
  export const sendMessageSchema = {
5
6
  message: z.string().describe("Message to send to the Run402 developers"),
6
7
  };
7
8
  export async function handleSendMessage(args) {
9
+ const auth = requireWalletAuth();
10
+ if ("error" in auth)
11
+ return auth.error;
8
12
  const res = await apiRequest("/message/v1", {
9
13
  method: "POST",
14
+ headers: { ...auth.headers },
10
15
  body: { message: args.message },
11
16
  });
12
- if (res.is402) {
13
- return {
14
- content: [{ type: "text", text: `## Auth Required\n\nSending a message requires wallet auth.\n\n${JSON.stringify(res.body, null, 2)}` }],
15
- };
16
- }
17
17
  if (!res.ok)
18
18
  return formatApiError(res, "sending message");
19
19
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"send-message.js","sourceRoot":"","sources":["../../src/tools/send-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;CACzE,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAEvC;IACC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,aAAa,EAAE;QAC1C,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;KAChC,CAAC,CAAC;IAEH,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kEAAkE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;SACzI,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,cAAc,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAE3D,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oCAAoC,EAAE,CAAC;KACxE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"send-message.js","sourceRoot":"","sources":["../../src/tools/send-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;CACzE,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAEvC;IACC,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;IACjC,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IAEvC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,aAAa,EAAE;QAC1C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;QAC5B,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;KAChC,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,cAAc,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAE3D,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oCAAoC,EAAE,CAAC;KACxE,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"set-agent-contact.d.ts","sourceRoot":"","sources":["../../src/tools/set-agent-contact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,qBAAqB;;;;CAIjC,CAAC;AAEF,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAiCjF"}
1
+ {"version":3,"file":"set-agent-contact.d.ts","sourceRoot":"","sources":["../../src/tools/set-agent-contact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,qBAAqB;;;;CAIjC,CAAC;AAEF,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA+BjF"}
@@ -1,6 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { apiRequest } from "../client.js";
3
3
  import { formatApiError } from "../errors.js";
4
+ import { requireWalletAuth } from "../wallet-auth.js";
4
5
  export const setAgentContactSchema = {
5
6
  name: z.string().describe("Agent name"),
6
7
  email: z.string().optional().describe("Contact email (optional)"),
@@ -12,15 +13,14 @@ export async function handleSetAgentContact(args) {
12
13
  body.email = args.email;
13
14
  if (args.webhook)
14
15
  body.webhook = args.webhook;
16
+ const auth = requireWalletAuth();
17
+ if ("error" in auth)
18
+ return auth.error;
15
19
  const res = await apiRequest("/agent/v1/contact", {
16
20
  method: "POST",
21
+ headers: { ...auth.headers },
17
22
  body,
18
23
  });
19
- if (res.is402) {
20
- return {
21
- content: [{ type: "text", text: `## Auth Required\n\nRegistering agent contact requires wallet auth.\n\n${JSON.stringify(res.body, null, 2)}` }],
22
- };
23
- }
24
24
  if (!res.ok)
25
25
  return formatApiError(res, "setting agent contact");
26
26
  const result = res.body;
@@ -1 +1 @@
1
- {"version":3,"file":"set-agent-contact.js","sourceRoot":"","sources":["../../src/tools/set-agent-contact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACjE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;CACpF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAI3C;IACC,MAAM,IAAI,GAA2B,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACzD,IAAI,IAAI,CAAC,KAAK;QAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACxC,IAAI,IAAI,CAAC,OAAO;QAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAE9C,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,mBAAmB,EAAE;QAChD,MAAM,EAAE,MAAM;QACd,IAAI;KACL,CAAC,CAAC;IAEH,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0EAA0E,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;SACjJ,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,cAAc,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;IAEjE,MAAM,MAAM,GAAG,GAAG,CAAC,IAA8F,CAAC;IAElH,MAAM,KAAK,GAAG;QACZ,0BAA0B;QAC1B,EAAE;QACF,mBAAmB;QACnB,mBAAmB;QACnB,cAAc,MAAM,CAAC,MAAM,IAAI;QAC/B,YAAY,MAAM,CAAC,IAAI,IAAI;QAC3B,aAAa,MAAM,CAAC,KAAK,IAAI,GAAG,IAAI;QACpC,eAAe,MAAM,CAAC,OAAO,IAAI,GAAG,IAAI;QACxC,kBAAkB,MAAM,CAAC,UAAU,IAAI;KACxC,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"set-agent-contact.js","sourceRoot":"","sources":["../../src/tools/set-agent-contact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACjE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;CACpF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAI3C;IACC,MAAM,IAAI,GAA2B,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACzD,IAAI,IAAI,CAAC,KAAK;QAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACxC,IAAI,IAAI,CAAC,OAAO;QAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAE9C,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;IACjC,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IAEvC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,mBAAmB,EAAE;QAChD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;QAC5B,IAAI;KACL,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,cAAc,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;IAEjE,MAAM,MAAM,GAAG,GAAG,CAAC,IAA8F,CAAC;IAElH,MAAM,KAAK,GAAG;QACZ,0BAA0B;QAC1B,EAAE;QACF,mBAAmB;QACnB,mBAAmB;QACnB,cAAc,MAAM,CAAC,MAAM,IAAI;QAC/B,YAAY,MAAM,CAAC,IAAI,IAAI;QAC3B,aAAa,MAAM,CAAC,KAAK,IAAI,GAAG,IAAI;QACpC,eAAe,MAAM,CAAC,OAAO,IAAI,GAAG,IAAI;QACxC,kBAAkB,MAAM,CAAC,UAAU,IAAI;KACxC,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AACjE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tier-status.d.ts","sourceRoot":"","sources":["../../src/tools/tier-status.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,IAAK,CAAC;AAEnC,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAC3B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAmChF"}
1
+ {"version":3,"file":"tier-status.d.ts","sourceRoot":"","sources":["../../src/tools/tier-status.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gBAAgB,IAAK,CAAC;AAEnC,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAC3B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAyChF"}
@@ -1,8 +1,15 @@
1
1
  import { apiRequest } from "../client.js";
2
2
  import { formatApiError } from "../errors.js";
3
+ import { requireWalletAuth } from "../wallet-auth.js";
3
4
  export const tierStatusSchema = {};
4
5
  export async function handleTierStatus(_args) {
5
- const res = await apiRequest("/tiers/v1/status", { method: "GET" });
6
+ const auth = requireWalletAuth();
7
+ if ("error" in auth)
8
+ return auth.error;
9
+ const res = await apiRequest("/tiers/v1/status", {
10
+ method: "GET",
11
+ headers: { ...auth.headers },
12
+ });
6
13
  if (!res.ok)
7
14
  return formatApiError(res, "checking tier status");
8
15
  const body = res.body;
@@ -1 +1 @@
1
- {"version":3,"file":"tier-status.js","sourceRoot":"","sources":["../../src/tools/tier-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAEnC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAA4B;IAE5B,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAEpE,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,cAAc,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;IAEhE,MAAM,IAAI,GAAG,GAAG,CAAC,IAKhB,CAAC;IAEF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,gIAAgI;iBACvI;aACF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,gBAAgB;QAChB,EAAE;QACF,mBAAmB;QACnB,mBAAmB;QACnB,gBAAgB,IAAI,CAAC,MAAM,MAAM;QACjC,YAAY,IAAI,CAAC,IAAI,IAAI;QACzB,cAAc,IAAI,CAAC,MAAM,IAAI;QAC7B,eAAe,IAAI,CAAC,gBAAgB,IAAI;KACzC,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"tier-status.js","sourceRoot":"","sources":["../../src/tools/tier-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAEnC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAA4B;IAE5B,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;IACjC,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IAEvC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,kBAAkB,EAAE;QAC/C,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;KAC7B,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,cAAc,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;IAEhE,MAAM,IAAI,GAAG,GAAG,CAAC,IAKhB,CAAC;IAEF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,gIAAgI;iBACvI;aACF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,gBAAgB;QAChB,EAAE;QACF,mBAAmB;QACnB,mBAAmB;QACnB,gBAAgB,IAAI,CAAC,MAAM,MAAM;QACjC,YAAY,IAAI,CAAC,IAAI,IAAI;QACzB,cAAc,IAAI,CAAC,MAAM,IAAI;QAC7B,eAAe,IAAI,CAAC,gBAAgB,IAAI;KACzC,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AACjE,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Wallet auth helper — generates EIP-191 signature headers for Run402 API.
3
+ *
4
+ * Used by MCP tools that call wallet-authenticated endpoints.
5
+ * Reads the local wallet from ~/.config/run402/wallet.json.
6
+ */
7
+ export interface WalletAuthHeaders {
8
+ "X-Run402-Wallet": string;
9
+ "X-Run402-Signature": string;
10
+ "X-Run402-Timestamp": string;
11
+ }
12
+ /**
13
+ * Get wallet auth headers for the Run402 API.
14
+ * Returns null if no wallet is configured.
15
+ */
16
+ export declare function getWalletAuthHeaders(): WalletAuthHeaders | null;
17
+ /**
18
+ * Get wallet auth headers or return an MCP error result.
19
+ */
20
+ export declare function requireWalletAuth(): {
21
+ headers: WalletAuthHeaders;
22
+ } | {
23
+ error: {
24
+ content: Array<{
25
+ type: "text";
26
+ text: string;
27
+ }>;
28
+ isError: true;
29
+ };
30
+ };
31
+ //# sourceMappingURL=wallet-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-auth.d.ts","sourceRoot":"","sources":["../src/wallet-auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AA4CD;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,GAAG,IAAI,CAqB/D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI;IACnC,OAAO,EAAE,iBAAiB,CAAC;CAC5B,GAAG;IACF,KAAK,EAAE;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,OAAO,EAAE,IAAI,CAAA;KAAE,CAAC;CAC1E,CAgBA"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Wallet auth helper — generates EIP-191 signature headers for Run402 API.
3
+ *
4
+ * Used by MCP tools that call wallet-authenticated endpoints.
5
+ * Reads the local wallet from ~/.config/run402/wallet.json.
6
+ */
7
+ import { readFileSync, existsSync } from "node:fs";
8
+ import { secp256k1 } from "@noble/curves/secp256k1.js";
9
+ import { keccak_256 } from "@noble/hashes/sha3.js";
10
+ import { bytesToHex } from "@noble/hashes/utils.js";
11
+ import { getWalletPath } from "./config.js";
12
+ /**
13
+ * EIP-191 personal_sign: sign a message with the wallet's private key.
14
+ */
15
+ function personalSign(privateKeyHex, address, message) {
16
+ const msgBytes = new TextEncoder().encode(message);
17
+ const prefix = new TextEncoder().encode(`\x19Ethereum Signed Message:\n${msgBytes.length}`);
18
+ const prefixed = new Uint8Array(prefix.length + msgBytes.length);
19
+ prefixed.set(prefix);
20
+ prefixed.set(msgBytes, prefix.length);
21
+ const hash = keccak_256(prefixed);
22
+ const pkHex = privateKeyHex.startsWith("0x")
23
+ ? privateKeyHex.slice(2)
24
+ : privateKeyHex;
25
+ const pkBytes = Uint8Array.from(Buffer.from(pkHex, "hex"));
26
+ const rawSig = secp256k1.sign(hash, pkBytes);
27
+ const sig = secp256k1.Signature.fromBytes(rawSig);
28
+ // Determine recovery bit by trying both and matching the address
29
+ let recovery = 0;
30
+ for (const v of [0, 1]) {
31
+ try {
32
+ const recovered = sig.addRecoveryBit(v).recoverPublicKey(hash);
33
+ const pubBytes = recovered.toBytes(false).slice(1); // uncompressed, drop 04 prefix
34
+ const addrBytes = keccak_256(pubBytes).slice(-20);
35
+ if ("0x" + bytesToHex(addrBytes) === address.toLowerCase()) {
36
+ recovery = v;
37
+ break;
38
+ }
39
+ }
40
+ catch {
41
+ continue;
42
+ }
43
+ }
44
+ const r = sig.r.toString(16).padStart(64, "0");
45
+ const s = sig.s.toString(16).padStart(64, "0");
46
+ const vHex = (recovery + 27).toString(16).padStart(2, "0");
47
+ return "0x" + r + s + vHex;
48
+ }
49
+ /**
50
+ * Get wallet auth headers for the Run402 API.
51
+ * Returns null if no wallet is configured.
52
+ */
53
+ export function getWalletAuthHeaders() {
54
+ const walletPath = getWalletPath();
55
+ if (!existsSync(walletPath))
56
+ return null;
57
+ let wallet;
58
+ try {
59
+ wallet = JSON.parse(readFileSync(walletPath, "utf-8"));
60
+ }
61
+ catch {
62
+ return null;
63
+ }
64
+ if (!wallet.address || !wallet.privateKey)
65
+ return null;
66
+ const timestamp = Math.floor(Date.now() / 1000).toString();
67
+ const signature = personalSign(wallet.privateKey, wallet.address, `run402:${timestamp}`);
68
+ return {
69
+ "X-Run402-Wallet": wallet.address,
70
+ "X-Run402-Signature": signature,
71
+ "X-Run402-Timestamp": timestamp,
72
+ };
73
+ }
74
+ /**
75
+ * Get wallet auth headers or return an MCP error result.
76
+ */
77
+ export function requireWalletAuth() {
78
+ const headers = getWalletAuthHeaders();
79
+ if (!headers) {
80
+ return {
81
+ error: {
82
+ content: [
83
+ {
84
+ type: "text",
85
+ text: "Error: No wallet configured. Use `wallet_create` to create a wallet first, then `request_faucet` to fund it.",
86
+ },
87
+ ],
88
+ isError: true,
89
+ },
90
+ };
91
+ }
92
+ return { headers };
93
+ }
94
+ //# sourceMappingURL=wallet-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-auth.js","sourceRoot":"","sources":["../src/wallet-auth.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "run402-mcp",
3
- "version": "1.8.1",
3
+ "version": "1.8.2",
4
4
  "description": "MCP server for Run402 — AI-native Postgres databases with REST API, auth, storage, and row-level security. Pay with x402 USDC micropayments.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -17,7 +17,7 @@
17
17
  "start": "node dist/index.js",
18
18
  "test:skill": "node --test --import tsx SKILL.test.ts",
19
19
  "test:sync": "node --test --import tsx sync.test.ts",
20
- "test": "node --test --import tsx SKILL.test.ts sync.test.ts src/**/*.test.ts"
20
+ "test": "node --experimental-test-module-mocks --test --import tsx SKILL.test.ts sync.test.ts src/**/*.test.ts"
21
21
  },
22
22
  "keywords": [
23
23
  "mcp",
@@ -46,6 +46,7 @@
46
46
  },
47
47
  "dependencies": {
48
48
  "@modelcontextprotocol/sdk": "^1.27.1",
49
+ "@noble/curves": "^2.0.1",
49
50
  "@noble/hashes": "^2.0.1",
50
51
  "zod": "^3.24.0"
51
52
  },