@withpica/mcp-server 2.40.0 → 2.43.0

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.
@@ -15,14 +15,22 @@ export class SettingsTools {
15
15
  {
16
16
  definition: {
17
17
  name: "pica_storage_status",
18
- description: "Check storage configuration and usage — which cloud provider is active " +
19
- "(PICA default, your own S3, GCS, Azure, R2, or Backblaze), " +
20
- "bucket names, and how much storage you've used.",
18
+ description: "Check storage configuration and connection health — which cloud " +
19
+ "provider is active (PICA default, your own S3, GCS, Azure, R2, or " +
20
+ "Backblaze), bucket names, region, and the last-test result so the " +
21
+ "agent can say 'your S3 bucket failed its last health check' without " +
22
+ "re-running a probe. Never returns credentials. Pair with " +
23
+ "pica_storage_configure_start to set up BYOC, or pica_storage_disconnect " +
24
+ "to revert to PICA default. ADR-217.",
21
25
  workflows: "infrastructure",
22
26
  inputSchema: {
23
27
  type: "object",
24
28
  properties: {},
25
29
  },
30
+ annotations: {
31
+ readOnlyHint: true,
32
+ idempotentHint: true,
33
+ },
26
34
  },
27
35
  executor: this.storageStatus.bind(this),
28
36
  },
@@ -195,8 +203,39 @@ export class SettingsTools {
195
203
  async storageStatus(_args) {
196
204
  const result = await this.pica.settings.storageConfig();
197
205
  const config = result?.data || result;
198
- const provider = config?.storage_provider || "pica_s3";
199
- return formatSuccess(`Storage provider: ${provider}${provider === "pica_s3" ? " (PICA default)" : " (your own)"}`, config);
206
+ // ADR-217 surface the enhanced shape to the agent. Never include
207
+ // credentials. The GET endpoint already masks secret fields and only
208
+ // returns the un-masked region; we read just the structured non-secret
209
+ // fields so a future credential leak in `config.credentials` cannot
210
+ // accidentally appear in tool output.
211
+ const provider = config?.provider || "pica_s3";
212
+ const isByoc = typeof config?.is_byoc === "boolean"
213
+ ? config.is_byoc
214
+ : provider !== "pica_s3";
215
+ const lastTestStatus = config?.last_test_status ?? "untested";
216
+ const lastTestedAt = config?.last_tested_at ?? null;
217
+ const lastTestError = config?.last_test_error ?? null;
218
+ const region = config?.region ?? null;
219
+ const buckets = config?.buckets || { audio: "", media: "", documents: "" };
220
+ const summary = isByoc
221
+ ? `Storage provider: ${provider} (your own bucket). Last test: ${lastTestStatus}` +
222
+ (lastTestStatus === "failed" && lastTestError
223
+ ? ` — ${lastTestError}`
224
+ : "")
225
+ : `Storage provider: pica_s3 (PICA default — always available).`;
226
+ return formatSuccess(summary, {
227
+ provider,
228
+ is_byoc: isByoc,
229
+ buckets: {
230
+ audio: buckets.audio || "",
231
+ media: buckets.media || "",
232
+ documents: buckets.documents || "",
233
+ },
234
+ region,
235
+ last_tested_at: lastTestedAt,
236
+ last_test_status: lastTestStatus,
237
+ last_test_error: lastTestError,
238
+ });
200
239
  }
201
240
  async orgProfile(_args) {
202
241
  const result = await this.pica.settings.orgProfile();
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/tools/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/tools/settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { PicaClient } from "@withpica/mcp-sdk";
2
+ import { ToolDefinition, ToolExecutor } from "./index.js";
3
+ export declare class StorageConfigTools {
4
+ private pica;
5
+ constructor(pica: PicaClient);
6
+ getTools(): Array<{
7
+ definition: ToolDefinition;
8
+ executor: ToolExecutor;
9
+ }>;
10
+ private configureStart;
11
+ private disconnect;
12
+ }
13
+ //# sourceMappingURL=storage-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-config.d.ts","sourceRoot":"","sources":["../../src/tools/storage-config.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EACL,cAAc,EACd,YAAY,EAGb,MAAM,YAAY,CAAC;AAiBpB,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,UAAU;IAI5B,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;YA6E3D,cAAc;YA4Hd,UAAU;CAgDzB"}
@@ -0,0 +1,245 @@
1
+ // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
+ /**
3
+ * Storage Configuration Tools — ADR-217 Primitives B + C.
4
+ *
5
+ * `pica_storage_status` (Primitive A) lives in `settings.ts` (ADR-184/189
6
+ * settings cluster — kept there to avoid churn). This file owns the two
7
+ * mutating verbs:
8
+ *
9
+ * B — `pica_storage_configure_start` — mints a JWT-bound URL pointing at
10
+ * `/storage/configure/<token>` where the user pastes credentials. Same
11
+ * JWT-URL pattern as ADR-208 P2 upload + ADR-211 P1 signup.
12
+ *
13
+ * C — `pica_storage_disconnect` — reverts org back to PICA-managed default.
14
+ * Destructive (future uploads route differently); two-step confirmation
15
+ * handled by the destructive-tool gate in index.ts via
16
+ * `risk: "destructive"` in metadata.ts. Does NOT delete files in the
17
+ * BYOC bucket; only removes the org's pointer (idempotent).
18
+ *
19
+ * Both tools call public backend endpoints to mint / mutate; the
20
+ * `STORAGE_CONFIG_TOKEN_SECRET` never leaves the backend so customer-
21
+ * distributed binaries (`npx @withpica/mcp-server`) cannot mint tokens
22
+ * locally.
23
+ */
24
+ import { randomUUID } from "node:crypto";
25
+ import { clientSupportsUrlElicitation } from "@withpica/mcp-utils";
26
+ const VALID_PROVIDERS = ["s3", "gcs", "azure", "r2", "backblaze"];
27
+ export class StorageConfigTools {
28
+ pica;
29
+ constructor(pica) {
30
+ this.pica = pica;
31
+ }
32
+ getTools() {
33
+ return [
34
+ {
35
+ definition: {
36
+ name: "pica_storage_configure_start",
37
+ description: "Set up your own cloud storage bucket (BYOC) instead of PICA's default — " +
38
+ "supports AWS S3, Google Cloud Storage, Azure Blob, Cloudflare R2, " +
39
+ "and Backblaze B2. Mints a single-use configure link valid for 15 minutes; " +
40
+ "surface the URL to the user as a clickable resource_link. The link opens " +
41
+ "a page that collects bucket names + credentials, runs a real PUT/HEAD/DELETE " +
42
+ "test against your bucket, and only saves on success. Future uploads route " +
43
+ "to the configured bucket; existing files stay where they are. Use " +
44
+ "pica_storage_disconnect to revert to PICA default. ADR-217.",
45
+ workflows: "infrastructure",
46
+ inputSchema: {
47
+ type: "object",
48
+ properties: {
49
+ provider: {
50
+ type: "string",
51
+ enum: [...VALID_PROVIDERS],
52
+ description: "The storage provider you want to connect. Use pica_storage_disconnect " +
53
+ "to revert to PICA-managed (pica_s3) — that's not a valid value here.",
54
+ },
55
+ purpose: {
56
+ type: "string",
57
+ description: "Optional free-text — why the user is configuring BYOC " +
58
+ "(e.g. 'compliance requires data in eu-west-1', 'consolidate billing'). " +
59
+ "Captured for product analytics. Not surfaced to the user.",
60
+ },
61
+ },
62
+ required: ["provider"],
63
+ },
64
+ annotations: {
65
+ readOnlyHint: false,
66
+ destructiveHint: false,
67
+ },
68
+ },
69
+ executor: this.configureStart.bind(this),
70
+ },
71
+ {
72
+ definition: {
73
+ name: "pica_storage_disconnect",
74
+ description: "Revert your storage to PICA-managed default. Future uploads will route " +
75
+ "to PICA's buckets; existing files in your BYOC bucket are NOT deleted — " +
76
+ "they remain in your bucket and continue to be accessible by your URLs. " +
77
+ "Two-step destructive: the first call returns a confirmation token; the " +
78
+ "second call with the token executes. Idempotent — calling on an already-" +
79
+ "PICA-managed org is a no-op. ADR-217.",
80
+ workflows: "infrastructure",
81
+ inputSchema: {
82
+ type: "object",
83
+ properties: {
84
+ confirmation_token: {
85
+ type: "string",
86
+ description: "Token returned by the first call. Pass it back to confirm. " +
87
+ "If omitted, the tool returns confirmation_required + a fresh " +
88
+ "token. The destructive-tool dispatcher in tools/index.ts " +
89
+ "validates the token automatically.",
90
+ },
91
+ },
92
+ },
93
+ annotations: {
94
+ readOnlyHint: false,
95
+ destructiveHint: true,
96
+ idempotentHint: true,
97
+ },
98
+ },
99
+ executor: this.disconnect.bind(this),
100
+ },
101
+ ];
102
+ }
103
+ async configureStart(args, ctx) {
104
+ const provider = typeof args.provider === "string" ? args.provider : "";
105
+ if (!VALID_PROVIDERS.includes(provider)) {
106
+ return {
107
+ content: [
108
+ {
109
+ type: "text",
110
+ text: `provider must be one of: ${VALID_PROVIDERS.join(", ")}.`,
111
+ },
112
+ ],
113
+ isError: true,
114
+ };
115
+ }
116
+ const purpose = typeof args.purpose === "string" && args.purpose.trim().length > 0
117
+ ? args.purpose.trim()
118
+ : undefined;
119
+ // Calls the public mint endpoint. Same shape as
120
+ // pica_signup_start → /api/public/onboarding/signup-start.
121
+ let response;
122
+ try {
123
+ response = (await this.pica.request("POST", "/admin/settings/storage/configure-start", purpose ? { provider, purpose } : { provider }));
124
+ }
125
+ catch (err) {
126
+ const message = err instanceof Error ? err.message : "network error";
127
+ return {
128
+ content: [
129
+ {
130
+ type: "text",
131
+ text: `couldn't mint your configure link (${message}). check your connection and try again.`,
132
+ },
133
+ ],
134
+ isError: true,
135
+ };
136
+ }
137
+ if (!response?.url || !response?.expires_at) {
138
+ return {
139
+ content: [
140
+ {
141
+ type: "text",
142
+ text: "the configure endpoint returned an incomplete response. please try again.",
143
+ },
144
+ ],
145
+ isError: true,
146
+ };
147
+ }
148
+ const url = response.url;
149
+ const expiresAt = response.expires_at;
150
+ const textSummary = `configure link minted for ${provider}. surface this URL to the user — ` +
151
+ `they should click it to paste their bucket names and credentials. ` +
152
+ `the link expires at ${expiresAt} (15 minutes from now). after they ` +
153
+ `submit, we run a real test (PUT + HEAD + DELETE on each bucket) and ` +
154
+ `only save on success.`;
155
+ const resourceLink = {
156
+ type: "resource_link",
157
+ uri: url,
158
+ name: `Configure ${provider} storage`,
159
+ description: "Open this link to enter your bucket names and credentials. " +
160
+ "We test the connection before saving.",
161
+ mimeType: "text/html",
162
+ };
163
+ const baseContent = [
164
+ {
165
+ type: "text",
166
+ text: JSON.stringify({
167
+ text_summary: textSummary,
168
+ configure_url: url,
169
+ expires_at: expiresAt,
170
+ provider,
171
+ surface: response.surface ?? "storage-config",
172
+ }),
173
+ },
174
+ resourceLink,
175
+ ];
176
+ // Capability-gated url elicitation per
177
+ // `feedback_mcp_sdk_capability_gates_elicitation.md` — the SDK throws
178
+ // synchronously if the client doesn't advertise `elicitation.url`.
179
+ if (clientSupportsUrlElicitation(ctx?.server)) {
180
+ try {
181
+ await ctx.server.elicitInput({
182
+ mode: "url",
183
+ url,
184
+ elicitationId: `pica-storage-config-${randomUUID()}`,
185
+ message: `Open this URL to configure ${provider} storage. Expires at ${expiresAt}.`,
186
+ }, { timeout: 60_000 });
187
+ }
188
+ catch {
189
+ // user declined / cancelled / timed out — `resource_link` remains
190
+ // usable so we degrade silently rather than fail the tool.
191
+ }
192
+ }
193
+ return {
194
+ content: baseContent,
195
+ structuredContent: {
196
+ kind: "pica.card.storage_configure_start",
197
+ version: 1,
198
+ data: {
199
+ configure_url: url,
200
+ expires_at: expiresAt,
201
+ provider,
202
+ },
203
+ },
204
+ };
205
+ }
206
+ async disconnect(args, _ctx) {
207
+ // Note: the destructive-tool gate in index.ts validates
208
+ // `confirmation_token` before this executor runs. By the time we're
209
+ // here, the token has been consumed and we can perform the disconnect.
210
+ void args;
211
+ let response;
212
+ try {
213
+ response = (await this.pica.request("POST", "/admin/settings/storage/disconnect", {}));
214
+ }
215
+ catch (err) {
216
+ const message = err instanceof Error ? err.message : "network error";
217
+ return {
218
+ content: [
219
+ {
220
+ type: "text",
221
+ text: `couldn't disconnect (${message}). please try again.`,
222
+ },
223
+ ],
224
+ isError: true,
225
+ };
226
+ }
227
+ const previousProvider = response?.previous_provider ?? "unknown";
228
+ const summary = previousProvider === "pica_s3" || previousProvider === "unknown"
229
+ ? "you were already on PICA-managed storage — no change."
230
+ : `disconnected ${previousProvider}. future uploads route to PICA-managed storage. ` +
231
+ `your existing files in the ${previousProvider} bucket are not deleted.`;
232
+ return {
233
+ content: [{ type: "text", text: summary }],
234
+ structuredContent: {
235
+ kind: "pica.card.storage_disconnected",
236
+ version: 1,
237
+ data: {
238
+ previous_provider: previousProvider,
239
+ current_provider: "pica_s3",
240
+ },
241
+ },
242
+ };
243
+ }
244
+ }
245
+ //# sourceMappingURL=storage-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-config.js","sourceRoot":"","sources":["../../src/tools/storage-config.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@withpica/mcp-server",
3
3
  "mcpName": "io.github.withpica/pica",
4
- "version": "2.40.0",
4
+ "version": "2.43.0",
5
5
  "description": "MCP Server for PICA Platform - enables AI assistants to interact with PICA",
6
6
  "type": "module",
7
7
  "main": "dist/index.js",
@@ -33,8 +33,8 @@
33
33
  "license": "MIT",
34
34
  "dependencies": {
35
35
  "@modelcontextprotocol/sdk": "^1.27.1",
36
- "@withpica/mcp-sdk": "^1.17.0",
37
- "@withpica/mcp-utils": "^1.12.0",
36
+ "@withpica/mcp-sdk": "^1.18.0",
37
+ "@withpica/mcp-utils": "^1.14.0",
38
38
  "mppx": "^0.5.0"
39
39
  },
40
40
  "devDependencies": {