impreza-mcp 0.49.0 → 0.51.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,39 @@ 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
+ ## Exact top-up amounts and checked IDs in API paths (0.51.0)
24
+
25
+ - **Exact top-up amounts.** `impreza_topup` accepts the amount as an exact decimal string (for example `"25.50"`)
26
+ and sends it to the API unchanged, without converting it to a binary floating-point number. A JSON number is still
27
+ accepted. Strings with an exponent, a sign, spaces or more than two decimal places are refused.
28
+ - **Every ID placed in an API path is checked.** The 0.50.0 guard for `deployment_id` now covers every identifier the
29
+ package places in an API URL path: task, backup, VPS, image, invoice, command, read and run IDs, agent IDs, onion
30
+ client names, the domain in tools that route by domain, and the dedicated IP for reverse DNS. A value that would add
31
+ or change path segments (`.`, `..`, `/`, `\`, `%`, whitespace or control characters) is refused before any request
32
+ leaves the process. Valid IDs are sent exactly as before.
33
+
34
+ ## Protect an app, safer deployment IDs and bare VPS orders (0.50.0)
35
+
36
+ - **Protect an app, as a guided prompt.** `prompts/list` adds `impreza_protect_app`. Starting from one of your
37
+ running apps, it walks the assistant through a cold standby on a server you own in another country: choose the
38
+ target with the human, create the standby (`impreza_deploy_catalog_app` with `standby: true`), pair it and run the
39
+ first restore drill, each step behind its own explicit human confirmation. After a verified drill it reports the
40
+ measured copy age and drill duration; these are measurements, not a guaranteed RPO or RTO. It never buys a server,
41
+ promotes the standby, switches traffic or changes DNS, and it covers the reviewed failover apps (Memos 0.31.0 and
42
+ Uptime Kuma 2.5.5). Like every prompt, it grants no authority.
43
+ - **Server locations:** `impreza_list_servers` returns each server's `failover_location` in its structured output:
44
+ `country_code`, `country_basis` (`verified`, `operator_verified` or `declared`; a country you declared for an
45
+ external server is not verified by Impreza) and `country_notice`.
46
+ - **Deployment IDs cannot add path segments.** A `deployment_id` that would add or change path segments in an API
47
+ URL (`.`, `..`, `/`, `\`, `%`, whitespace or control characters) is refused before any request leaves the process.
48
+ Valid IDs are sent exactly as before.
49
+ - **A VPS ordered through the API is bare by default.** `impreza_order_vps` and `impreza_vps_offer` now describe what
50
+ the API does: without `app`, the VPS is born with `app: "none"` (bare OS, no agent). Pass `app: "@agent"` explicitly
51
+ when the customer wants it deployable, or offer `impreza_install_agent` later with the customer's confirmation.
52
+ After ordering, poll `impreza_list_services`; `impreza_list_servers` lists only servers with an installed agent.
53
+ - **Exact direct dependencies.** The package pins its direct runtime dependencies to the exact versions it was tested
54
+ with (see [Dependency versions](#dependency-versions)).
55
+
23
56
  ## Install the agent, enter secrets outside the chat, and protect custom apps (0.49.0)
24
57
 
25
58
  - **`impreza_install_agent`** offers the Impreza agent on a managed VPS that does not have it yet, only with the
@@ -293,7 +326,7 @@ Static npm sites: choose build_strategy=node_npm_static with a Git/context sourc
293
326
 
294
327
  ## Status
295
328
 
296
- **Package version: 0.49.0.** The tool catalog covers app deployment plus account +
329
+ **Package version: 0.51.0.** The tool catalog covers app deployment plus account +
297
330
  crypto balance, catalog + ordering, domains/DNS + registration, invoices, VPS
298
331
  lifecycle with snapshots and backups, dedicated / bare-metal servers, plan
299
332
  upgrades, and Titan / Google Workspace mailboxes — with a setup wizard that
@@ -480,7 +513,7 @@ and `impreza_api_search` finds anything not named here.
480
513
  | **Catalog & ordering** | |
481
514
  | `impreza_list_products` | `GET /v1/products` — products + pricing; the VPS is listed at its smallest size (`configurable: true`) |
482
515
  | `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` |
516
+ | `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
517
  | **Domains & DNS** | |
485
518
  | `impreza_domain_check` | `GET /v1/domains/check` |
486
519
  | `impreza_domain_details` | `GET /v1/domains/{domain}` |
@@ -924,3 +957,9 @@ uninstalled application does not delete key material.
924
957
  See the [onion guide](https://docs.imprezahost.com/onion-services.html)
925
958
  for permissions, customer update steps and supported limitations.
926
959
 
960
+ ## Dependency versions
961
+
962
+ The package manifest pins each direct runtime dependency to an exact version: `@modelcontextprotocol/sdk` 1.29.0,
963
+ `tar` 7.5.22 and `zod` 3.25.76. Source builds use `package-lock.json` for the tested dependency tree. Transitive
964
+ dependencies may still change during a fresh consumer installation; dependency updates require a rebuilt package, a
965
+ 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
  }