@micropage-sh/mcp 0.1.2 → 0.1.3

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 (74) hide show
  1. package/README.md +11 -0
  2. package/dist/client/assets.d.ts +26 -8
  3. package/dist/client/assets.js +54 -116
  4. package/dist/client/assets.js.map +1 -1
  5. package/dist/client/auth-provider.d.ts +9 -3
  6. package/dist/client/auth-provider.js +11 -0
  7. package/dist/client/auth-provider.js.map +1 -1
  8. package/dist/client/bearer-auth.d.ts +16 -0
  9. package/dist/client/bearer-auth.js +24 -0
  10. package/dist/client/bearer-auth.js.map +1 -0
  11. package/dist/client/deploy-token.d.ts +6 -0
  12. package/dist/client/deploy-token.js +10 -4
  13. package/dist/client/deploy-token.js.map +1 -1
  14. package/dist/client/errors.d.ts +1 -1
  15. package/dist/client/errors.js.map +1 -1
  16. package/dist/client/http.d.ts +4 -0
  17. package/dist/client/http.js +7 -4
  18. package/dist/client/http.js.map +1 -1
  19. package/dist/client/ip.d.ts +12 -0
  20. package/dist/client/ip.js +93 -0
  21. package/dist/client/ip.js.map +1 -0
  22. package/dist/client/session-store.d.ts +3 -2
  23. package/dist/client/session-store.js +5 -1
  24. package/dist/client/session-store.js.map +1 -1
  25. package/dist/client/tier.d.ts +23 -3
  26. package/dist/client/tier.js +56 -17
  27. package/dist/client/tier.js.map +1 -1
  28. package/dist/context.d.ts +43 -7
  29. package/dist/guards.d.ts +11 -10
  30. package/dist/guards.js +21 -19
  31. package/dist/guards.js.map +1 -1
  32. package/dist/hints.d.ts +46 -0
  33. package/dist/hints.js +70 -0
  34. package/dist/hints.js.map +1 -0
  35. package/dist/index.js +2 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/node/deps.d.ts +26 -0
  38. package/dist/node/deps.js +51 -0
  39. package/dist/node/deps.js.map +1 -0
  40. package/dist/node/host-lookup.d.ts +3 -0
  41. package/dist/node/host-lookup.js +4 -0
  42. package/dist/node/host-lookup.js.map +1 -0
  43. package/dist/node/path-source.d.ts +3 -0
  44. package/dist/node/path-source.js +28 -0
  45. package/dist/node/path-source.js.map +1 -0
  46. package/dist/reference/prompts.d.ts +2 -1
  47. package/dist/reference/prompts.js +4 -3
  48. package/dist/reference/prompts.js.map +1 -1
  49. package/dist/reference.d.ts +1 -1
  50. package/dist/reference.js +2 -2
  51. package/dist/reference.js.map +1 -1
  52. package/dist/server.d.ts +4 -19
  53. package/dist/server.js +27 -33
  54. package/dist/server.js.map +1 -1
  55. package/dist/tools/account.d.ts +1 -0
  56. package/dist/tools/account.js +8 -8
  57. package/dist/tools/account.js.map +1 -1
  58. package/dist/tools/files.d.ts +15 -6
  59. package/dist/tools/files.js +63 -45
  60. package/dist/tools/files.js.map +1 -1
  61. package/dist/tools/forms.js +1 -1
  62. package/dist/tools/forms.js.map +1 -1
  63. package/dist/tools/posts.d.ts +2 -3
  64. package/dist/tools/posts.js +15 -16
  65. package/dist/tools/posts.js.map +1 -1
  66. package/dist/tools/projects.js +2 -2
  67. package/dist/tools/projects.js.map +1 -1
  68. package/dist/tools/shared.d.ts +1 -1
  69. package/dist/tools/shared.js +1 -1
  70. package/dist/tools/shared.js.map +1 -1
  71. package/dist/version.d.ts +2 -2
  72. package/dist/version.js +6 -7
  73. package/dist/version.js.map +1 -1
  74. package/package.json +6 -3
package/dist/server.js CHANGED
@@ -1,10 +1,5 @@
1
1
  import { CLIENT_CAPABILITIES_META_KEY, McpServer, } from "@modelcontextprotocol/server";
2
- import { loadConfig } from "./client/config.js";
3
- import { DeployTokenAuthProvider, readDeployTokenEnv } from "./client/deploy-token.js";
4
- import { Http } from "./client/http.js";
5
- import { SessionAuthProvider, sessionFilePath } from "./client/session-store.js";
6
- import { PlanGate } from "./client/tier.js";
7
- import { readEnvFlags } from "./guards.js";
2
+ import { STDIO_HINTS } from "./hints.js";
8
3
  import { LIST_CACHE_HINTS, registerReference } from "./reference.js";
9
4
  import { registerAccountTools } from "./tools/account.js";
10
5
  import { registerBuildTools } from "./tools/builds.js";
@@ -14,42 +9,22 @@ import { registerPostTools } from "./tools/posts.js";
14
9
  import { registerProjectTools } from "./tools/projects.js";
15
10
  import { VERSION } from "./version.js";
16
11
  export const SERVER_NAME = "micropage";
