impreza-mcp 0.37.1 → 0.39.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.
package/README.md CHANGED
@@ -265,7 +265,7 @@ Static npm sites: choose build_strategy=node_npm_static with a Git/context sourc
265
265
 
266
266
  ## Status
267
267
 
268
- **Package version: 0.37.1.** The tool catalog covers app deployment plus account +
268
+ **Package version: 0.38.0.** The tool catalog covers app deployment plus account +
269
269
  crypto balance, catalog + ordering, domains/DNS + registration, invoices, VPS
270
270
  lifecycle with snapshots and backups, dedicated / bare-metal servers, plan
271
271
  upgrades, and Titan / Google Workspace mailboxes — with a setup wizard that
@@ -636,3 +636,37 @@ Python deployments may select python_package_manager=uv@0.12.15 with python_pip,
636
636
  `impreza_prepare_image_promotion`, `impreza_get_image_promotion` and `impreza_apply_image_promotion` review an exact registry digest for an existing destination configuration. Apply requires the returned review digest and explicit confirmation. Destination variables and data remain local to that application.
637
637
 
638
638
  Project/environment tools organize existing applications with explicit component associations. They do not copy variables, create network connections or deploy workloads. See the [project environments guide](https://docs.imprezahost.com/project-environments.html).
639
+
640
+ ### Reviewed deployment workflows
641
+
642
+ Version 0.38.0 adds environment configuration comparison, prepare/read/apply traffic
643
+ switches and explicit branch previews with optional password protection. Compare
644
+ returns variable names, never values. Traffic switches require a reviewed digest
645
+ and confirmation, keep the source running, and require operator reconciliation if
646
+ recovery cannot be verified. Protected preview credentials are shown once.
647
+ Traffic switches and protected previews require agent 0.6.16 or newer. Existing
648
+ servers update only at the customer's request. Assisted database restore is a REST
649
+ workflow. See [project environments](https://docs.imprezahost.com/project-environments.html)
650
+ and [deployment safety](https://docs.imprezahost.com/deployment-safety.html).
651
+
652
+ ### Basic Cloud VPS management
653
+
654
+ Basic Cloud VPS supports status and allocated resources through `impreza_api_call`,
655
+ and boot, graceful shutdown and reboot through `impreza_cloud_power`. Use the WHMCS
656
+ service ID from `impreza_list_services`. Advanced Cloud infrastructure tools are
657
+ no longer advertised; retired calls return `FEATURE_NOT_AVAILABLE`. Contact
658
+ Impreza support for other infrastructure changes. Ordering and cancellation keep
659
+ their normal account workflows. Application management through an enrolled agent
660
+ is separate.
661
+
662
+
663
+ ## Configuration, metrics and recovery (0.39.0)
664
+
665
+ Review application configuration with export/prepare/get/apply tools; inspect
666
+ per-app metrics and alert rules; download backup parts and review/apply a
667
+ PostgreSQL restore into a new database. Applying a review requires its digest
668
+ and explicit confirmation; acceptance is queued work, not verified completion.
669
+ The custom deploy and preparation tools also support `static_files` and
670
+ `go_build`. Metrics and MariaDB bindings require agent 0.6.17 or newer.
671
+ See [configuration, metrics and recovery](https://docs.imprezahost.com/customer-workflows.html)
672
+ for permissions, examples and limits. No automatic server update occurs.
@@ -0,0 +1,422 @@
1
+ import type { ImprezaClient } from './client.js';
2
+ export declare const CUSTOMER_TOOLS: ({
3
+ name: string;
4
+ description: string;
5
+ inputSchema: {
6
+ type: string;
7
+ properties: {
8
+ deployment_id: {
9
+ type: string;
10
+ pattern: string;
11
+ description?: never;
12
+ };
13
+ document?: never;
14
+ config_plan_id?: never;
15
+ review_digest?: never;
16
+ confirm?: never;
17
+ minutes?: never;
18
+ rule_id?: never;
19
+ metric?: never;
20
+ threshold?: never;
21
+ duration_minutes?: never;
22
+ enabled?: never;
23
+ backup_id?: never;
24
+ target_binding_id?: never;
25
+ restore_plan_id?: never;
26
+ };
27
+ required: string[];
28
+ additionalProperties: boolean;
29
+ };
30
+ annotations: {
31
+ readOnlyHint: boolean;
32
+ destructiveHint: boolean;
33
+ openWorldHint: boolean;
34
+ idempotentHint?: never;
35
+ };
36
+ title: string;
37
+ } | {
38
+ name: string;
39
+ description: string;
40
+ inputSchema: {
41
+ type: string;
42
+ properties: {
43
+ deployment_id: {
44
+ type: string;
45
+ pattern: string;
46
+ description?: never;
47
+ };
48
+ document: {
49
+ type: string;
50
+ description: string;
51
+ };
52
+ config_plan_id?: never;
53
+ review_digest?: never;
54
+ confirm?: never;
55
+ minutes?: never;
56
+ rule_id?: never;
57
+ metric?: never;
58
+ threshold?: never;
59
+ duration_minutes?: never;
60
+ enabled?: never;
61
+ backup_id?: never;
62
+ target_binding_id?: never;
63
+ restore_plan_id?: never;
64
+ };
65
+ required: string[];
66
+ additionalProperties: boolean;
67
+ };
68
+ annotations: {
69
+ readOnlyHint: boolean;
70
+ destructiveHint: boolean;
71
+ idempotentHint: boolean;
72
+ openWorldHint: boolean;
73
+ };
74
+ title: string;
75
+ } | {
76
+ name: string;
77
+ description: string;
78
+ inputSchema: {
79
+ type: string;
80
+ properties: {
81
+ config_plan_id: {
82
+ type: string;
83
+ pattern: string;
84
+ };
85
+ deployment_id?: never;
86
+ document?: never;
87
+ review_digest?: never;
88
+ confirm?: never;
89
+ minutes?: never;
90
+ rule_id?: never;
91
+ metric?: never;
92
+ threshold?: never;
93
+ duration_minutes?: never;
94
+ enabled?: never;
95
+ backup_id?: never;
96
+ target_binding_id?: never;
97
+ restore_plan_id?: never;
98
+ };
99
+ required: string[];
100
+ additionalProperties: boolean;
101
+ };
102
+ annotations: {
103
+ readOnlyHint: boolean;
104
+ destructiveHint: boolean;
105
+ openWorldHint: boolean;
106
+ idempotentHint?: never;
107
+ };
108
+ title: string;
109
+ } | {
110
+ name: string;
111
+ description: string;
112
+ inputSchema: {
113
+ type: string;
114
+ properties: {
115
+ config_plan_id: {
116
+ type: string;
117
+ pattern: string;
118
+ };
119
+ review_digest: {
120
+ type: string;
121
+ pattern: string;
122
+ };
123
+ confirm: {
124
+ type: string;
125
+ const: boolean;
126
+ };
127
+ deployment_id?: never;
128
+ document?: never;
129
+ minutes?: never;
130
+ rule_id?: never;
131
+ metric?: never;
132
+ threshold?: never;
133
+ duration_minutes?: never;
134
+ enabled?: never;
135
+ backup_id?: never;
136
+ target_binding_id?: never;
137
+ restore_plan_id?: never;
138
+ };
139
+ required: string[];
140
+ additionalProperties: boolean;
141
+ };
142
+ annotations: {
143
+ readOnlyHint: boolean;
144
+ destructiveHint: boolean;
145
+ idempotentHint: boolean;
146
+ openWorldHint: boolean;
147
+ };
148
+ title: string;
149
+ } | {
150
+ name: string;
151
+ description: string;
152
+ inputSchema: {
153
+ type: string;
154
+ properties: {
155
+ deployment_id: {
156
+ type: string;
157
+ description: string;
158
+ pattern?: never;
159
+ };
160
+ minutes: {
161
+ type: string;
162
+ description: string;
163
+ };
164
+ document?: never;
165
+ config_plan_id?: never;
166
+ review_digest?: never;
167
+ confirm?: never;
168
+ rule_id?: never;
169
+ metric?: never;
170
+ threshold?: never;
171
+ duration_minutes?: never;
172
+ enabled?: never;
173
+ backup_id?: never;
174
+ target_binding_id?: never;
175
+ restore_plan_id?: never;
176
+ };
177
+ required: string[];
178
+ additionalProperties: boolean;
179
+ };
180
+ annotations: {
181
+ readOnlyHint: boolean;
182
+ destructiveHint: boolean;
183
+ openWorldHint: boolean;
184
+ idempotentHint?: never;
185
+ };
186
+ title: string;
187
+ } | {
188
+ name: string;
189
+ description: string;
190
+ inputSchema: {
191
+ type: string;
192
+ properties: {
193
+ deployment_id: {
194
+ type: string;
195
+ description: string;
196
+ pattern?: never;
197
+ };
198
+ document?: never;
199
+ config_plan_id?: never;
200
+ review_digest?: never;
201
+ confirm?: never;
202
+ minutes?: never;
203
+ rule_id?: never;
204
+ metric?: never;
205
+ threshold?: never;
206
+ duration_minutes?: never;
207
+ enabled?: never;
208
+ backup_id?: never;
209
+ target_binding_id?: never;
210
+ restore_plan_id?: never;
211
+ };
212
+ required: string[];
213
+ additionalProperties: boolean;
214
+ };
215
+ annotations: {
216
+ readOnlyHint: boolean;
217
+ destructiveHint: boolean;
218
+ openWorldHint: boolean;
219
+ idempotentHint?: never;
220
+ };
221
+ title: string;
222
+ } | {
223
+ name: string;
224
+ description: string;
225
+ inputSchema: {
226
+ type: string;
227
+ properties: {
228
+ deployment_id: {
229
+ type: string;
230
+ description: string;
231
+ pattern?: never;
232
+ };
233
+ rule_id: {
234
+ type: string;
235
+ description: string;
236
+ };
237
+ metric: {
238
+ type: string;
239
+ enum: string[];
240
+ };
241
+ threshold: {
242
+ type: string;
243
+ description: string;
244
+ };
245
+ duration_minutes: {
246
+ type: string;
247
+ description: string;
248
+ };
249
+ enabled: {
250
+ type: string;
251
+ description: string;
252
+ };
253
+ document?: never;
254
+ config_plan_id?: never;
255
+ review_digest?: never;
256
+ confirm?: never;
257
+ minutes?: never;
258
+ backup_id?: never;
259
+ target_binding_id?: never;
260
+ restore_plan_id?: never;
261
+ };
262
+ required: string[];
263
+ additionalProperties: boolean;
264
+ };
265
+ annotations: {
266
+ readOnlyHint: boolean;
267
+ destructiveHint: boolean;
268
+ idempotentHint: boolean;
269
+ openWorldHint: boolean;
270
+ };
271
+ title: string;
272
+ } | {
273
+ name: string;
274
+ description: string;
275
+ inputSchema: {
276
+ type: string;
277
+ properties: {
278
+ backup_id: {
279
+ type: string;
280
+ pattern: string;
281
+ description: string;
282
+ };
283
+ target_binding_id: {
284
+ type: string;
285
+ pattern: string;
286
+ description: string;
287
+ };
288
+ deployment_id?: never;
289
+ document?: never;
290
+ config_plan_id?: never;
291
+ review_digest?: never;
292
+ confirm?: never;
293
+ minutes?: never;
294
+ rule_id?: never;
295
+ metric?: never;
296
+ threshold?: never;
297
+ duration_minutes?: never;
298
+ enabled?: never;
299
+ restore_plan_id?: never;
300
+ };
301
+ required: string[];
302
+ additionalProperties: boolean;
303
+ };
304
+ annotations: {
305
+ readOnlyHint: boolean;
306
+ destructiveHint: boolean;
307
+ idempotentHint: boolean;
308
+ openWorldHint: boolean;
309
+ };
310
+ title: string;
311
+ } | {
312
+ name: string;
313
+ description: string;
314
+ inputSchema: {
315
+ type: string;
316
+ properties: {
317
+ restore_plan_id: {
318
+ type: string;
319
+ pattern: string;
320
+ };
321
+ deployment_id?: never;
322
+ document?: never;
323
+ config_plan_id?: never;
324
+ review_digest?: never;
325
+ confirm?: never;
326
+ minutes?: never;
327
+ rule_id?: never;
328
+ metric?: never;
329
+ threshold?: never;
330
+ duration_minutes?: never;
331
+ enabled?: never;
332
+ backup_id?: never;
333
+ target_binding_id?: never;
334
+ };
335
+ required: string[];
336
+ additionalProperties: boolean;
337
+ };
338
+ annotations: {
339
+ readOnlyHint: boolean;
340
+ destructiveHint: boolean;
341
+ openWorldHint: boolean;
342
+ idempotentHint?: never;
343
+ };
344
+ title: string;
345
+ } | {
346
+ name: string;
347
+ description: string;
348
+ inputSchema: {
349
+ type: string;
350
+ properties: {
351
+ restore_plan_id: {
352
+ type: string;
353
+ pattern: string;
354
+ };
355
+ review_digest: {
356
+ type: string;
357
+ pattern: string;
358
+ };
359
+ confirm: {
360
+ type: string;
361
+ const: boolean;
362
+ };
363
+ deployment_id?: never;
364
+ document?: never;
365
+ config_plan_id?: never;
366
+ minutes?: never;
367
+ rule_id?: never;
368
+ metric?: never;
369
+ threshold?: never;
370
+ duration_minutes?: never;
371
+ enabled?: never;
372
+ backup_id?: never;
373
+ target_binding_id?: never;
374
+ };
375
+ required: string[];
376
+ additionalProperties: boolean;
377
+ };
378
+ annotations: {
379
+ readOnlyHint: boolean;
380
+ destructiveHint: boolean;
381
+ idempotentHint: boolean;
382
+ openWorldHint: boolean;
383
+ };
384
+ title: string;
385
+ } | {
386
+ name: string;
387
+ description: string;
388
+ inputSchema: {
389
+ type: string;
390
+ properties: {
391
+ backup_id: {
392
+ type: string;
393
+ pattern: string;
394
+ description: string;
395
+ };
396
+ deployment_id?: never;
397
+ document?: never;
398
+ config_plan_id?: never;
399
+ review_digest?: never;
400
+ confirm?: never;
401
+ minutes?: never;
402
+ rule_id?: never;
403
+ metric?: never;
404
+ threshold?: never;
405
+ duration_minutes?: never;
406
+ enabled?: never;
407
+ target_binding_id?: never;
408
+ restore_plan_id?: never;
409
+ };
410
+ required: string[];
411
+ additionalProperties: boolean;
412
+ };
413
+ annotations: {
414
+ readOnlyHint: boolean;
415
+ destructiveHint: boolean;
416
+ openWorldHint: boolean;
417
+ idempotentHint?: never;
418
+ };
419
+ title: string;
420
+ })[];
421
+ export declare function isCustomerTool(name: string): boolean;
422
+ export declare function callCustomerTool(client: ImprezaClient, name: string, args: Record<string, unknown>): Promise<unknown>;