impreza-mcp 0.49.0 → 0.50.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
@@ -20,6 +20,28 @@ Set `IMPREZA_BASE_URL` before pairing for a different API endpoint. HTTPS is req
20
20
 
21
21
  An existing credential file is never overwritten. Revoke an old paired key in clientarea before removing its file and pairing again. If an exchange or disk write fails, the code may already have been consumed: check and revoke the new key in clientarea before generating another code. Restart the AI client after pairing.
22
22
 
23
+ ## Protect an app, safer deployment IDs and bare VPS orders (0.50.0)
24
+
25
+ - **Protect an app, as a guided prompt.** `prompts/list` adds `impreza_protect_app`. Starting from one of your
26
+ running apps, it walks the assistant through a cold standby on a server you own in another country: choose the
27
+ target with the human, create the standby (`impreza_deploy_catalog_app` with `standby: true`), pair it and run the
28
+ first restore drill, each step behind its own explicit human confirmation. After a verified drill it reports the
29
+ measured copy age and drill duration; these are measurements, not a guaranteed RPO or RTO. It never buys a server,
30
+ promotes the standby, switches traffic or changes DNS, and it covers the reviewed failover apps (Memos 0.31.0 and
31
+ Uptime Kuma 2.5.5). Like every prompt, it grants no authority.
32
+ - **Server locations:** `impreza_list_servers` returns each server's `failover_location` in its structured output:
33
+ `country_code`, `country_basis` (`verified`, `operator_verified` or `declared`; a country you declared for an
34
+ external server is not verified by Impreza) and `country_notice`.
35
+ - **Deployment IDs cannot add path segments.** A `deployment_id` that would add or change path segments in an API
36
+ URL (`.`, `..`, `/`, `\`, `%`, whitespace or control characters) is refused before any request leaves the process.
37
+ Valid IDs are sent exactly as before.
38
+ - **A VPS ordered through the API is bare by default.** `impreza_order_vps` and `impreza_vps_offer` now describe what
39
+ the API does: without `app`, the VPS is born with `app: "none"` (bare OS, no agent). Pass `app: "@agent"` explicitly
40
+ when the customer wants it deployable, or offer `impreza_install_agent` later with the customer's confirmation.
41
+ After ordering, poll `impreza_list_services`; `impreza_list_servers` lists only servers with an installed agent.
42
+ - **Exact direct dependencies.** The package pins its direct runtime dependencies to the exact versions it was tested
43
+ with (see [Dependency versions](#dependency-versions)).
44
+
23
45
  ## Install the agent, enter secrets outside the chat, and protect custom apps (0.49.0)
24
46
 
25
47
  - **`impreza_install_agent`** offers the Impreza agent on a managed VPS that does not have it yet, only with the
@@ -293,7 +315,7 @@ Static npm sites: choose build_strategy=node_npm_static with a Git/context sourc
293
315
 
294
316
  ## Status
295
317
 
296
- **Package version: 0.49.0.** The tool catalog covers app deployment plus account +
318
+ **Package version: 0.50.0.** The tool catalog covers app deployment plus account +
297
319
  crypto balance, catalog + ordering, domains/DNS + registration, invoices, VPS
298
320
  lifecycle with snapshots and backups, dedicated / bare-metal servers, plan
299
321
  upgrades, and Titan / Google Workspace mailboxes — with a setup wizard that
@@ -480,7 +502,7 @@ and `impreza_api_search` finds anything not named here.
480
502
  | **Catalog & ordering** | |
481
503
  | `impreza_list_products` | `GET /v1/products` — products + pricing; the VPS is listed at its smallest size (`configurable: true`) |
482
504
  | `impreza_vps_offer` | `GET /v1/products/vps` — VPS locations, operating systems, CPU / memory / disk ranges and prices; with a whole configuration, `GET /v1/products/vps/quote` — its exact price |
483
- | `impreza_order_vps` | `POST /v1/orders` — a VPS by location, OS and size (or a fixed plan by `product_id`); paid from balance; born deployable (`@agent`); 202 + poll `impreza_list_servers` |
505
+ | `impreza_order_vps` | `POST /v1/orders` — a VPS by location, OS and size (or a fixed plan by `product_id`); paid from balance; bare OS by default (`app: "none"`); explicitly request `app: "@agent"` for deployment, or use `impreza_install_agent` later with customer confirmation; 202 + poll `impreza_list_services` |
484
506
  | **Domains & DNS** | |
485
507
  | `impreza_domain_check` | `GET /v1/domains/check` |
486
508
  | `impreza_domain_details` | `GET /v1/domains/{domain}` |
@@ -924,3 +946,9 @@ uninstalled application does not delete key material.
924
946
  See the [onion guide](https://docs.imprezahost.com/onion-services.html)
925
947
  for permissions, customer update steps and supported limitations.
926
948
 
949
+ ## Dependency versions
950
+
951
+ The package manifest pins each direct runtime dependency to an exact version: `@modelcontextprotocol/sdk` 1.29.0,
952
+ `tar` 7.5.22 and `zod` 3.25.76. Source builds use `package-lock.json` for the tested dependency tree. Transitive
953
+ dependencies may still change during a fresh consumer installation; dependency updates require a rebuilt package, a
954
+ clean installation test and a review of the installed tree before release.
@@ -11914,6 +11914,42 @@ export const OUTPUT_SCHEMAS = {
11914
11914
  "object",
11915
11915
  "null"
11916
11916
  ]
11917
+ },
11918
+ "failover_location": {
11919
+ "oneOf": [
11920
+ {
11921
+ "type": "null"
11922
+ },
11923
+ {
11924
+ "type": "object",
11925
+ "additionalProperties": false,
11926
+ "required": [
11927
+ "country_code",
11928
+ "country_basis",
11929
+ "country_notice"
11930
+ ],
11931
+ "properties": {
11932
+ "country_code": {
11933
+ "type": "string",
11934
+ "pattern": "^[A-Z]{2}$"
11935
+ },
11936
+ "country_basis": {
11937
+ "type": "string",
11938
+ "enum": [
11939
+ "verified",
11940
+ "operator_verified",
11941
+ "declared"
11942
+ ]
11943
+ },
11944
+ "country_notice": {
11945
+ "type": [
11946
+ "string",
11947
+ "null"
11948
+ ]
11949
+ }
11950
+ }
11951
+ }
11952
+ ]
11917
11953
  }
11918
11954
  }
11919
11955
  }