17
- /**
18
- * Picks where tokens come from: a deploy token when MICROPAGE_DEPLOY_TOKEN and
19
- * MICROPAGE_DEPLOY_PROJECT are both set (only one set throws), else the CLI
20
- * session file. The session provider is used even when the file does not
21
- * exist yet, so a `micropage login` after the server started takes effect
22
- * without a restart; until then every call fails with NOT_LOGGED_IN.
23
- */
24
- export function createAuthProvider(env, config, options = {}) {
25
- const shared = {
26
- config,
27
- ...(options.fetch ? { fetch: options.fetch } : {}),
28
- ...(options.now ? { now: options.now } : {}),
29
- };
30
- const deploy = readDeployTokenEnv(env);
31
- if (deploy)
32
- return new DeployTokenAuthProvider({ ...shared, ...deploy });
33
- return new SessionAuthProvider({ ...shared, path: sessionFilePath(env) });
34
- }
35
- /** Builds the process-wide deps from the environment. */
36
- export function createDeps(env = process.env, options = {}) {
37
- const config = loadConfig(env);
38
- const auth = createAuthProvider(env, config, options);
39
- const http = new Http({ config, auth, ...(options.fetch ? { fetch: options.fetch } : {}) });
40
- const tier = new PlanGate({ http, auth, ...(options.now ? { now: options.now } : {}) });
41
- return { config, auth, http, tier, flags: readEnvFlags(env) };
42
- }
43
12
  /**
44
13
  * Builds one server instance. Transport-agnostic and factory-shaped on
45
14
  * purpose: serveStdio calls it once per connection (plus a discarded
46
- * discovery probe) and a future HTTP entry would call it per request, so all
15
+ * discovery probe) and a remote HTTP entry would call it per request, so all
47
16
  * long-lived state (token refresh, caches) lives in `deps`, never here.
17
+ * Nothing reachable from here may import a Node-only module (node:fs,
18
+ * node:os, node:dns, node:net, node:path); tests/architecture.test.ts
19
+ * enforces it. Node-only deps are built in src/node/.
48
20
  */
