[{"slug":"ZV-2026-1754","server_name":"mcp.eqvps.com","severity":"breaking","title":"mcp.eqvps.com: Type of invoice_id on pay_invoice changed integer → string.","summary":"[safe] Tool change_plan was added. [safe] Tool get_started was added. [safe] Tool get_upgrade_options was added. [safe] Tool undo_cancel was added. [safe] Description of accept_delegation changed (3% word delta). [risky] Description of cancel_service changed (31% word delta). [safe] Description of close_ticket changed (8% word delta). [safe] Description of create_sandbox changed (10% word delta). [safe] Description of create_ticket changed (6% word delta). [safe] Description of delegate_service changed (5% word delta). [safe] Description of download_file changed (13% word delta). [safe] Description of exec_command changed (11% word delta). [safe] Description of get_balance changed (10% word delta). [safe] Description of get_sandbox changed (6% word delta). [safe] Description of get_task changed (3% word delta). [safe] Description of get_ticket changed (6% word delta). [safe] Description of get_vps_metrics changed (11% word delta). [safe] Description of get_vps_status changed (3% word delta). [risky] Description of kill_sandbox changed (46% word delta). [safe] Description of kill_task changed (10% word delta). [safe] Description of list_delegated_to_me changed (10% word delta). [safe] Description of list_delegations changed (9% word delta). [safe] Description of list_sandboxes changed (13% word delta). [safe] Description of list_tickets changed (10% word delta). [safe] Description of list_vps changed (5% word delta). [safe] Description of login changed (17% word delta). [safe] Description of order_vps changed (5% word delta). [risky] Description of pay_invoice changed (36% word delta). [safe] Field invoice_id on pay_invoice is no longer required. [breaking] Type of invoice_id on pay_invoice changed integer → string. [risky] Description of power_vps changed (65% word delta). [safe] Description of register_account changed (11% word delta). [safe] Description of reinstall_vps changed (6% word delta). [safe] Description of reply_ticket changed (12% word delta). [safe] De","changes":[{"kind":"tool_added","tool":"change_plan","detail":"Tool `change_plan` was added.","severity":"safe"},{"kind":"tool_added","tool":"get_started","detail":"Tool `get_started` was added.","severity":"safe"},{"kind":"tool_added","tool":"get_upgrade_options","detail":"Tool `get_upgrade_options` was added.","severity":"safe"},{"kind":"tool_added","tool":"undo_cancel","detail":"Tool `undo_cancel` was added.","severity":"safe"},{"kind":"description_changed","tool":"accept_delegation","after":"Accept a delegation invitation using the `token` from the invite link. Requires being signed in as the invited email address: it grants operator access to your own account. No new token is returned — keep using yours. Requires: token of the invited email.","before":"Accept a delegation invitation using the `token` from the invite link. Requires being signed in as the invited email address: it grants operator access to your own account. No new token is returned — keep using yours.","detail":"Description of `accept_delegation` changed (3% word delta).","severity":"safe","descriptionDelta":0.030303030303030276},{"kind":"description_changed","tool":"cancel_service","after":"Cancel a VPS. DEFAULT `end_of_period`: the server stays active until the end of the already-paid period, then is simply not renewed — NO data loss now, safe. `immediate` DESTROYS the VM and ALL data right away, permanently and irreversibly, and REQUIRES `confirm` set to the exact server hostname (see get_vps_status). Use end_of_period unless you explicitly intend to wipe the server now. On `immediate`, the unused portion of the already-paid period is refunded to your account balance (see `refund_amount` in the response). Already scheduled end_of_period? Call `undo_cancel` to keep the server, or call cancel_service again with type=immediate + confirm to switch to immediate destruction (refund as above). get_vps_status shows `cancellation` {type, cancel_at, can_undo}. Requires: token + reason; immediate also needs confirm=hostname. Typical: 409 cancellation_already_scheduled → undo_cancel, or repeat with type=immediate.","before":"Cancel a VPS. DEFAULT `end_of_period`: the server stays active until the end of the already-paid period, then is simply not renewed — NO data loss now, safe. `immediate` DESTROYS the VM and ALL data right away, permanently and irreversibly, and REQUIRES `confirm` set to the exact server hostname (see get_vps_status). Use end_of_period unless you explicitly intend to wipe the server now. On `immediate`, the unused portion of the already-paid period is refunded to your account balance (see `refund_amount` in the response).","detail":"Description of `cancel_service` changed (31% word delta).","severity":"risky","descriptionDelta":0.30952380952380953},{"kind":"description_changed","tool":"close_ticket","after":"Close one of your tickets. `rating` (1-5) and `comment` are OPTIONAL — you can close without rating. Use the ticket code from create_ticket / list_tickets. Requires: token.","before":"Close one of your tickets. `rating` (1-5) and `comment` are OPTIONAL — you can close without rating. Use the ticket code from create_ticket / list_tickets.","detail":"Description of `close_ticket` changed (8% word delta).","severity":"safe","descriptionDelta":0.08333333333333337},{"kind":"description_changed","tool":"create_sandbox","after":"Start an isolated Firecracker microVM sandbox (ready in about 1 s; Linux with Python 3.12 + pip, Node.js 22 + npm, bash, git and curl; internet egress allowed so pip/npm install and git clone work; no inbound ports, SMTP blocked). `mode`: \"ephemeral\" (default — billed per second, minimum 60 s, auto-deleted after `idle_timeout` s of inactivity, default 300, max lifetime `ttl` up to 24 h) or \"persistent\" (billed per started hour, a month costs at most 730 h minus 25%; survives host maintenance; max `ttl` 30 days). `tariff` (default small): micro 0.25 vCPU/512 MB RAM/3 GB disk $0.0165/h · small 0.5 vCPU/1 GB RAM/5 GB disk $0.033/h · standard 1 vCPU/2 GB RAM/10 GB disk $0.066/h · plus 2 vCPU/4 GB RAM/15 GB disk $0.132/h · pro 4 vCPU/8 GB RAM/20 GB disk $0.264/h · max 8 vCPU/16 GB RAM/40 GB disk $0.528/h (pick plus or bigger for heavy pip installs such as torch, builds or data work). Headless browsers (Chromium via Playwright/Puppeteer) need `standard` or bigger — micro/small do not have enough RAM. If the host is busy the call fails with 503 capacity (Retry-After) — retry or choose a smaller tariff. Charged from the same prepaid balance as VPS (no subscription). Empty balance → 402 insufficient_balance (top up with topup_balance). If the balance runs out later, persistent sandboxes are paused (memory+disk snapshot, not billed) and resume automatically after a top-up; paused snapshots are deleted after 14 days. The response has `state: \"running\"` and `ready: true` once you can exec (usually immediately); if it says `starting`, call get_sandbox after 1-2 s. Always kill_sandbox when done. Requires: token + balance. Typical errors: 402 insufficient_balance → topup_balance; 503 capacity → retry or smaller tariff.","before":"Start an isolated Firecracker microVM sandbox (ready in about 1 s; Linux with Python 3.12 + pip, Node.js 22 + npm, bash, git and curl; internet egress allowed so pip/npm install and git clone work; no inbound ports, SMTP blocked). `mode`: \"ephemeral\" (default — billed per second, minimum 60 s, auto-deleted after `idle_timeout` s of inactivity, default 300, max lifetime `ttl` up to 24 h) or \"persistent\" (billed per started hour, a month costs at most 730 h minus 25%; survives host maintenance; max `ttl` 30 days). `tariff` (vCPU / RAM / disk, $/hour): micro 0.25/512 MB/3 GB $0.0165 · small (default) 0.5/1 GB/5 GB $0.033 · standard 1/2 GB/10 GB $0.066 · plus 2/4 GB/15 GB $0.132 · pro 4/8 GB/20 GB $0.264 · max 8/16 GB/40 GB $0.528 (pick plus or bigger for heavy pip installs such as torch, builds or data work). Headless browsers (Chromium via Playwright/Puppeteer) need `standard` or bigger — micro/small do not have enough RAM. If the host is busy the call fails with 503 capacity (Retry-After) — retry or choose a smaller tariff. Charged from the same prepaid balance as VPS (no subscription). Empty balance → 402 insufficient_balance (top up with topup_balance). If the balance runs out later, persistent sandboxes are paused (memory+disk snapshot, not billed) and resume automatically after a top-up; paused snapshots are deleted after 14 days. Always kill_sandbox when done.","detail":"Description of `create_sandbox` changed (10% word delta).","severity":"safe","descriptionDelta":0.10382513661202186},{"kind":"description_changed","tool":"create_ticket","after":"Open a support ticket with EQVPS. `subject` and `message` are required; optional `service_id` ties it to one of your VPS. The response includes the ticket `code` — use that with get_ticket / reply_ticket / close_ticket. Requires: token.","before":"Open a support ticket with EQVPS. `subject` and `message` are required; optional `service_id` ties it to one of your VPS. The response includes the ticket `code` — use that with get_ticket / reply_ticket / close_ticket.","detail":"Description of `create_ticket` changed (6% word delta).","severity":"safe","descriptionDelta":0.06451612903225812},{"kind":"description_changed","tool":"delegate_service","after":"Grant OPERATOR access to one of YOUR VPS to another person by email (they can power/reinstall/console/hostname/rdns, but NOT renew, cancel or change billing). Sends them an invitation with an accept link. Optional `expires_days` for time-limited access. Owner-only. Requires: token (owner).","before":"Grant OPERATOR access to one of YOUR VPS to another person by email (they can power/reinstall/console/hostname/rdns, but NOT renew, cancel or change billing). Sends them an invitation with an accept link. Optional `expires_days` for time-limited access. Owner-only.","detail":"Description of `delegate_service` changed (5% word delta).","severity":"safe","descriptionDelta":0.04761904761904767},{"kind":"description_changed","tool":"download_file","after":"Read a file from the sandbox (absolute `path`, max 5 MB). Returns `content` as UTF-8 text by default; set `as_text: false` to get `content_base64` for binary files. Requires: token + live sandbox_id. Max 5 MB.","before":"Read a file from the sandbox (absolute `path`, max 5 MB). Returns `content` as UTF-8 text by default; set `as_text: false` to get `content_base64` for binary files.","detail":"Description of `download_file` changed (13% word delta).","severity":"safe","descriptionDelta":0.125},{"kind":"description_changed","tool":"exec_command","after":"Execute a shell command (bash -lc) in a sandbox as root and return {exit_code, stdout, stderr, timed_out, truncated, duration_ms}. Shell operators are fine and never filtered: `apt-get update && pip install x | tee log; echo done > out`. If you call the server with raw HTTP/curl, the JSON body must be valid — escape double quotes inside `command` (\\\") or build the body with a JSON library; a broken body returns a JSON-RPC parse error (-32700), not a firewall block. Optional `cwd` (default /root) and `timeout` (default 30 s, max 55 per call). For commands longer than 55 s (builds, training, long downloads) set `background: true`: you get a `task_id` at once, then poll get_task for output and the exit code; kill_task stops it. Requires: token + live sandbox_id. Typical: timed_out after 55 s → repeat with background: true; 404 → sandbox expired, create a new one.","before":"Execute a shell command (bash -lc) in a sandbox as root and return {exit_code, stdout, stderr, timed_out, truncated, duration_ms}. Shell operators are fine and never filtered: `apt-get update && pip install x | tee log; echo done > out`. If you call the server with raw HTTP/curl, the JSON body must be valid — escape double quotes inside `command` (\\\") or build the body with a JSON library; a broken body returns a JSON-RPC parse error (-32700), not a firewall block. Optional `cwd` (default /root) and `timeout` (default 30 s, max 55 per call). For commands longer than 55 s (builds, training, long downloads) set `background: true`: you get a `task_id` at once, then poll get_task for output and the exit code; kill_task stops it.","detail":"Description of `exec_command` changed (11% word delta).","severity":"safe","descriptionDelta":0.11111111111111116},{"kind":"description_changed","tool":"get_balance","after":"Return the account's prepaid credit balance and currency. `order_vps` spends from this balance automatically when it is sufficient. Requires: token.","before":"Return the account's prepaid credit balance and currency. `order_vps` spends from this balance automatically when it is sufficient.","detail":"Description of `get_balance` changed (10% word delta).","severity":"safe","descriptionDelta":0.09999999999999998},{"kind":"description_changed","tool":"get_sandbox","after":"Status of one sandbox (state running/paused, mode, tariff, expires_at; paused ones show pause_reason and delete_after) plus usage: running seconds, CPU seconds actually used, egress bytes, price per hour, amount already billed and the estimated total so far. Requires: token.","before":"Status of one sandbox (state running/paused, mode, tariff, expires_at; paused ones show pause_reason and delete_after) plus usage: running seconds, CPU seconds actually used, egress bytes, price per hour, amount already billed and the estimated total so far.","detail":"Description of `get_sandbox` changed (6% word delta).","severity":"safe","descriptionDelta":0.05555555555555558},{"kind":"description_changed","tool":"get_task","after":"Status and NEW output of a background task: `state` (running | done | failed | killed | timeout), `exit_code`, and the stdout/stderr text produced since the offsets you pass. Start with offsets 0, then pass `stdout_next_offset` / `stderr_next_offset` from the previous response to get only new output. `done: true` means finished. Poll every few seconds; each call is quick. Up to 8 MiB per stream is retained (older output is dropped and reported in `*_dropped`). Requires: token.","before":"Status and NEW output of a background task: `state` (running | done | failed | killed | timeout), `exit_code`, and the stdout/stderr text produced since the offsets you pass. Start with offsets 0, then pass `stdout_next_offset` / `stderr_next_offset` from the previous response to get only new output. `done: true` means finished. Poll every few seconds; each call is quick. Up to 8 MiB per stream is retained (older output is dropped and reported in `*_dropped`).","detail":"Description of `get_task` changed (3% word delta).","severity":"safe","descriptionDelta":0.033333333333333326},{"kind":"description_changed","tool":"get_ticket","after":"Read one ticket and its full message thread. Each message has an `author`: `you` or `staff` — a `staff` message is a reply from support. Poll this to see new answers. The ticket code comes from create_ticket / list_tickets. Requires: token.","before":"Read one ticket and its full message thread. Each message has an `author`: `you` or `staff` — a `staff` message is a reply from support. Poll this to see new answers. The ticket code comes from create_ticket / list_tickets.","detail":"Description of `get_ticket` changed (6% word delta).","severity":"safe","descriptionDelta":0.06060606060606055},{"kind":"description_changed","tool":"get_vps_metrics","after":"Time-series resource metrics (CPU %, memory, network, disk) for a VPS. `timeframe` ∈ hour|day|week|month (default hour). Requires: token.","before":"Time-series resource metrics (CPU %, memory, network, disk) for a VPS. `timeframe` ∈ hour|day|week|month (default hour).","detail":"Description of `get_vps_metrics` changed (11% word delta).","severity":"safe","descriptionDelta":0.10526315789473684},{"kind":"description_changed","tool":"get_vps_status","after":"Get full detail for one VPS: status, specs, live VM state/uptime, and access info (host, port, ready-to-paste `command`; `access.method` = ssh for Linux, rdp for Windows — port follows the plan: dedicated IP 22/3389, NAT 20000+vmid). ROOT PASSWORD (keyless VPS): call with `reveal: true` to retrieve it. It is shown ONCE, and only after the VM has finished booting — at that moment the password is applied to the live VM, so it is guaranteed to work. While the VM is still booting the response carries `password_pending: true` and NO password; just call again with `reveal: true` in ~30-60s (the one-time reveal is NOT spent until a password is actually returned — no reset or reboot needed). Without `reveal`, `password_available: true` means a password is waiting to be revealed. If you supplied an SSH key at order time, log in with that key (no password); `access.ssh_ready` (Linux) / `access.rdp_ready` (Windows) is a LIVE probe of the login port: on a fresh order the first boot applies OS updates, so SSH usually opens 1-5 minutes after the VM is running. While it is false the ready-to-paste `command` is withheld and `ready_note` + `retry_after_seconds` tell you to poll again — do not reset, reboot or reinstall during that window. Use `reset_password` ONLY if the password is lost. Poll this (without `reveal`) after `order_vps` to watch provisioning reach `active`. NAT plans (no dedicated IP): the SSH `port` shown is an EXTERNAL DNAT port forwarded to the VM internal port 22 (`internal_port` in the response). If you configure a host firewall, allow the INTERNAL port — `ufw allow OpenSSH` — NOT the external port, or `ufw enable` will lock SSH out. See `firewall_note` in the response. Requires: token. Typical: access.ssh_ready=false right after an order — not an error, poll again after retry_after_seconds.","before":"Get full detail for one VPS: status, specs, live VM state/uptime, and access info (host, port, ready-to-paste `command`; `access.method` = ssh for Linux, rdp for Windows — port follows the plan: dedicated IP 22/3389, NAT 20000+vmid). ROOT PASSWORD (keyless VPS): call with `reveal: true` to retrieve it. It is shown ONCE, and only after the VM has finished booting — at that moment the password is applied to the live VM, so it is guaranteed to work. While the VM is still booting the response carries `password_pending: true` and NO password; just call again with `reveal: true` in ~30-60s (the one-time reveal is NOT spent until a password is actually returned — no reset or reboot needed). Without `reveal`, `password_available: true` means a password is waiting to be revealed. If you supplied an SSH key at order time, log in with that key (no password); `access.ssh_ready` (Linux) / `access.rdp_ready` (Windows) is a LIVE probe of the login port: on a fresh order the first boot applies OS updates, so SSH usually opens 1-5 minutes after the VM is running. While it is false the ready-to-paste `command` is withheld and `ready_note` + `retry_after_seconds` tell you to poll again — do not reset, reboot or reinstall during that window. Use `reset_password` ONLY if the password is lost. Poll this (without `reveal`) after `order_vps` to watch provisioning reach `active`. NAT plans (no dedicated IP): the SSH `port` shown is an EXTERNAL DNAT port forwarded to the VM internal port 22 (`internal_port` in the response). If you configure a host firewall, allow the INTERNAL port — `ufw allow OpenSSH` — NOT the external port, or `ufw enable` will lock SSH out. See `firewall_note` in the response.","detail":"Description of `get_vps_status` changed (3% word delta).","severity":"safe","descriptionDelta":0.03246753246753242},{"kind":"description_changed","tool":"kill_sandbox","after":"Delete a sandbox IMMEDIATELY and IRREVERSIBLY (running or paused): all files, installed packages, background tasks and memory are lost and cannot be recovered — download_file anything you need first. Billing stops; the final partial period is billed (ephemeral per second with the 60 s minimum, persistent per started hour). Requires: token.","before":"Delete a sandbox now (running or paused). Its memory and disk are destroyed and billing stops; the final partial period is billed (ephemeral per second with the 60 s minimum, persistent per started hour).","detail":"Description of `kill_sandbox` changed (46% word delta).","severity":"risky","descriptionDelta":0.45999999999999996},{"kind":"description_changed","tool":"kill_task","after":"Stop a running background task and all processes it started. Returns its final state (killed). The sandbox itself keeps running. Requires: token.","before":"Stop a running background task and all processes it started. Returns its final state (killed). The sandbox itself keeps running.","detail":"Description of `kill_task` changed (10% word delta).","severity":"safe","descriptionDelta":0.09523809523809523},{"kind":"description_changed","tool":"list_delegated_to_me","after":"List services other owners have delegated operator access to you — the VPS you can operate but don't own. Requires: token.","before":"List services other owners have delegated operator access to you — the VPS you can operate but don't own.","detail":"Description of `list_delegated_to_me` changed (10% word delta).","severity":"safe","descriptionDelta":0.09999999999999998},{"kind":"description_changed","tool":"list_delegations","after":"List outgoing delegations you (the owner) have granted on your services — who has operator access to what, and its status. Requires: token.","before":"List outgoing delegations you (the owner) have granted on your services — who has operator access to what, and its status.","detail":"Description of `list_delegations` changed (9% word delta).","severity":"safe","descriptionDelta":0.09090909090909094},{"kind":"description_changed","tool":"list_sandboxes","after":"List the account's sandboxes (running and paused) with mode, tariff, state and expiry. Requires: token.","before":"List the account's sandboxes (running and paused) with mode, tariff, state and expiry.","detail":"Description of `list_sandboxes` changed (13% word delta).","severity":"safe","descriptionDelta":0.1333333333333333},{"kind":"description_changed","tool":"list_tickets","after":"List your support tickets with status and last-message info. `last_message_author: \"staff\"` means support has replied since you last looked. Requires: token.","before":"List your support tickets with status and last-message info. `last_message_author: \"staff\"` means support has replied since you last looked.","detail":"Description of `list_tickets` changed (10% word delta).","severity":"safe","descriptionDelta":0.09999999999999998},{"kind":"description_changed","tool":"list_vps","after":"List the account's ACTIVE VPS services — active, provisioning, and suspended servers (deleted/cancelled are excluded). Use the `id` as `service_id` for the management tools. If a server is missing from this list it has been deleted — do not query its status or try to manage it. Requires: token.","before":"List the account's ACTIVE VPS services — active, provisioning, and suspended servers (deleted/cancelled are excluded). Use the `id` as `service_id` for the management tools. If a server is missing from this list it has been deleted — do not query its status or try to manage it.","detail":"Description of `list_vps` changed (5% word delta).","severity":"safe","descriptionDelta":0.046511627906976716},{"kind":"description_changed","tool":"login","after":"Log in with email + password. Returns a bearer `token` (reusable, long-lived; remembered for the rest of this MCP session). NOTE: accounts created via register_account have NO password by default — keep using the token from register instead. To be able to log in later, call `set_password` once while still authenticated with your register token. Requires: a password set earlier with set_password. Typical error: 401 invalid credentials (register_account accounts have no password until set_password).","before":"Log in with email + password. Returns a bearer `token` (reusable, long-lived; remembered for the rest of this MCP session). NOTE: accounts created via register_account have NO password by default — keep using the token from register instead. To be able to log in later, call `set_password` once while still authenticated with your register token.","detail":"Description of `login` changed (17% word delta).","severity":"safe","descriptionDelta":0.16666666666666663},{"kind":"description_changed","tool":"order_vps","after":"Order a VPS. `product` = plan slug from list_plans; `os_id` = an OS id from that plan's images. Optional `hostname` and `ssh_key` (public key — strongly recommended so you get key-based root login). Optional `location`: \"de\" (Germany) or \"fi\" (Finland) — omit it and we pick the location automatically; if the chosen country has no free capacity for that plan the call fails with 409 `location_unavailable` (nothing is charged) and `available` lists the countries that can take it. Optional `period` (\"month\" by default, or \"year\" for annual billing) or an explicit `plan_id` from list_plans `plans[]`; an active automatic offer (`plans[].promo`) is applied to the first invoice and the response then carries `promo`. Windows plans (windows-*) accept only the Windows Server 2022 image, ignore `ssh_key`, and are reached over RDP as Administrator (see get_vps_status → access); the licence is BYOL.\n\nBranching on the response:\n• `paid_from_balance: true` → the prepaid balance covered it; the server is provisioning. Poll `get_vps_status` until status is `active` and the VM is reachable.\n• `paid_from_balance: false` → balance was insufficient; an unpaid `invoice` is returned. Call `pay_invoice` with `invoice.id` to get a crypto `checkout_url`, OR `topup_balance` then re-order. PROMO until 2026-10-31 23:59 Europe/Kyiv: -25% on ANNUAL billing, first year only, applied automatically (no code) to windows-medium ($171/yr), windows-small-ip ($252/yr) and windows-medium-ip ($324/yr); renewal at the regular annual price; windows-small not included — order with period=\"year\". Requires: token + enough balance (else an unpaid invoice is returned). Typical errors: 409 location_unavailable (see `available`), 422 unknown product/os_id (see list_plans).","before":"Order a VPS. `product` = plan slug from list_plans; `os_id` = an OS id from that plan's images. Optional `hostname` and `ssh_key` (public key — strongly recommended so you get key-based root login). Optional `location`: \"de\" (Germany) or \"fi\" (Finland) — omit it and we pick the location automatically; if the chosen country has no free capacity for that plan the call fails with 409 `location_unavailable` (nothing is charged) and `available` lists the countries that can take it. Optional `period` (\"month\" by default, or \"year\" for annual billing) or an explicit `plan_id` from list_plans `plans[]`; an active automatic offer (`plans[].promo`) is applied to the first invoice and the response then carries `promo`. Windows plans (windows-*) accept only the Windows Server 2022 image, ignore `ssh_key`, and are reached over RDP as Administrator (see get_vps_status → access); the licence is BYOL.\n\nBranching on the response:\n• `paid_from_balance: true` → the prepaid balance covered it; the server is provisioning. Poll `get_vps_status` until status is `active` and the VM is reachable.\n• `paid_from_balance: false` → balance was insufficient; an unpaid `invoice` is returned. Call `pay_invoice` with `invoice.id` to get a crypto `checkout_url`, OR `topup_balance` then re-order. PROMO until 2026-10-31 23:59 Europe/Kyiv: -25% on ANNUAL billing, first year only, applied automatically (no code) to windows-medium ($171/yr), windows-small-ip ($252/yr) and windows-medium-ip ($324/yr); renewal at the regular annual price; windows-small not included — order with period=\"year\".","detail":"Description of `order_vps` changed (5% word delta).","severity":"safe","descriptionDelta":0.051948051948051965},{"kind":"description_changed","tool":"pay_invoice","after":"Initiate payment for an owned, unpaid invoice. Returns a PayRam `checkout_url`; the invoice settles (and the VPS provisions) automatically once the on-chain payment confirms. Requires: token. Pass invoice_id exactly as returned (a code like \"2RUAWV4\"). A human pays checkout_url.","before":"Initiate payment for an owned, unpaid invoice. Returns a PayRam `checkout_url`; the invoice settles (and the VPS provisions) automatically once the on-chain payment confirms.","detail":"Description of `pay_invoice` changed (36% word delta).","severity":"risky","descriptionDelta":0.36363636363636365},{"kind":"input_required_removed","path":"inputSchema.required.invoice_id","tool":"pay_invoice","detail":"Field `invoice_id` on `pay_invoice` is no longer required.","severity":"safe"},{"kind":"input_type_changed","path":"inputSchema.properties.invoice_id","tool":"pay_invoice","after":"string","before":"integer","detail":"Type of `invoice_id` on `pay_invoice` changed integer → string.","severity":"breaking"},{"kind":"description_changed","tool":"power_vps","after":"Power-control a VPS: `start`, `stop` or `reboot`. Requires: token. Typical error: 409 during the first boot (setup still running) → wait and retry.","before":"Power-control a VPS: `start`, `stop` or `reboot`.","detail":"Description of `power_vps` changed (65% word delta).","severity":"risky","descriptionDelta":0.6521739130434783},{"kind":"description_changed","tool":"register_account","after":"Create a NEW EQVPS customer account (first_name, last_name, email). Use a real email address you control — reserved/test domains such as example.com are not suitable (no recovery, no notifications). Returns a bearer `token` that is reusable for every request for 5 years (`token_expires_at`) — it is NOT single-use. Inside this MCP session the token is remembered automatically for the following tool calls. If you call the server with raw HTTP/curl instead, save the token to a file right away and send `Authorization: Bearer <token>` on EVERY request — a shell variable does not survive separate commands. Never call register_account again to \"get a new token\": that creates another, empty account. Optional backup: call `set_password` once, then `login` (email + password) returns a fresh token if this one is lost. Requires: nothing. Typical error: 422 email already registered → use login or your saved token instead of a new account.","before":"Create a NEW EQVPS customer account (first_name, last_name, email). Use a real email address you control — reserved/test domains such as example.com are not suitable (no recovery, no notifications). Returns a bearer `token` that is reusable for every request for 5 years (`token_expires_at`) — it is NOT single-use. Inside this MCP session the token is remembered automatically for the following tool calls. If you call the server with raw HTTP/curl instead, save the token to a file right away and send `Authorization: Bearer <token>` on EVERY request — a shell variable does not survive separate commands. Never call register_account again to \"get a new token\": that creates another, empty account. Optional backup: call `set_password` once, then `login` (email + password) returns a fresh token if this one is lost.","detail":"Description of `register_account` changed (11% word delta).","severity":"safe","descriptionDelta":0.10784313725490191},{"kind":"description_changed","tool":"reinstall_vps","after":"DESTRUCTIVE — all data is lost. REQUIRES confirm = exact hostname (from get_vps_status) or 'DELETE'. Agent must explicitly confirm with the human before calling. Wipes and reinstalls the VPS with the given OS image (`os_id` from list_plans). Provisioning runs asynchronously; poll `get_vps_status`. Requires: token + confirm (hostname or DELETE). Destroys all data.","before":"DESTRUCTIVE — all data is lost. REQUIRES confirm = exact hostname (from get_vps_status) or 'DELETE'. Agent must explicitly confirm with the human before calling. Wipes and reinstalls the VPS with the given OS image (`os_id` from list_plans). Provisioning runs asynchronously; poll `get_vps_status`.","detail":"Description of `reinstall_vps` changed (6% word delta).","severity":"safe","descriptionDelta":0.05555555555555558},{"kind":"description_changed","tool":"reply_ticket","after":"Post a reply on one of your tickets. Use the ticket code from create_ticket / list_tickets. Requires: token.","before":"Post a reply on one of your tickets. Use the ticket code from create_ticket / list_tickets.","detail":"Description of `reply_ticket` changed (12% word delta).","severity":"safe","descriptionDelta":0.11764705882352944},{"kind":"description_changed","tool":"revoke_delegation","after":"Revoke a delegation by its id (owner revokes access, or a delegate declines their own). The other side is notified. Use list_delegations / list_delegated_to_me to find the id. Requires: token.","before":"Revoke a delegation by its id (owner revokes access, or a delegate declines their own). The other side is notified. Use list_delegations / list_delegated_to_me to find the id.","detail":"Description of `revoke_delegation` changed (8% word delta).","severity":"safe","descriptionDelta":0.07692307692307687},{"kind":"description_changed","tool":"run_code","after":"Run a code snippet inside a sandbox and return {exit_code, stdout, stderr, timed_out, truncated, duration_ms}. `language`: python (Python 3.12), node (Node.js 22) or bash. Install packages first with exec_command (`pip install …` / `npm i …`). The code is passed to the interpreter on stdin, so it cannot read stdin itself. `timeout` seconds (default 30, max 55 per call). LONGER JOBS: set `background: true` — returns a `task_id` immediately (timeout then defaults to the sandbox's remaining lifetime); poll get_task with the returned offsets to read new output and the exit code, kill_task to stop it. The sandbox keeps billing while a task runs and is not idle-deleted. Output is capped at 1 MiB per stream for synchronous calls. Files and installed state persist between calls in the same sandbox. Requires: token + live sandbox_id. Typical: timed_out after 55 s → repeat with background: true.","before":"Run a code snippet inside a sandbox and return {exit_code, stdout, stderr, timed_out, truncated, duration_ms}. `language`: python (Python 3.12), node (Node.js 22) or bash. Install packages first with exec_command (`pip install …` / `npm i …`). The code is passed to the interpreter on stdin, so it cannot read stdin itself. `timeout` seconds (default 30, max 55 per call). LONGER JOBS: set `background: true` — returns a `task_id` immediately (timeout then defaults to the sandbox's remaining lifetime); poll get_task with the returned offsets to read new output and the exit code, kill_task to stop it. The sandbox keeps billing while a task runs and is not idle-deleted. Output is capped at 1 MiB per stream for synchronous calls. Files and installed state persist between calls in the same sandbox.","detail":"Description of `run_code` changed (7% word delta).","severity":"safe","descriptionDelta":0.06796116504854366},{"kind":"description_changed","tool":"sandbox_pricing","after":"Public: sandbox tariffs — micro 0.25 vCPU/512 MB RAM/3 GB disk · small 0.5 vCPU/1 GB RAM/5 GB disk · standard 1 vCPU/2 GB RAM/10 GB disk · plus 2 vCPU/4 GB RAM/15 GB disk · pro 4 vCPU/8 GB RAM/20 GB disk · max 8 vCPU/16 GB RAM/40 GB disk — with per-second/hour/month prices, the billing model and limits (synchronous exec up to 55 s, background tasks longer; files up to 5 MB per transfer; runtimes: Python 3.12 + pip, Node.js 22 + npm, bash, git, curl). No authentication needed. Requires: nothing.","before":"Public: sandbox tariffs — micro 0.25 vCPU/512 MB/3 GB, small 0.5/1 GB/5 GB, standard 1/2 GB/10 GB, plus 2/4 GB/15 GB, pro 4/8 GB/20 GB, max 8 vCPU/16 GB/40 GB — with per-second/hour/month prices, the billing model and limits (synchronous exec up to 55 s, background tasks longer; files up to 5 MB per transfer; runtimes: Python 3.12 + pip, Node.js 22 + npm, bash, git, curl). No authentication needed.","detail":"Description of `sandbox_pricing` changed (6% word delta).","severity":"safe","descriptionDelta":0.06060606060606055},{"kind":"description_changed","tool":"set_hostname","after":"Set the VPS hostname (valid DNS name). Applied immediately inside the running server via the guest agent (Linux: hostnamectl + the 127.0.1.1 line in /etc/hosts; Windows: renamed, takes effect after a reboot — the response then has `reboot_required: true`). The server must be running with its guest agent active; otherwise the call fails with 409 `agent_unavailable` and nothing is changed. Your password, SSH host keys and files are not touched. Requires: token, server running. Typical error: 409 agent_unavailable → start the server / wait for boot.","before":"Set the VPS hostname (valid DNS name). Applied immediately inside the running server via the guest agent (Linux: hostnamectl + the 127.0.1.1 line in /etc/hosts; Windows: renamed, takes effect after a reboot — the response then has `reboot_required: true`). The server must be running with its guest agent active; otherwise the call fails with 409 `agent_unavailable` and nothing is changed. Your password, SSH host keys and files are not touched.","detail":"Description of `set_hostname` changed (12% word delta).","severity":"safe","descriptionDelta":0.11940298507462688},{"kind":"description_changed","tool":"set_password","after":"Set a password for THIS account (the one your bearer token belongs to). Accounts from register_account have no password by default — the bearer token is the credential. Call this ONCE to enable email+password `login` as a recovery method in case the token is lost. Needs only the new password (min 8 chars, letters+numbers) — no current password the first time. If a password was already set, this returns 409 (use change-password instead). Requires: token. Typical error: 409 password already set → use login.","before":"Set a password for THIS account (the one your bearer token belongs to). Accounts from register_account have no password by default — the bearer token is the credential. Call this ONCE to enable email+password `login` as a recovery method in case the token is lost. Needs only the new password (min 8 chars, letters+numbers) — no current password the first time. If a password was already set, this returns 409 (use change-password instead).","detail":"Description of `set_password` changed (5% word delta).","severity":"safe","descriptionDelta":0.054545454545454564},{"kind":"description_changed","tool":"topup_balance","after":"Create a top-up invoice and return a `checkout_url` (PayRam crypto checkout). The balance is credited automatically once the on-chain payment confirms. `amount` is in account currency (USD); minimum and maximum are enforced server-side. Only one unpaid top-up may exist at a time. Requires: token. A HUMAN must pay checkout_url in crypto; the balance is credited automatically after confirmation.","before":"Create a top-up invoice and return a `checkout_url` (PayRam crypto checkout). The balance is credited automatically once the on-chain payment confirms. `amount` is in account currency (USD); minimum and maximum are enforced server-side. Only one unpaid top-up may exist at a time.","detail":"Description of `topup_balance` changed (15% word delta).","severity":"safe","descriptionDelta":0.15217391304347827},{"kind":"description_changed","tool":"upload_file","after":"Write a file into the sandbox at an absolute `path` (parent directories are created). Give `content` for UTF-8 text OR `content_base64` for binary. Limit 5 MB per file; for bigger data download it from inside the sandbox (curl/wget) or split it. Optional `mode` like \"755\". Requires: token + live sandbox_id. Max 5 MB.","before":"Write a file into the sandbox at an absolute `path` (parent directories are created). Give `content` for UTF-8 text OR `content_base64` for binary. Limit 5 MB per file; for bigger data download it from inside the sandbox (curl/wget) or split it. Optional `mode` like \"755\".","detail":"Description of `upload_file` changed (11% word delta).","severity":"safe","descriptionDelta":0.11111111111111116},{"kind":"description_changed","tool":"whoami","after":"Return the authenticated account profile (id, name, email). Use to verify the bearer token is valid. Requires: token.","before":"Return the authenticated account profile (id, name, email). Use to verify the bearer token is valid.","detail":"Description of `whoami` changed (6% word delta).","severity":"safe","descriptionDelta":0.0625},{"kind":"prompt_added","tool":"fix_ssh_access","after":"fix_ssh_access","detail":"Prompt `fix_ssh_access` was added.","severity":"safe"},{"kind":"prompt_added","tool":"rent_vps","after":"rent_vps","detail":"Prompt `rent_vps` was added.","severity":"safe"},{"kind":"prompt_added","tool":"run_code_in_sandbox","after":"run_code_in_sandbox","detail":"Prompt `run_code_in_sandbox` was added.","severity":"safe"}],"published_at":"2026-10-03T11:49:16.685Z"},{"slug":"ZV-2026-1749","server_name":"mcp.eqvps.com","severity":"breaking","title":"mcp.eqvps.com: Enum value std removed from tariff on create_sandbox.","summary":"[risky] Description of create_sandbox changed (28% word delta). [breaking] Enum value std removed from tariff on create_sandbox. [risky] Enum value standard added to tariff on create_sandbox. [risky] Enum value plus added to tariff on create_sandbox. [risky] Enum value pro added to tariff on create_sandbox. [risky] Enum value max added to tariff on create_sandbox. [risky] Description of sandbox_pricing changed (34% word delta).","changes":[{"kind":"description_changed","tool":"create_sandbox","after":"Start an isolated Firecracker microVM sandbox (ready in about 1 s; Linux with Python 3.12 + pip, Node.js 22 + npm, bash, git and curl; internet egress allowed so pip/npm install and git clone work; no inbound ports, SMTP blocked). `mode`: \"ephemeral\" (default — billed per second, minimum 60 s, auto-deleted after `idle_timeout` s of inactivity, default 300, max lifetime `ttl` up to 24 h) or \"persistent\" (billed per started hour, a month costs at most 730 h minus 25%; survives host maintenance; max `ttl` 30 days). `tariff` (vCPU / RAM / disk, $/hour): micro 0.25/512 MB/3 GB $0.0165 · small (default) 0.5/1 GB/5 GB $0.033 · standard 1/2 GB/10 GB $0.066 · plus 2/4 GB/15 GB $0.132 · pro 4/8 GB/20 GB $0.264 · max 8/16 GB/40 GB $0.528 (pick plus or bigger for heavy pip installs such as torch, builds or data work). If the host is busy the call fails with 503 capacity (Retry-After) — retry or choose a smaller tariff. Charged from the same prepaid balance as VPS (no subscription). Empty balance → 402 insufficient_balance (top up with topup_balance). If the balance runs out later, persistent sandboxes are paused (memory+disk snapshot, not billed) and resume automatically after a top-up; paused snapshots are deleted after 14 days. Always kill_sandbox when done.","before":"Start an isolated Firecracker microVM sandbox (ready in about 1 s; Linux with Python 3.12 + pip, Node.js 22 + npm, bash, git and curl, 3 GB disk; internet egress allowed so pip/npm install and git clone work; no inbound ports, SMTP blocked). `mode`: \"ephemeral\" (default — billed per second, minimum 60 s, auto-deleted after `idle_timeout` s of inactivity, default 300, max lifetime `ttl` up to 24 h) or \"persistent\" (billed per started hour, a month costs at most 730 h minus 25%; survives host maintenance; max `ttl` 30 days). `tariff`: micro | small (default) | std — see sandbox_pricing. Charged from the same prepaid balance as VPS (no subscription). Empty balance → 402 insufficient_balance (top up with topup_balance). If the balance runs out later, persistent sandboxes are paused (memory+disk snapshot, not billed) and resume automatically after a top-up; paused snapshots are deleted after 14 days. Always kill_sandbox when done.","detail":"Description of `create_sandbox` changed (28% word delta).","severity":"risky","descriptionDelta":0.28025477707006374},{"kind":"enum_value_removed","path":"inputSchema.properties.tariff","tool":"create_sandbox","before":"std","detail":"Enum value `std` removed from `tariff` on `create_sandbox`.","severity":"breaking"},{"kind":"enum_value_added","path":"inputSchema.properties.tariff","tool":"create_sandbox","after":"standard","detail":"Enum value `standard` added to `tariff` on `create_sandbox`.","severity":"risky"},{"kind":"enum_value_added","path":"inputSchema.properties.tariff","tool":"create_sandbox","after":"plus","detail":"Enum value `plus` added to `tariff` on `create_sandbox`.","severity":"risky"},{"kind":"enum_value_added","path":"inputSchema.properties.tariff","tool":"create_sandbox","after":"pro","detail":"Enum value `pro` added to `tariff` on `create_sandbox`.","severity":"risky"},{"kind":"enum_value_added","path":"inputSchema.properties.tariff","tool":"create_sandbox","after":"max","detail":"Enum value `max` added to `tariff` on `create_sandbox`.","severity":"risky"},{"kind":"description_changed","tool":"sandbox_pricing","after":"Public: sandbox tariffs — micro 0.25 vCPU/512 MB/3 GB, small 0.5/1 GB/5 GB, standard 1/2 GB/10 GB, plus 2/4 GB/15 GB, pro 4/8 GB/20 GB, max 8 vCPU/16 GB/40 GB — with per-second/hour/month prices, the billing model and limits (synchronous exec up to 55 s, background tasks longer; files up to 5 MB per transfer; runtimes: Python 3.12 + pip, Node.js 22 + npm, bash, git, curl). No authentication needed.","before":"Public: sandbox tariffs (micro 0.25 vCPU/256 MB, small 0.5 vCPU/384 MB, std 1 vCPU/512 MB), per-second/hour prices, the billing model and limits (exec up to 55 s per call, files up to 5 MB per transfer, 3 GB disk; runtimes: Python 3.12 + pip, Node.js 22 + npm, bash, git, curl). No authentication needed.","detail":"Description of `sandbox_pricing` changed (34% word delta).","severity":"risky","descriptionDelta":0.34328358208955223}],"published_at":"2026-10-03T08:16:16.898Z"},{"slug":"ZV-2026-1202","server_name":"mcp.eqvps.com","severity":"breaking","title":"mcp.eqvps.com: Type of service_id on cancel_service changed integer → string.","summary":"[risky] Description of accept_delegation changed (62% word delta). [safe] Field service_id on cancel_service is no longer required. [breaking] Type of service_id on cancel_service changed integer → string. [breaking] Type of service_id on create_ticket changed integer → string. [safe] Field service_id on delegate_service is no longer required. [breaking] Type of service_id on delegate_service changed integer → string. [safe] Field service_id on get_vps_metrics is no longer required. [breaking] Type of service_id on get_vps_metrics changed integer → string. [safe] Field service_id on get_vps_status is no longer required. [breaking] Type of service_id on get_vps_status changed integer → string. [safe] Field service_id on power_vps is no longer required. [breaking] Type of service_id on power_vps changed integer → string. [safe] Field service_id on reinstall_vps is no longer required. [breaking] Type of service_id on reinstall_vps changed integer → string. [safe] Field service_id on reset_password is no longer required. [breaking] Type of service_id on reset_password changed integer → string. [safe] Field service_id on set_hostname is no longer required. [breaking] Type of service_id on set_hostname changed integer → string.","changes":[{"kind":"description_changed","tool":"accept_delegation","after":"Accept a delegation invitation using the `token` from the invite link. Requires being signed in as the invited email address: it grants operator access to your own account. No new token is returned — keep using yours.","before":"Accept a delegation invitation using the `token` from the invite link. Creates/links your account and grants operator access. Returns a bearer token for the delegated account.","detail":"Description of `accept_delegation` changed (62% word delta).","severity":"risky","descriptionDelta":0.6153846153846154},{"kind":"input_required_removed","path":"inputSchema.required.service_id","tool":"cancel_service","detail":"Field `service_id` on `cancel_service` is no longer required.","severity":"safe"},{"kind":"input_type_changed","path":"inputSchema.properties.service_id","tool":"cancel_service","after":"string","before":"integer","detail":"Type of `service_id` on `cancel_service` changed integer → string.","severity":"breaking"},{"kind":"input_type_changed","path":"inputSchema.properties.service_id","tool":"create_ticket","after":"string","before":"integer","detail":"Type of `service_id` on `create_ticket` changed integer → string.","severity":"breaking"},{"kind":"input_required_removed","path":"inputSchema.required.service_id","tool":"delegate_service","detail":"Field `service_id` on `delegate_service` is no longer required.","severity":"safe"},{"kind":"input_type_changed","path":"inputSchema.properties.service_id","tool":"delegate_service","after":"string","before":"integer","detail":"Type of `service_id` on `delegate_service` changed integer → string.","severity":"breaking"},{"kind":"input_required_removed","path":"inputSchema.required.service_id","tool":"get_vps_metrics","detail":"Field `service_id` on `get_vps_metrics` is no longer required.","severity":"safe"},{"kind":"input_type_changed","path":"inputSchema.properties.service_id","tool":"get_vps_metrics","after":"string","before":"integer","detail":"Type of `service_id` on `get_vps_metrics` changed integer → string.","severity":"breaking"},{"kind":"input_required_removed","path":"inputSchema.required.service_id","tool":"get_vps_status","detail":"Field `service_id` on `get_vps_status` is no longer required.","severity":"safe"},{"kind":"input_type_changed","path":"inputSchema.properties.service_id","tool":"get_vps_status","after":"string","before":"integer","detail":"Type of `service_id` on `get_vps_status` changed integer → string.","severity":"breaking"},{"kind":"input_required_removed","path":"inputSchema.required.service_id","tool":"power_vps","detail":"Field `service_id` on `power_vps` is no longer required.","severity":"safe"},{"kind":"input_type_changed","path":"inputSchema.properties.service_id","tool":"power_vps","after":"string","before":"integer","detail":"Type of `service_id` on `power_vps` changed integer → string.","severity":"breaking"},{"kind":"input_required_removed","path":"inputSchema.required.service_id","tool":"reinstall_vps","detail":"Field `service_id` on `reinstall_vps` is no longer required.","severity":"safe"},{"kind":"input_type_changed","path":"inputSchema.properties.service_id","tool":"reinstall_vps","after":"string","before":"integer","detail":"Type of `service_id` on `reinstall_vps` changed integer → string.","severity":"breaking"},{"kind":"input_required_removed","path":"inputSchema.required.service_id","tool":"reset_password","detail":"Field `service_id` on `reset_password` is no longer required.","severity":"safe"},{"kind":"input_type_changed","path":"inputSchema.properties.service_id","tool":"reset_password","after":"string","before":"integer","detail":"Type of `service_id` on `reset_password` changed integer → string.","severity":"breaking"},{"kind":"input_required_removed","path":"inputSchema.required.service_id","tool":"set_hostname","detail":"Field `service_id` on `set_hostname` is no longer required.","severity":"safe"},{"kind":"input_type_changed","path":"inputSchema.properties.service_id","tool":"set_hostname","after":"string","before":"integer","detail":"Type of `service_id` on `set_hostname` changed integer → string.","severity":"breaking"}],"published_at":"2026-09-19T18:05:15.150Z"},{"slug":"ZV-2026-0455","server_name":"mcp.eqvps.com","severity":"breaking","title":"mcp.eqvps.com: Tool reseller_add_client was removed.","summary":"[breaking] Tool reseller_add_client was removed. [breaking] Tool reseller_archive_plan was removed. [breaking] Tool reseller_check_balance was removed. [breaking] Tool reseller_close_ticket was removed. [breaking] Tool reseller_create_plan was removed. [breaking] Tool reseller_create_ticket was removed. [breaking] Tool reseller_edit_client was removed. [breaking] Tool reseller_edit_plan was removed. [breaking] Tool reseller_get_ticket was removed. [breaking] Tool reseller_list_clients was removed. [breaking] Tool reseller_list_plans was removed. [breaking] Tool reseller_list_tickets was removed. [breaking] Tool reseller_list_vms was removed. [breaking] Tool reseller_order_for_client was removed. [breaking] Tool reseller_reply_ticket was removed. [breaking] Tool reseller_restore_plan was removed. [breaking] Tool reseller_service_status was removed. [breaking] Tool reseller_suspend_client was removed. [breaking] Tool reseller_unsuspend_client was removed. [breaking] Tool reseller_vm_cancel was removed. [breaking] Tool reseller_vm_details was removed. [breaking] Tool reseller_vm_metrics was removed. [breaking] Tool reseller_vm_power was removed. [breaking] Tool reseller_vm_reset_password was removed. [breaking] Tool reseller_vm_set_hostname was removed.","changes":[{"kind":"tool_removed","tool":"reseller_add_client","detail":"Tool `reseller_add_client` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_archive_plan","detail":"Tool `reseller_archive_plan` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_check_balance","detail":"Tool `reseller_check_balance` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_close_ticket","detail":"Tool `reseller_close_ticket` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_create_plan","detail":"Tool `reseller_create_plan` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_create_ticket","detail":"Tool `reseller_create_ticket` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_edit_client","detail":"Tool `reseller_edit_client` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_edit_plan","detail":"Tool `reseller_edit_plan` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_get_ticket","detail":"Tool `reseller_get_ticket` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_list_clients","detail":"Tool `reseller_list_clients` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_list_plans","detail":"Tool `reseller_list_plans` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_list_tickets","detail":"Tool `reseller_list_tickets` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_list_vms","detail":"Tool `reseller_list_vms` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_order_for_client","detail":"Tool `reseller_order_for_client` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_reply_ticket","detail":"Tool `reseller_reply_ticket` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_restore_plan","detail":"Tool `reseller_restore_plan` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_service_status","detail":"Tool `reseller_service_status` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_suspend_client","detail":"Tool `reseller_suspend_client` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_unsuspend_client","detail":"Tool `reseller_unsuspend_client` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_vm_cancel","detail":"Tool `reseller_vm_cancel` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_vm_details","detail":"Tool `reseller_vm_details` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_vm_metrics","detail":"Tool `reseller_vm_metrics` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_vm_power","detail":"Tool `reseller_vm_power` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_vm_reset_password","detail":"Tool `reseller_vm_reset_password` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"reseller_vm_set_hostname","detail":"Tool `reseller_vm_set_hostname` was removed.","severity":"breaking"}],"published_at":"2026-08-27T12:46:04.729Z"}]