49
21
  export function createServer(ctx, deps) {
50
22
  const server = new McpServer({ name: SERVER_NAME, version: VERSION }, { cacheHints: LIST_CACHE_HINTS });
23
+ if (deps.onToolError)
24
+ observeToolErrors(server, deps.onToolError);
51
25
  const toolCtx = {
52
26
  ...deps,
27
+ hints: deps.hints ?? STDIO_HINTS,
53
28
  era: ctx.era,
54
29
  clientCapabilities: (handlerCtx) => {
55
30
  if (ctx.era === "modern") {
@@ -69,6 +44,25 @@ export function createServer(ctx, deps) {
69
44
  registerReference(server, toolCtx);
70
45
  return server;
71
46
  }
47
+ /**
48
+ * Wraps every tool handler registered after this call so `observe` sees the
49
+ * error it throws; the error still propagates, so the SDK's isError result
50
+ * is unchanged. The SDK reduces a thrown error to its message, and the
51
+ * remote server wants the error code for its logs.
52
+ */
53
+ function observeToolErrors(server, observe) {
54
+ const register = server.registerTool.bind(server);
55
+ const wrapped = (name, config, cb) => register(name, config, async (...args) => {
56
+ try {
57
+ return await cb(...args);
58
+ }
59
+ catch (err) {
60
+ observe(name, err);
61
+ throw err;
62
+ }
63
+ });
64
+ server.registerTool = wrapped;
65
+ }
72
66
  export function createServerFactory(deps) {
73
67
  return (ctx) => createServer(ctx, deps);
74
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export declare const WhoamiOutput: z.ZodObject<{
7
7
  auth_mode: z.ZodEnum<{
8
8
  session: "session";
9
9
  deploy_token: "deploy_token";
10
+ oauth: "oauth";
10
11
  none: "none";
11
12
  }>;
12
13
  user_id: z.ZodNullable<z.ZodString>;
@@ -3,14 +3,13 @@ import { RO } from "../annotations.js";
3
3
  import { isMicropageError } from "../client/errors.js";
4
4
  import { eq, inList } from "../client/http.js";
5
5
  import { decodeJwtClaims } from "../client/jwt.js";
6
- import { LOGIN_HINT, SessionAuthProvider } from "../client/session-store.js";
7
6
  import { UPGRADE_MESSAGE, isPaidTier } from "../client/tier.js";
8
7
  import { assertDeployTokenAllows } from "../guards.js";
9
8
  import { structuredResult } from "./shared.js";
10
9
  export const WhoamiInput = z.object({}).strict();
11
10
  export const WhoamiOutput = z.object({
12
11
  logged_in: z.boolean(),
13
- auth_mode: z.enum(["session", "deploy_token", "none"]),
12
+ auth_mode: z.enum(["session", "deploy_token", "oauth", "none"]),
14
13
  user_id: z.string().nullable(),
15
14
  email: z.string().nullable(),
16
15
  name: z.string().nullable(),
@@ -29,10 +28,10 @@ export const WhoamiOutput = z.object({
29
28
  config_path: z.string().nullable().describe("The CLI session file in use (session mode)."),
30
29
  note: z.string().nullable().describe("What to tell the user, when something needs their action."),
31
30
  });
32
- const AUTH_FAILURES = new Set(["NOT_LOGGED_IN", "SESSION_EXPIRED", "SESSION_UNREADABLE", "DEPLOY_TOKEN_INVALID"]);
31
+ const AUTH_FAILURES = new Set(["NOT_LOGGED_IN", "SESSION_EXPIRED", "SESSION_UNREADABLE", "DEPLOY_TOKEN_INVALID", "AUTH_EXPIRED"]);
33
32
  export async function runWhoami(ctx) {
34
- assertDeployTokenAllows(ctx.auth, "whoami");
35
- const configPath = ctx.auth instanceof SessionAuthProvider ? ctx.auth.path : null;
33
+ assertDeployTokenAllows(ctx.auth, "whoami", undefined, ctx.hints.deployTokenElsewhere);
34
+ const configPath = ctx.auth.sessionPath ?? null;
36
35
  const base = {
37
36
  logged_in: false,
38
37
  auth_mode: ctx.auth.mode,
@@ -68,7 +67,8 @@ export async function runWhoami(ctx) {
68
67
  }
69
68
  catch (err) {
70
69
  if (isMicropageError(err) && AUTH_FAILURES.has(err.code)) {
71
- return { ...base, note: `The micropage login session is no longer valid. ${LOGIN_HINT}` };
70
+ const note = err.code === "AUTH_EXPIRED" ? err.message : ctx.hints.loginInvalid;
71
+ return { ...base, note };
72
72
  }
73
73
  throw err;
74
74
  }
@@ -109,9 +109,9 @@ export async function runWhoami(ctx) {
109
109
  export function registerAccountTools(server, ctx) {
110
110
  server.registerTool("whoami", {
111
111
  title: "Show the micropage account in use",
112
- description: `Report which micropage account this server acts as: email, plan tier, subscription, and whether it runs on the user's \`micropage login\` session or on a project deploy token (and if so, which project it is pinned to).
112
+ description: `Report which micropage account this server acts as: email, plan tier, subscription, and ${ctx.hints.whoamiModes}.
113
113
 
114
- Call it first when a micropage tool fails with a login, session or plan error, or when the user asks which account is connected. It never fails for a missing login: it returns logged_in false and a note saying what the user must do (usually run \`micropage login\` in a terminal). It does not log in, log out, or change anything.
114
+ Call it first when a micropage tool fails with a login, session or plan error, or when the user asks which account is connected. It never fails for a missing login: it returns logged_in false and a note saying what the user must do (${ctx.hints.whoamiFix}). It does not log in, log out, or change anything.
115
115
 
116
116
  Do not call it before every task; the other tools report login and plan problems themselves.`,
117
117
  inputSchema: WhoamiInput,
@@ -1 +1 @@
1
- {"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/tools/account.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/tools/account.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/server";
2
2
  import * as z from "zod";
3
- import type { FetchLike } from "../client/http.js";
4
3
  import type { ToolContext } from "../context.js";
5
4
  export declare const AssetSourceInput: z.ZodUnion<readonly [z.ZodObject<{
6
5
  path: z.ZodString;
@@ -9,6 +8,11 @@ export declare const AssetSourceInput: z.ZodUnion<readonly [z.ZodObject<{
9
8
  }, z.core.$strict>, z.ZodObject<{
10
9
  base64: z.ZodString;
11
10
  }, z.core.$strict>]>;
11
+ export declare const RemoteAssetSourceInput: z.ZodUnion<readonly [z.ZodObject<{
12
+ url: z.ZodString;
13
+ }, z.core.$strict>, z.ZodObject<{
14
+ base64: z.ZodString;
15
+ }, z.core.$strict>]>;
12
16
  export declare const UploadAssetInput: z.ZodObject<{
13
17
  project: z.ZodString;
14
18
  filename: z.ZodString;
@@ -20,6 +24,15 @@ export declare const UploadAssetInput: z.ZodObject<{
20
24
  base64: z.ZodString;
21
25
  }, z.core.$strict>]>;
22
26
  }, z.core.$strict>;
27
+ export declare const RemoteUploadAssetInput: z.ZodObject<{
28
+ project: z.ZodString;
29
+ filename: z.ZodString;
30
+ source: z.ZodUnion<readonly [z.ZodObject<{
31
+ url: z.ZodString;
32
+ }, z.core.$strict>, z.ZodObject<{
33
+ base64: z.ZodString;
34
+ }, z.core.$strict>]>;
35
+ }, z.core.$strict>;
23
36
  declare const UploadAssetOutput: z.ZodObject<{
24
37
  filename: z.ZodString;
25
38
  markup: z.ZodString;
@@ -32,11 +45,7 @@ declare const UploadAssetOutput: z.ZodObject<{
32
45
  content_hash: z.ZodString;
33
46
  }, z.core.$strip>;
34
47
  export type UploadAssetResult = z.infer<typeof UploadAssetOutput>;
35
- export interface UploadAssetDeps {
36
- /** fetch for `{url}` sources. Never the micropage-authenticated client. */
37
- fetchExternal?: FetchLike;
38
- }
39
- export declare function runUploadAsset(ctx: ToolContext, args: z.infer<typeof UploadAssetInput>, deps?: UploadAssetDeps): Promise<UploadAssetResult>;
48
+ export declare function runUploadAsset(ctx: ToolContext, args: z.infer<typeof UploadAssetInput>): Promise<UploadAssetResult>;
40
49
  export declare const ListFilesInput: z.ZodObject<{
41
50
  project: z.ZodString;
42
51
  }, z.core.$strict>;
@@ -5,7 +5,7 @@ import { MicropageError } from "../client/errors.js";
5
5
  import { ProjectRef, resolveProject } from "../client/project-ref.js";
6
6
  import { gateTool, structuredResult } from "./shared.js";
7
7
  const EXTENSIONS = Object.keys(ASSET_MIME_TYPES).join(", ");
8
- const MAX_MB = MAX_ASSET_BYTES / (1024 * 1024);
8
+ const maxMb = (maxBytes) => maxBytes / (1024 * 1024);
9
9
  const AssetFilename = z
10
10
  .string()
11
11
  .min(1)
@@ -15,46 +15,46 @@ const AssetFilename = z
15
15
  // ---------------------------------------------------------------------------
16
16
  // upload_asset
17
17
  // ---------------------------------------------------------------------------
18
- export const AssetSourceInput = z
19
- .union([
20
- z
21
- .object({
22
- path: z
23
- .string()
24
- .min(1)
25
- .max(4096)
26
- .describe("Absolute path to an image file on the machine running this server (local stdio installs only)."),
27
- })
28
- .strict(),
29
- z
30
- .object({
31
- url: z
32
- .string()
33
- .min(1)
34
- .max(4096)
35
- .describe("A public https:// URL of the image. Fetched once, without micropage credentials, with a 20 s timeout."),
36
- })
37
- .strict(),
38
- z
39
- .object({
40
- base64: z
41
- .string()
42
- .min(1)
43
- // ~10 MB of bytes is ~13.4 M base64 chars; the decoded size is checked exactly later.
44
- .max(14_000_000)
45
- .describe("The image bytes, base64-encoded. A data: URL (data:image/png;base64,...) also works."),
46
- })
47
- .strict(),
48
- ])
49
- .describe(`Where the bytes come from: exactly one of {path}, {url} or {base64}. Max ${MAX_MB} MB. The content must really be ` +
50
- "the image type the filename's extension says.");
51
- export const UploadAssetInput = z
18
+ const PathSource = z
52
19
  .object({
53
- project: ProjectRef,
54
- filename: AssetFilename,
55
- source: AssetSourceInput,
20
+ path: z
21
+ .string()
22
+ .min(1)
23
+ .max(4096)
24
+ .describe("Absolute path to an image file on the machine running this server (local stdio installs only)."),
25
+ })
26
+ .strict();
27
+ const UrlSource = z
28
+ .object({
29
+ url: z
30
+ .string()
31
+ .min(1)
32
+ .max(4096)
33
+ .describe("A public https:// URL of the image. Fetched once, without micropage credentials, with a 20 s timeout."),
34
+ })
35
+ .strict();
36
+ const base64Source = (maxBytes) => z
37
+ .object({
38
+ base64: z
39
+ .string()
40
+ .min(1)
41
+ // 4/3 chars per byte, rounded up to a whole million (14 M for 10 MB); the decoded size is checked exactly later.
42
+ .max(Math.ceil((maxBytes * 4) / 3 / 1_000_000) * 1_000_000)
43
+ .describe("The image bytes, base64-encoded. A data: URL (data:image/png;base64,...) also works."),
56
44
  })
57
45
  .strict();
46
+ const sourceRules = (maxBytes) => `Max ${maxMb(maxBytes)} MB. The content must really be the image type the filename's extension says.`;
47
+ /** With {path}: a server that can read the user's files. */
48
+ const assetSourceInput = (maxBytes) => z
49
+ .union([PathSource, UrlSource, base64Source(maxBytes)])
50
+ .describe(`Where the bytes come from: exactly one of {path}, {url} or {base64}. ${sourceRules(maxBytes)}`);
51
+ /** Without {path}: a hosted server, so the schema never offers what it cannot do. */
52
+ const remoteAssetSourceInput = (maxBytes) => z.union([UrlSource, base64Source(maxBytes)]).describe(`Where the bytes come from: exactly one of {url} or {base64}. ${sourceRules(maxBytes)}`);
53
+ export const AssetSourceInput = assetSourceInput(MAX_ASSET_BYTES);
54
+ export const RemoteAssetSourceInput = remoteAssetSourceInput(MAX_ASSET_BYTES);
55
+ const uploadAssetInput = (source) => z.object({ project: ProjectRef, filename: AssetFilename, source }).strict();
56
+ export const UploadAssetInput = uploadAssetInput(AssetSourceInput);
57
+ export const RemoteUploadAssetInput = uploadAssetInput(RemoteAssetSourceInput);
58
58
  const UploadAssetOutput = z.object({
59
59
  filename: z.string().describe("Stored name. Reference it in .page markup as `img: <- <filename>`."),
60
60
  markup: z.string().describe("Ready-to-use markup line, e.g. `img: <- hero.webp`."),
@@ -68,12 +68,19 @@ const UploadAssetOutput = z.object({
68
68
  mime_type: z.string(),
69
69
  content_hash: z.string().describe("SHA-256 of the bytes, used for dedupe."),
70
70
  });
71
- export async function runUploadAsset(ctx, args, deps = {}) {
71
+ export async function runUploadAsset(ctx, args) {
72
72
  await gateTool(ctx, "upload_asset");
73
73
  // Validated before any network call or file read.
74
74
  const filename = validateAssetFilename(args.filename);
75
75
  const project = await resolveProject(ctx, args.project);
76
- const bytes = await loadAssetSource(args.source, deps.fetchExternal ? { fetch: deps.fetchExternal } : {});
76
+ const { pathLoader, lookupHost, deniedHosts, fetchExternal, maxBytes } = ctx.uploads;
77
+ const bytes = await loadAssetSource(args.source, {
78
+ lookup: lookupHost,
79
+ maxBytes: maxBytes ?? MAX_ASSET_BYTES,
80
+ ...(pathLoader ? { pathLoader } : {}),
81
+ ...(deniedHosts ? { deniedHosts } : {}),
82
+ ...(fetchExternal ? { fetch: fetchExternal } : {}),
83
+ });
77
84
  assertContentMatchesExtension(filename, bytes);
78
85
  const result = await uploadAsset(ctx.http, project.id, filename, bytes);
79
86
  return {
@@ -155,23 +162,34 @@ export async function runGetFileUrl(ctx, args) {
155
162
  }
156
163
  // ---------------------------------------------------------------------------
157
164
  export function registerFileTools(server, ctx) {
158
- server.registerTool("upload_asset", {
165
+ const local = ctx.uploads.pathLoader !== undefined;
166
+ const sources = local ? "from a local file path, a public https URL, or base64 bytes" : "from a public https URL or base64 bytes";
167
+ const maxBytes = ctx.uploads.maxBytes ?? MAX_ASSET_BYTES;
168
+ const sourceNote = ctx.hints.uploadSourceNote ? ` ${ctx.hints.uploadSourceNote}` : "";
169
+ const uploadConfig = {
159
170
  title: "Upload an image asset",
160
- description: `Upload one image (${EXTENSIONS}; max ${MAX_MB} MB) to a micropage project's file storage, from a local file path, a public https URL, or base64 bytes. Returns the stored filename, the markup to reference it (\`img: <- hero.webp\`) and its URL.
171
+ description: `Upload one image (${EXTENSIONS}; max ${maxMb(maxBytes)} MB) to a micropage project's file storage, ${sources}.${sourceNote} Returns the stored filename, the markup to reference it (\`img: <- hero.webp\`) and its URL.
161
172
 
162
173
  Use it BEFORE save_page or upsert_post reference the image: page markup like \`img: <- hero.webp\` and a post's \`hero: hero.webp\` only resolve to files already stored in the project, and a missing name renders no image. Upload each asset once; calling again with identical content is a no-op (deduped: true, same SHA-256 as the CLI uses).
163
174
 
164
175
  Uploading different content under an existing name deletes the old file and stores the new one. A page that is already live keeps pointing at the old file until it is saved and published again, so re-run save_page and publish_build after replacing an image on a live site. Prefer a new filename to avoid that.
165
176
 
166
177
  Do not use it for non-image files (unsupported), for images already hosted elsewhere that markup can reference by full https URL, or to look up existing files (use list_files). Fails with the plan's storage limit when the project is full.`,
167
- inputSchema: UploadAssetInput,
168
178
  outputSchema: UploadAssetOutput,
169
179
  annotations: hints(WRITE, { idempotentHint: true, destructiveHint: true }),
170
- }, async (args) => {
180
+ };
181
+ const uploadHandler = async (args) => {
171
182
  const result = await runUploadAsset(ctx, args);
172
183
  const what = result.deduped ? "Already stored (identical content)" : result.replaced ? "Replaced" : "Uploaded";
173
184
  return structuredResult(result, `${what}: ${result.filename}. Reference it as \`${result.markup}\`.`);
174
- });
185
+ };
186
+ // Two calls rather than a conditional schema so each keeps its inferred argument type.
187
+ if (local) {
188
+ server.registerTool("upload_asset", { ...uploadConfig, inputSchema: uploadAssetInput(assetSourceInput(maxBytes)) }, uploadHandler);
189
+ }
190
+ else {
191
+ server.registerTool("upload_asset", { ...uploadConfig, inputSchema: uploadAssetInput(remoteAssetSourceInput(maxBytes)) }, uploadHandler);
192
+ }
175
193
  server.registerTool("list_files", {
176
194
  title: "List a project's files",
177
195
  description: `List the files stored in a micropage project (images uploaded by upload_asset, the editor or the CLI), newest first: filename, type, size, SHA-256 and upload date, plus storage used and the plan's storage limit.
@@ -1 +1 @@
1
- {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/tools/files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/tools/files.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,6BAA6B,EAC7B,UAAU,EACV,SAAS,EACT,eAAe,EACf,WAAW,EACX,WAAW,EACX,qBAAqB,GAEtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEzD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5D,MAAM,KAAK,GAAG,CAAC,QAAgB,EAAU,EAAE,CAAC,QAAQ,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AAErE,MAAM,aAAa,GAAG,CAAC;KACpB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,GAAG,CAAC;KACR,QAAQ,CACP,0FAA0F,UAAU,IAAI;IACtG,sEAAsE,CACzE,CAAC;AAEJ,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CAAC;IACN,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,CAAC,gGAAgG,CAAC;CAC9G,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,SAAS,GAAG,CAAC;KAChB,MAAM,CAAC;IACN,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,CAAC,uGAAuG,CAAC;CACrH,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,EAAE,CACxC,CAAC;KACE,MAAM,CAAC;IACN,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;QACP,iHAAiH;SAChH,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;SAC1D,QAAQ,CAAC,sFAAsF,CAAC;CACpG,CAAC;KACD,MAAM,EAAE,CAAC;AAEd,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAU,EAAE,CAC/C,OAAO,KAAK,CAAC,QAAQ,CAAC,+EAA+E,CAAC;AAExG,4DAA4D;AAC5D,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAC5C,CAAC;KACE,KAAK,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;KACtD,QAAQ,CAAC,wEAAwE,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAE/G,qFAAqF;AACrF,MAAM,sBAAsB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAClD,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gEAAgE,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAEjJ,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,sBAAsB,GAAG,sBAAsB,CAAC,eAAe,CAAC,CAAC;AAE9E,MAAM,gBAAgB,GAAG,CAAoE,MAAS,EAAE,EAAE,CACxG,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAE9E,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;AAE/E,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;IACnG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;IAClF,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACjE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,uFAAuF,CAAC;IACtH,QAAQ,EAAE,CAAC;SACR,OAAO,EAAE;SACT,QAAQ,CAAC,4HAA4H,CAAC;IACzI,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;CAC5E,CAAC,CAAC;AAGH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAgB,EAAE,IAAsC;IAC3F,MAAM,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACpC,kDAAkD;IAClD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;IACrF,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,MAAqB,EAAE;QAC9D,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,QAAQ,IAAI,eAAe;QACrC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnD,CAAC,CAAC;IACH,6BAA6B,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAE/C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxE,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ;QAC1C,MAAM,EAAE,WAAW,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE;QACrD,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;QACvB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM;QAClD,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC,QAAQ,CAAC;QACzD,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAEzE,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;IACnD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IAC3E,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;CACxB,CAAC,CAAC;AAGH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAgB,EAAE,IAAoC;IACvF,MAAM,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACtD,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;YAC5B,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;YAC9B,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;YAChC,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;YACpC,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;SACjC,CAAC,CAAC;QACH,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;QAC3B,UAAU,EAAE,OAAO,CAAC,WAAW;QAC/B,QAAQ,EAAE,OAAO,CAAC,kBAAkB;QACpC,WAAW,EAAE,OAAO,CAAC,kBAAkB,GAAG,IAAI,GAAG,IAAI;KACtD,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,qEAAqE,CAAC;CAC5H,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;CAChB,CAAC,CAAC;AAGH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAgB,EAAE,IAAqC;IACzF,MAAM,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,IAAI,cAAc,CACtB,WAAW,EACX,kBAAkB,IAAI,CAAC,QAAQ,qBAAqB;YAClD,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,iDAAiD,CAAC,CACpI,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AACjG,CAAC;AAED,8EAA8E;AAE9E,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,GAAgB;IACnE,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC;IACnD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,yCAAyC,CAAC;IAClI,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,eAAe,CAAC;IACzD,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,MAAM,YAAY,GAAG;QACnB,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,qBAAqB,UAAU,SAAS,KAAK,CAAC,QAAQ,CAAC,+CAA+C,OAAO,IAAI,UAAU;;;;;;+OAMmG;QAC3O,YAAY,EAAE,iBAAiB;QAC/B,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;KAC3E,CAAC;IACF,MAAM,aAAa,GAAG,KAAK,EAAE,IAAsC,EAAE,EAAE;QACrE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;QAC/G,OAAO,gBAAgB,CAAC,MAAM,EAAE,GAAG,IAAI,KAAK,MAAM,CAAC,QAAQ,uBAAuB,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IACxG,CAAC,CAAC;IACF,uFAAuF;IACvF,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,GAAG,YAAY,EAAE,WAAW,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IACrI,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,GAAG,YAAY,EAAE,WAAW,EAAE,gBAAgB,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IAC3I,CAAC;IAED,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE;;;;0GAIuF;QACpG,WAAW,EAAE,cAAc;QAC3B,YAAY,EAAE,eAAe;QAC7B,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9D,OAAO,gBAAgB,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,aAAa,MAAM,UAAU,MAAM,CAAC,QAAQ,WAAW,CAAC,CAAC;IAC1G,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE;;;;6EAI0D;QACvE,WAAW,EAAE,eAAe;QAC5B,YAAY,EAAE,gBAAgB;QAC9B,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9C,OAAO,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -149,7 +149,7 @@ It returns counts only, never what visitors typed (that is list_submissions, whi
149
149
  return structuredResult(result, `${result.count} form(s).`);
150
150
  });
151
151
  // Submissions are personal data typed by strangers; the user opts in.
152
- if (!ctx.flags.submissions)
152
+ if (!ctx.permissions.allowSubmissions)
153
153
  return;
154
154
  server.registerTool("list_submissions", {
155
155
  title: "Read form submissions (personal data)",
@@ -1 +1 @@
1
- {"version":3,"file":"forms.js","sourceRoot":"","sources":["../../src/tools/forms.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forms.js","sourceRoot":"","sources":["../../src/tools/forms.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import type { InputRequiredResult, McpServer, ServerContext } from "@modelcontextprotocol/server";
2
2
  import * as z from "zod";
3
3
  import type { ToolContext } from "../context.js";
4
- import { type ConfirmationTokens } from "../guards.js";
5
4
  export declare const ListPostsInput: z.ZodObject<{
6
5
  project: z.ZodString;
7
6
  slug: z.ZodOptional<z.ZodString>;
@@ -118,7 +117,7 @@ export declare const PreviewPostSendOutput: z.ZodObject<{
118
117
  expires_in_seconds: z.ZodNumber;
119
118
  }, z.core.$strip>;
120
119
  export type PreviewPostSendResult = z.infer<typeof PreviewPostSendOutput>;
121
- export declare function runPreviewPostSend(ctx: ToolContext, args: z.infer<typeof PreviewPostSendInput>, tokens?: ConfirmationTokens): Promise<PreviewPostSendResult>;
120
+ export declare function runPreviewPostSend(ctx: ToolContext, args: z.infer<typeof PreviewPostSendInput>): Promise<PreviewPostSendResult>;
122
121
  export declare const PublishPostInput: z.ZodObject<{
123
122
  project: z.ZodString;
124
123
  slug: z.ZodString;
@@ -148,7 +147,7 @@ export type PublishPostOutcome = {
148
147
  kind: "input";
149
148
  result: InputRequiredResult;
150
149
  };
151
- export declare function runPublishPost(ctx: ToolContext, args: z.infer<typeof PublishPostInput>, handlerCtx?: ServerContext, tokens?: ConfirmationTokens): Promise<PublishPostOutcome>;
150
+ export declare function runPublishPost(ctx: ToolContext, args: z.infer<typeof PublishPostInput>, handlerCtx?: ServerContext): Promise<PublishPostOutcome>;
152
151
  export declare const UnpublishPostInput: z.ZodObject<{
153
152
  project: z.ZodString;
154
153
  slug: z.ZodString;
@@ -4,7 +4,7 @@ import { MicropageError } from "../client/errors.js";
4
4
  import { countActiveSubscribers, deletePost, formNamesById, getPostBySlug, listPosts, postContentFingerprint, postNotFound, postWillEmail, publishPost, resolveHeroUrl, resolveListFormId, slugify, unhostedBodyImages, unpublishPost, upsertPost, } from "../client/posts.js";
5
5
  import { getMaxProjectDeployEventId } from "../client/deploy-events.js";
6
6
  import { ProjectRef, resolveProject } from "../client/project-ref.js";
7
- import { DEFAULT_TOKEN_TTL_MS, confirmationTokens, elicitConfirmation, requireConfirm, requireConfirmationToken, } from "../guards.js";
7
+ import { DEFAULT_TOKEN_TTL_MS, elicitConfirmation, requireConfirm, requireConfirmationToken } from "../guards.js";
8
8
  import { gateTool, structuredResult } from "./shared.js";
9
9
  const SlugInput = z
10
10
  .string()
@@ -287,9 +287,6 @@ function sendFacts(project, post) {
287
287
  };
288
288
  }
289
289
  const RESEND_WARNING = "This post is already published, so publishing again RE-SENDS the email to everyone on the list and resets its click-through stats.";
290
- const SEND_DISABLED = "Emailing from the MCP server is turned off. The user can turn it on by adding MICROPAGE_MCP_ALLOW_SEND=1 to this server's env in their MCP client config " +
291
- "and restarting it, or publish from the micropage editor or with `micropage posts publish`. To publish on the web only, save the post with email: false " +
292
- "(upsert_post), then call preview_post_send again.";
293
290
  async function loadPost(ctx, project, rawSlug) {
294
291
  const slug = normaliseSlug(rawSlug);
295
292
  const post = await getPostBySlug(ctx.http, project.id, slug);
@@ -322,7 +319,7 @@ export const PreviewPostSendOutput = z.object({
322
319
  confirmation_token: z.string().describe("Pass to publish_post. Invalid once the post changes, or after expires_in_seconds."),
323
320
  expires_in_seconds: z.number(),
324
321
  });
325
- export async function runPreviewPostSend(ctx, args, tokens = confirmationTokens) {
322
+ export async function runPreviewPostSend(ctx, args) {
326
323
  await gateTool(ctx, "preview_post_send");
327
324
  const project = await resolveProject(ctx, args.project);
328
325
  const post = await loadPost(ctx, project, args.slug);
@@ -331,7 +328,8 @@ export async function runPreviewPostSend(ctx, args, tokens = confirmationTokens)
331
328
  formNamesById(ctx.http, post.form_id ? [post.form_id] : []),
332
329
  facts.willEmail ? countActiveSubscribers(ctx.http, post.form_id) : Promise.resolve(0),
333
330
  ]);
334
- const blocked = facts.willEmail && !ctx.flags.allowSend;
331
+ const sub = await ctx.tier.currentUserId();
332
+ const blocked = facts.willEmail && !ctx.permissions.allowSend;
335
333
  return {
336
334
  project: projectBrief(project),
337
335
  post: {
@@ -347,10 +345,10 @@ export async function runPreviewPostSend(ctx, args, tokens = confirmationTokens)
347
345
  recipient_count: recipients,
348
346
  already_published: facts.alreadyPublished,
349
347
  resend_warning: facts.willEmail && facts.alreadyPublished ? RESEND_WARNING : null,
350
- send_allowed: ctx.flags.allowSend,
348
+ send_allowed: ctx.permissions.allowSend,
351
349
  publish_allowed: !blocked,
352
- blocked_reason: blocked ? SEND_DISABLED : null,
353
- confirmation_token: tokens.mint(facts.tokenPayload),
350
+ blocked_reason: blocked ? ctx.hints.sendDisabled : null,
351
+ confirmation_token: ctx.confirmationTokens.mint(sub, facts.tokenPayload),
354
352
  expires_in_seconds: Math.round(DEFAULT_TOKEN_TTL_MS / 1000),
355
353
  };
356
354
  }
@@ -381,15 +379,16 @@ export const PublishPostOutput = z.object({
381
379
  after_event_id: AfterEventIdOutput,
382
380
  note: z.string(),
383
381
  });
384
- export async function runPublishPost(ctx, args, handlerCtx, tokens = confirmationTokens) {
382
+ export async function runPublishPost(ctx, args, handlerCtx) {
385
383
  await gateTool(ctx, "publish_post");
386
384
  const project = await resolveProject(ctx, args.project);
387
385
  const post = await loadPost(ctx, project, args.slug);
388
386
  const facts = sendFacts(project, post);
389
- if (facts.willEmail && !ctx.flags.allowSend) {
390
- throw new MicropageError("SEND_DISABLED", `"${post.slug}" is set to email its list when published. ${SEND_DISABLED} Nothing was changed.`);
387
+ if (facts.willEmail && !ctx.permissions.allowSend) {
388
+ throw new MicropageError("SEND_DISABLED", `"${post.slug}" is set to email its list when published. ${ctx.hints.sendDisabled} Nothing was changed.`);
391
389
  }
392
- requireConfirmationToken(tokens, args.confirmation_token, facts.tokenPayload, "preview_post_send");
390
+ const sub = await ctx.tier.currentUserId();
391
+ requireConfirmationToken(ctx.confirmationTokens, args.confirmation_token, sub, facts.tokenPayload, "preview_post_send");
393
392
  if (facts.willEmail && handlerCtx) {
394
393
  const [lists, recipients] = await Promise.all([
395
394
  formNamesById(ctx.http, [post.form_id]),
@@ -542,11 +541,11 @@ Images are not uploaded here. For the hero pass an https URL or the filename of
542
541
  title: "Preview publishing a post",
543
542
  description: `Show what publish_post would do for one post, and get the confirmation_token publish_post requires. Call it before every publish and show the user the result.
544
543
 
545
- Reports whether publishing emails the newsletter list, the list name, the number of active subscribers it would go to, whether the post is already published (publishing again re-sends the email to the whole list), and whether this server is allowed to send email (MICROPAGE_MCP_ALLOW_SEND).
544
+ Reports whether publishing emails the newsletter list, the list name, the number of active subscribers it would go to, whether the post is already published (publishing again re-sends the email to the whole list), and whether this server is allowed to send email (${ctx.hints.sendSwitchName}).
546
545
 
547
546
  The token is tied to the post as it is now: any edit to the post (upsert_post) or to its list invalidates it, and it expires after 15 minutes or when the server restarts. Read-only: nothing is published or sent.`,
548
547
  inputSchema: PreviewPostSendInput,
549
- outputSchema: PreviewPostSendOutput,
548
+ outputSchema: PreviewPostSendOutput.extend({ send_allowed: z.boolean().describe(ctx.hints.sendAllowedField) }),
550
549
  annotations: RO,
551
550
  }, async (args) => {
552
551
  const result = await runPreviewPostSend(ctx, args);
@@ -561,7 +560,7 @@ The token is tied to the post as it is now: any edit to the post (upsert_post) o
561
560
 
562
561
  Needs the confirmation_token from preview_post_send, taken after the post's last change; show the user that preview and get their go-ahead first. A stale or missing token is refused with nothing changed.
563
562
 
564
- Posts that would send email are refused unless the user has set MICROPAGE_MCP_ALLOW_SEND=1 in this server's config; there is no web-only override, so to publish such a post on the web only, save it with email: false first. When the client supports it the user is also asked to confirm the send directly. ${REBUILD_NOTE} Use unpublish_post to take a post down.`,
563
+ Posts that would send email are refused unless ${ctx.hints.sendEnabledBy}; there is no web-only override, so to publish such a post on the web only, save it with email: false first. When the client supports it the user is also asked to confirm the send directly. ${REBUILD_NOTE} Use unpublish_post to take a post down.`,
565
564
  inputSchema: PublishPostInput,
566
565
  outputSchema: PublishPostOutput,
567
566
  annotations: OUT,