Proximo
Proximo is a governed Proxmox control-plane MCP server for finding, inspecting, planning, and safely executing API operations across PVE, PBS, PMG, and PDM, with receipts and audit verification.
Find API addresses by plain-language query, with plane filtering and blast-radius/access hints.
Plan operations read-only: inspect verdict, required args, current target state, proposed change, and vendor schema before acting.
Read Proxmox data via GET paths or words, with lean rows, field selection, task waiting, change tracking, and diagnostics.
Execute governed mutations via POST/PUT/DELETE only with
confirm=true, arming, and an authored blast-radius tier; every call is receipted.Undo mutations by replaying a receipt's captured before-state through the vendor's own write path where supported.
Inspect the audit ledger for recent actions, mutations, targets, and truncation notices.
Verify ledger integrity by walking the hash chain and optionally checking against a pinned head or sealed archive.
Provides tools for managing Proxmox VE, Proxmox Backup Server, Proxmox Mail Gateway, and Proxmox Datacenter Manager, including guest lifecycle, storage, snapshots, container exec, and a trust layer for safe AI-driven infrastructure operations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Proximolist all VMs on node pve1"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Named for Proximo, the lanista of Gladiator. The story is the design, joint for joint.
He armed his fighter with exactly what he needed, never more. He answered for every move in the arena. A lanista, not a jailer. The Spaniard earns his name by conduct, on the record, and the helmet comes off: truth said plainly, at cost. His last act opened the cages, holding the wooden sword of his own freedom. A tool should hope to end that well.
"Win the crowd and you will win your freedom."
The others make you pick: a read-only toy, or full keys and pray. Proximo won't. Every dangerous move is planned: the verdict, the live target and the change, before anything runs. Every move is proven: a tamper-evident record. And undoable wherever the platform gives us a primitive: a mutation captures the record it is about to change and puts it back through the vendor's own write; a risky in-container command can take a snapshot first, and refuses to run if it can't.
Trust built into the substrate, not bolted on after. Hand an AI agent the keys; keep the receipts.
Sovereign and agent-agnostic. Your metal, your token, a ledger you own. No cloud, no phone-home, no standing server unless you opt in.
What it does
Ask, in plain English: "why is ct 105 thrashing?" An AI agent pulls node and guest status, tails the logs, and (if you opened that lane) runs a diagnostic inside the container to find out.
If there's a fix, it shows you the plan before it touches anything: the verdict, the target as it stands, the exact change. Takes a snapshot first if you ask it to, and won't run if it can't. Applies. Hands you a keyed receipt of exactly what changed, with the before-state captured so it can be put back.
It does all of that with six tools, over every address the four Proxmox products publish. No wrappers, no catalog to page through, no tool per endpoint: find the address, plan it, read or call it, and prove the record. The whole surface fits a small local model's window.
That's the product: a hypervisor an AI can operate without being able to wreck it.
Read-only by default. No mutation runs on the first call: it returns its blast radius as a plan for you to see first. A tamper-evident receipt for every change.
The comparison isn't Proximo vs. the GUI. It's Proximo vs. handing an LLM your root token and hoping.
Don't take our word for any of it. Verify it yourself.
# 1. The tool count is real. Ask the door itself, cold (=> 6).
# (in a clone of this repo, after `uv sync`)
uv run python -c "import asyncio; from proximo.core.doors.mcp import build_server; \
print(len(asyncio.run(build_server().list_tools())))"
# 2. The container image is what the repo built. Sigstore provenance (exit 0 = verified):
gh attestation verify oci://ghcr.io/john-broadway/proximo:latest --owner john-broadway
# 3. The security posture is graded by a third party, not by us:
# https://scorecard.dev/viewer/?uri=github.com/john-broadway/proximoThe rest is in VERIFY.md: forge a ledger byte and watch verify() refuse, grep
the outbound surface for phone-home (there is none). These checks work on any tool, from any
vendor. Demand them everywhere.
Related MCP server: ProxmoxMCP-Plus
Quickstart
// your MCP client config (Claude Desktop / Claude Code / Cursor / …)
{
"mcpServers": {
"proximo": {
"command": "uvx",
"args": ["proximo-proxmox"],
"timeout": 60, // startup is ~3.5s; a 3s client default drops the server silently
"env": {
"PROXIMO_API_BASE_URL": "https://your-pve:8006/api2/json",
"PROXIMO_TOKEN_PATH": "/path/to/token-file" // USER@REALM!TOKENID=SECRET, by reference, never inlined
}
}
}
}Claude Code, one line:
claude mcp add proximo --env PROXIMO_API_BASE_URL=https://your-pve:8006/api2/json \
--env PROXIMO_TOKEN_PATH=/path/to/token-file -- uvx proximo-proxmoxOr install with one click:
Both prompt for the token file path; the secret never lands in client config. No token yet? uvx proximo-proxmox mint pve prints the least-privilege runbook.
Then preflight what your token can actually do (read-only):
uvx proximo-proxmox doctorStart with a read-only token. Proximo is useful long before you grant it write. Full token-first walkthrough: docs/SETUP.md · more install paths: Install & run.
Why Proximo exists
Everything that touches a Proxmox product is a call: the web UI, pct and qm on a host, curl against the API, an agent's tool. Most of those calls leave no plan behind them, no receipt, and no way back. Proximo is the one client that governs the call before it runs, records it, and can put the record back, whichever door it came in by. Trust by construction:
A call on its own | Through Proximo | |
Before it runs | nothing | a plan, recorded first: the verdict, the live target, the exact change, the blast radius |
Record of what happened | app logs, editable | keyed, hash-chained ledger; |
Undo | by hand, if you kept notes | the record captured first, restored through the vendor's own write |
Command inside an LXC | broad SSH | opt-in, fail-closed allowlist, judged like any mutation |
Products covered | one at a time | PVE + PBS + PMG + PDM, one governed plane |
Verify the artifact you run | varies | signed image · PyPI provenance · SBOM · Scorecard |
Proximo is a community project, standing on its own. MCP, A2A, REST and a shell with no model in the loop are its doors; the governance is the product.
The trust layer: what makes Proximo different
The spine has six pillars. Four stand by default:
Control | What it does |
PLAN | Every mutation first returns a recorded preview: the exact change, live state, blast radius, an advisory risk rating. Nothing mutates without its plan recorded; one |
PROVE | Keyed (HMAC-SHA256), hash-chained audit ledger; |
UNDO | One rule: every mutation with a GET twin captures the record before it runs, and the receipt carries an |
DIAGNOSE | Read-only evidence battery + node health → advisory flags that surface incompleteness too, so an empty list never reads as a false clean bill. |
Two are yours to raise, by design, off until their state paths exist, because both are only worth having if those paths sit outside the agent's reach. A pillar Proximo raised for you would be a pillar the agent could lower for itself:
Pillar (off until configured) | What it holds |
CONSENT | Independent, out-of-band approval per plan: an agent (compromised, confused, or steered by injected text) cannot confirm its own mutation. Grants live in a directory only you write ( |
CONTAIN | The kill-switch: one trip file halts every mutation immediately, mid-incident, no redeploy and no restart. Checked fresh on every mutation; fails closed. Put the trip path where only you can write ( |
proximo doctor reports the spine: which pillars stand, which sockets are empty, and exactly how to fill them. Four more controls ship off until configured: ARM (a mutation runs only while the served token is the write token), a FORBID/RATE ENVELOPE, TAINT (the prompt-injection mitigation), and PRINCIPAL (who-asked attribution). Scope and lease are not Proximo's any more: the write token's own ACL is the scope and its own expire is the lease, both enforced by Proxmox, and proximo mint prints the commands that make such a token. What each control defends against: SECURITY.md.
Honesty note (load-bearing): risk ratings are an advisory heuristic, not a sandbox —
LOWmeans "no state change," not "safe," and the absence of aHIGHflag is not a safety signal. Review every change yourself. The floor beneath it all is the token you mint: Proxmox RBAC holds even if Proximo's process is fully compromised — a stronger guarantee than anything Proximo's own code provides. Scope it to exactly what you mean to grant: SECURITY.md.
Hold any tool to this, including this one: The Keys Test. Ten questions to ask before you hand an AI agent real infrastructure. Proximo's own scorecard published, partials included.
Demo
The record defends itself:
Surfaces & tools: one control plane
Surface | Backend | For |
Proxmox VE | REST API + scoped token | node/guest lifecycle, storage, SDN, identity, HA, firewall |
Proxmox Backup Server | REST API + scoped token | datastores, namespaces, snapshots, sync, GC, verify, tape |
Proxmox Mail Gateway | Ticket auth | mail flow, quarantine, filtering rules, domains, services |
Proxmox Datacenter Manager | API token | federated fleet: reads plus governed control (power/snapshot/migrate, dry-run-first) |
Container and node shell |
| run-command-in-container, |
Those backends are deliberately boring. Anyone can call them. The product is the trust layer over them.
Six tools, every address. The vendor publishes the API; Proximo serves it whole and governs each address by what it is: 1,804 published addresses across the four products, 884 reads, 785 mutations open to an armed operator each with an authored blast-radius tier, 32 opened by an operator's switch (guest agent, container and node shell), 5 on the download lane, 20 held on purpose with a sentence, 78 excluded as not JSON calls. The record is generated from the vendor's own schema and a stale copy fails the suite: docs/arena.md.
Where an operator actually starts, in the six-tool grammar:
You want to… | Say | Worth knowing |
Find the address |
| verbs pick the method; the vendor's own words match |
See the whole cluster at once |
| lean rows (names, states, ids) and a total; |
Find out why a container is sick |
| the battery: status, storage, failed tasks, and the shell probes if that lane is open |
Power / lifecycle, any mutation |
| the plan reads the target first; nothing moves without |
Put it back |
| the captured record, written back through the vendor's own PUT |
Preflight a token / config |
| run this before wiring an agent |
Prove the record wasn't touched |
| on every door, always |
The six tools with typed inputs: docs/TOOLS.md · the walkthrough: docs/SETUP.md.
Install & run
The core alone, no model in the loop: the same install ships proximo-core pve GET /nodes/pve1/status (or --plan on any address: the verdict and the published schema, touching nothing), and the estate memory behind proximo-core learn | where 105 | uses local | changed 24h: what the governed reads have seen, answered from one file beside the ledger, no model, no network. Its import closure is httpx and nothing else (measured by a test); every published address on all four products; the same arm gate, tiers and audit ledger as the MCP door. The core has its own network doors, each the 0.44 face's perimeter with the core behind it: proximo-mcp-http (MCP over streamable HTTP), proximo-http (REST, POST /tools/{name} with an OpenAPI document) and proximo-a2a (an Agent2Agent card whose skills are the six tools).
📦
0.51.0: on PyPI, GitHub, and GHCR (signed multi-arch image).New in 0.51.0 (the license is AGPL-3.0-or-later). Every release through 0.50.1 stays Apache-2.0, and the code contributors brought in stays available under it too. The rest are fixes. A read's answer stays under its cap: 394,752 reads at twelve cap settings, none over, and a cap set lower than an answer needs is raised to the default and named. In a running door a receipt no longer reads the whole ledger: on 0.50.1 a read cost 486 ms at 37,632 ledger rows, now 1.2 ms (a new process, as each
proximo-corecall is, still reads it once). A cut answer'sfields=advice names keys its rows really carry.Recent: 0.50.1 let the operator raise the exit ceiling (
PROXIMO_EXIT_MAX_BYTES, up to 64 KiB, from alexdelprete's measurements on #114); 0.50.0 brought the estate memory back, one SQLite file beside the ledger answeringlearn | where | uses | changedwith no model and no network; 0.49.1 routed shell calls across a cluster by target and node (from PR #107) and gave the operator the shell wait. See SECURITY.md for what each control honestly holds.
Proximo runs on your machine, on demand. No daemon, no open port.
uvx proximo-proxmox # zero-install run (PyPI package: proximo-proxmox; command stays `proximo`)
# or: pip install proximo-proxmox the core, MCP door included
# or: pip install "proximo-proxmox[a2a]" + the optional A2A face
# or: pip install "proximo-proxmox[http]" + the optional HTTP/OpenAPI face
# or: pip install "proximo-proxmox[mcp-http]" + the optional MCP-over-streamable-HTTP face
# or, from source: git clone https://github.com/john-broadway/proximo.git && cd proximo && uv pip install -e .Wire it into your MCP client as the command proximo, with the PROXIMO_* env vars; see packaging/proximo.env.example.
Docker (GHCR): docker run -i --rm … ghcr.io/john-broadway/proximo:latest. Multi-arch, SBOM, sigstore-signed provenance (gh attestation verify oci://ghcr.io/john-broadway/proximo --owner john-broadway). Mirrored to Docker Hub (docker.io/jebroadway/proximo, identical digest); GHCR stays the signed primary.
Safe by default: API-only out of the box. The two near-root edges are opt-in and say so loudly: LXC exec (
PROXIMO_ENABLE_EXEC=1, near-root on the host) and the qemu-guest-agent edge (PROXIMO_ENABLE_AGENT=1, near-root in a guest). Each is scoped by its own fail-closed allowlist.Smallest footprint by construction: the door advertises six schemas and nothing else. Measured on this release,
tools/listover stdio is 5,544 bytes on the wire (about 1,400 tokens at the four-bytes-a-token heuristic; 1,568 as a stock 1.5B's chat template renders it, counted by its server), and that is the whole cost of connecting; the estate behind it is searched, not loaded. There is nothing to scope: a plane you have not configured is simply not reachable, a plane you have is reachable whole, and the gates do not shrink with the doorway. PLAN and PROVE apply to every address however small the model.
The network faces (experimental, opt-in): proximo-a2a speaks Agent2Agent. proximo-http serves plain HTTP + generated /openapi.json for no-code clients. proximo-mcp-http serves MCP itself over Streamable HTTP (the SDK's native transport) for networked MCP clients: no third-party stdio→HTTP bridge, so the perimeter stays Proximo's. LXC on your Proxmox host, one line: on the PVE node as root, bash -c "$(curl -fsSL https://raw.githubusercontent.com/john-broadway/proximo/main/packaging/lxc/ct/proximo.sh)" builds a Debian 13 container running proximo-mcp-http with Proximo from PyPI, its own service user, and a minted bearer on port 41243. Community-scripts engine (MIT) pointed at Proximo's own tree, their telemetry off; the same line inside the container updates it. Details: docs/SETUP.md, files: packaging/lxc/.
All three serve the full surface through the same spine as MCP. No second code path; trust spine and token scope inherited. Fail-closed perimeter: loopback, bearer-token required off-localhost, DNS-rebind and CSRF defended. Details: SECURITY.md.
At scale
One container is the demo. A cluster is the point.
The whole cluster in one call.
proximo_read pve /cluster/resources: every VM, node, storage pool, SDN object, as lean rows with a total.One tamper-evident record across every node. "Show me every state-changing action this month, and prove the log wasn't touched" becomes a query you can actually answer. No human at the CLI walks away with that.
Where the time comes back. On one node a senior at the CLI is faster, and that's fine. Across a dozen nodes and hundreds of guests, a bounded, audited agent earns its keep.
Many boxes, one Proximo: register remotes in a TOML file (secrets by reference, never inlined), point PROXIMO_TARGETS at it, aim a call with target="edge-pve" (the shell door: --target edge-pve). The target travels with the call. PLAN and EXECUTE hit the same box, the ledger records which, cross-plane calls error. Config shape: packaging/targets.example.toml.
Status: the arena record
🩸 0.51.0: AGPL-3.0-or-later from here; a read stays under its cap. 394,752 reads at twelve cap settings, none over; in a running door a receipt costs 1.2 ms at 37,632 ledger rows, where 0.50.1 took 486 ms. Eleven adversarial rounds closed. 4,651 tests. Every release before it (every pillar, every redteam, every fix) lives in
CHANGELOG.md.
The numbers, honestly: six tools over 1,804 published addresses, governed by what each address is (its method decides read or write, total by construction; the blast-radius tier is the one human-authored column, and an untiered mutation is refused, armed or not). 4,651 in-process tests (ruff + pyright clean) pin the engine, the six pillars, the doors and the records, and a gate round neuters each pillar's gate one at a time and asks the suite to notice. This workspace administers its own Proxmox estate through Proximo daily (dogfood).
Proven live (not mocks): the governed path end to end against a real PVE 9 node through this door, plans reading the live target, receipts on the keyed chain, before-state captures and their restore. The 0.44 wrappers' live record (a 3-node cluster, PBS, PMG, PDM, a real cross-datacenter move) stays in CHANGELOG.md where it was earned; it is not re-claimed for the core.
Not yet proven — said plainly: a small local model finishing a whole task through this door. Measured and driven on 0.45: a stock 1.5B behind llama.cpp with a 4,096-token context the server enforces, against a real PVE node, read-only. Its calls landed and the door's refusals named the fix each time (an invented field, the real ones listed); the prompt peaked at 3,074 tokens; the model did not finish the task, it invented a number. The window holds; a 1.5B does not. Hardware-watchdog fencing (needs physical iTCO/IPMI), and behavior at production scale. The 20 held addresses are never fired: refused by sentence, by design, not a gap.
Documentation
Document | What it answers |
Token-first walkthrough: mint a least-privilege token, verify it, widen deliberately. | |
Why Proximo exists: two roots on two planes, and the door that governs both lanes. | |
Every trust claim paired with the command that proves it. Run them cold. | |
The two-deployment trust model, every control, what each honestly holds, reporting. | |
What Proximo defends against, what it doesn't, where the boundaries sit. | |
The six tools, typed inputs: find, plan, read, call, and the two ledger reads. | |
The page written for the agent itself: Proximo's sharp edges, stated first. | |
What's broken or odd right now, said plainly. | |
Dev setup, the CI gates, what a PR is expected to keep intact. | |
Every release, every redteam, every fix: the full build history. |
License
AGPL-3.0-or-later, so nobody can take it closed. Full text in LICENSE. Every release through 0.50.1 was Apache-2.0 and stays Apache-2.0. The code Alessandro Del Prete (@alexdelprete) and RavenLiao contributed came in under Apache-2.0; their copyright stays theirs, and those portions remain available under Apache-2.0 as well (LICENSES/Apache-2.0.txt).
Credits
Built by John Broadway with Claude and Maude: a human-AI partnership, and the first thing we made on this box to give away to the world. Claude Opus 4.8 built the trust pillars and the original tool surface and has carried the work since; Claude Fable 5 ran the 101-agent release audit and the first publish. Every commit carries its co-author trailer. Outside contributors: Alessandro Del Prete (@alexdelprete), MCP over Streamable HTTP; RavenLiao (@RavenLiao), PVE SSH routed by target and node.
"Are you not entertained?" Stars, issues, and sparring partners welcome. Strength and honor. ⚔️
Available Tools
6 toolsaudit_entriesCRead-only
READ-ONLY: the PROVE ledger, newest first, bounded; says when it truncated.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| action | No | ||
| target | No | ||
| mutations_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so 'READ-ONLY' earns no credit, but the description adds real behavior: results are ordered newest-first, the result set is bounded, and truncation is signaled explicitly. Ordering and truncation signaling are exactly the traits an agent needs to paginate or widen a limit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded fragment with zero filler; the safety marker leads and ordering/truncation follow. It is arguably too terse for four undocumented parameters, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, but with zero schema description coverage across four parameters and no usage guidance, the agent is left guessing about action/target/mutations_only semantics. For a filtered ledger read, this is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for four parameters, so the description must compensate and does not. 'bounded' hints at limit and 'truncated' at the same, but action, target, and mutations_only are undocumented in both schema and description – an agent cannot tell what values action/target accept or what mutations_only filters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the resource ('the PROVE ledger') and ordering ('newest first') but uses no verb – the read action is only implied by 'READ-ONLY'. Sibling audit_verify is separated only implicitly (ledger reading vs. verification), so an agent must infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this over audit_verify or proximo_read, and no exclusions or prerequisites. The only guidance is the read-only marker, which is already in annotations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_verifyARead-only
READ-ONLY: walk the chain, report the first break; expected_head catches a cut tail; path= checks a sealed archive.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| expected_head | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reinforces the readOnlyHint with an upfront READ-ONLY label and adds useful behavior beyond annotations: it walks the chain and reports the first break. It also explains that expected_head detects a cut tail, which is meaningful verification context. With an output schema present, return details need not be repeated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely compact and front-loaded. The READ-ONLY constraint comes first, followed by the core behavior and the two parameter use cases, with no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and readOnly annotation, the description provides the essential operational context: read-only nature, chain-walking behavior, truncation detection, and archive checking. A brief clarification of what 'chain' refers to would make it fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden and does so reasonably. It assigns clear meaning to path as an archive path and expected_head as a truncation check, though it omits optionality, format expectations, and examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource combination: walking an audit chain and reporting the first break. It separates itself from audit_entries by describing verification rather than listing, though 'chain' remains somewhat jargon-dependent and the sibling is not named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use each parameter — expected_head for detecting a truncated tail and path for checking a sealed archive. It does not state when to choose audit_verify over audit_entries or other alternatives, leaving selection guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
proximo_callA
MUTATION: run a governed POST/PUT/DELETE. Without confirm=true it returns the plan (verdict, consent id, current, change) and mutates nothing. Refused unless the operator is armed AND the address has an authored blast-radius tier. Every call, refused or executed, is receipted. Task-backed calls are waited on (wait=N s, default 60, max 600; 0 submits only). method=undo with path=<undo.id> puts a receipt's capture back, plan first; withheld or unpublished keys come back as skipped.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| path | Yes | ||
| wait | No | ||
| plane | Yes | ||
| method | Yes | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false; the description carries everything else: dry-run default, refusal preconditions (armed operator, blast-radius tier), receipting on every call including refusals, task-backed wait semantics with default and max, and undo restore behavior with skipped-key outcomes. That is exactly the beyond-annotation context an agent needs before invoking a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads 'MUTATION:' as a hazard marker and packs only actionable facts into seven short clauses with no filler. It is dense to the point of terseness in places (e.g. 'current, change' unpacked), but nothing is extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values needn't be described, yet the plan verdict/consent-id/current/change are still named helpfully. For a governed mutation with refusal paths, receipts, and async waiting, the coverage is strong; the main omissions are what args accepts and what each plane (pve/pbs/pmg/pdm) governs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains confirm (default false, plans only), wait (N seconds, default 60, max 600, 0 submits only), method=undo paired with path=<undo.id>, and the plan payload fields. It leaves args (nested object) and the plane enum values unexplained, so a small gap remains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with 'MUTATION: run a governed POST/PUT/DELETE', a specific verb plus resource plus governance scope. The read/plan siblings (proximo_read, proximo_plan) are implicitly separated because this tool explicitly mutates, and the plan-without-confirm behavior clarifies the boundary with proximo_plan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete conditions: without confirm=true it only plans; refused unless operator is armed and the address has an authored blast-radius tier; method=undo reverts a receipt. It never explicitly names proximo_plan or proximo_read as the alternatives to use instead, so the routing guidance is conditional rather than comparative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
proximo_findBRead-only
READ-ONLY: find API addresses by plain words ('list datastores'). A verb picks the method. Returns access and blast-radius tier. 5 by default.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| plane | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description restates READ-ONLY, so it adds little on safety. It does add useful behavior: it returns an 'access and blast-radius tier' and that the limit defaults to 5, which is context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, front-loaded sentences with no filler and the READ-ONLY constraint placed first. Slightly telegraphic phrasing ('A verb picks the method') costs a little clarity but wastes no space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required. Still, for a 3-param tool with 0% schema coverage, the undocumented 'plane' enum and vague dispatch phrasing leave an agent short of what it needs to call confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description must carry parameter meaning. It explains 'query' ('plain words', with an example) and the limit default ('5 by default'), but leaves the 'plane' enum (pve/pbs/pmg/pdm) entirely unexplained, which is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('find API addresses') and gives a concrete example ('list datastores'), so the discovery intent is clear. 'A verb picks the method' signals this is a dispatcher-style lookup distinct from execution siblings, though the framing is terse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'READ-ONLY' and 'A verb picks the method' imply this is the search/discovery entry point, hinting it precedes proximo_plan/proximo_call. However, no sibling is named and there is no explicit when-to-use/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
proximo_planARead-only
READ-ONLY, mutates nothing: the governed verdict (armed, tier, consent) for one address, with the parameters you gave and the required ones you lack; fields='name1,name2' or 'all' shows the vendor's full schema. A mutation's plan also reads the target: current, change, noop. Run before proximo_call. path may be words: one match is planned, several come back to pick from.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| path | Yes | ||
| plane | Yes | ||
| fields | No | ||
| method | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true; the description reinforces it ('READ-ONLY, mutates nothing') and then adds substantial behavior: the verdict carries armed/tier/consent, missing required parameters are surfaced, fields='all' reveals the vendor's full schema, and mutation plans read the target as current/change/noop. It also discloses the fuzzy-path behavior (single match planned, multiple returned as candidates), which is exactly the kind of trait annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the most important guarantee (READ-ONLY) and packed with load-bearing clauses; nearly every phrase carries information. It is semicolon-dense and slightly run-on, which costs some immediate parseability, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description needn't enumerate return fields, yet it explains the key verdict concepts and sequencing. Remaining gaps are the semantics of plane/method and how the 'required ones you lack' list should be acted on, which matter for a five-parameter planning tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across five parameters, so the description must compensate. It does document fields (comma-separated names or 'all'), path (may be free words, with match/candidate semantics), and indirectly args ('the parameters you gave'), but plane (an enum) and method are never explained in the description or schema, leaving genuine gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete job: return the governed verdict (armed, tier, consent) for one address, plus the parameters supplied and the required ones missing, plus optional schema expansion via fields. It also differentiates from proximo_call by naming it as the tool that must follow. It doesn't distinguish itself from proximo_find, whose name-resolution territory ('path may be words') it partially overlaps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Run before proximo_call" gives an explicit sequencing rule, and 'several come back to pick from' explains what to do when a path is ambiguous. However, there is no when-not guidance (e.g., when to skip planning and call directly) and no routing versus proximo_find/proximo_read for resolution or inspection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
proximo_readARead-only
READ-ONLY: run a GET by path or words (no leading slash). args = query parameters (params: old name). Rows come lean with a total; fields='all' or 'name,status' for others; over the cap you get counts and a next line. since='24h': what changed, from the door's snapshots. wait=N on .../tasks/{upid}/status waits up to N s (max 600). diagnose=true on a node or guest path: health and advisory flags. Credentials come back withheld.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| path | Yes | ||
| wait | No | ||
| plane | Yes | ||
| since | No | ||
| fields | No | ||
| params | No | ||
| diagnose | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although annotations already declare readOnlyHint=true, the description adds substantial behavioral context: credentials are withheld, rows include a total, over-cap responses return counts and a next line, since uses snapshots, wait has a 600s maximum, and diagnose returns health/advisory flags. These details go well beyond the annotation and help an agent understand actual behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the critical read-only GET behavior. It is dense and somewhat cryptic in places ("from the door's snapshots", "next line"), but every clause carries parameter or behavioral information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given eight parameters, 0% schema coverage, and an existing output schema, the description covers most invocation-relevant behavior and response nuances. The main gap is that the required plane parameter is not explained beyond its enum, but overall an agent has enough context to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for eight parameters. It explains args as query parameters, params as an old-name alias, path format (no leading slash), fields syntax, since, wait with a maximum, and diagnose; only plane is left unexplained, so it is strong but not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific read operation: "READ-ONLY: run a GET by path or words", which clearly identifies the verb and resource type. It distinguishes itself as a read-only GET tool, but does not explicitly differentiate its purpose from siblings like proximo_find or proximo_call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives conditional usage hints for specific parameters (fields, since, wait, diagnose), which implies when to use those options. However, it never states when to choose proximo_read over proximo_find or proximo_call, nor does it provide explicit exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.49.1- Changed
audit_entries11 fields changed- removed
Input schema / properties / action / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / action / defaultRemoved value: -null - removed
Input schema / properties / action / titleRemoved value: -"Action" - added
Input schema / properties / action / typeAdded value: +"string" - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / mutations_only / titleRemoved value: -"Mutations Only" - removed
Input schema / properties / target / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / target / defaultRemoved value: -null - removed
Input schema / properties / target / titleRemoved value: -"Target" - added
Input schema / properties / target / typeAdded value: +"string" - removed
Input schema / titleRemoved value: -"audit_entriesArguments"
- Changed
audit_verify9 fields changed- removed
Input schema / properties / expected_head / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / expected_head / defaultRemoved value: -null - removed
Input schema / properties / expected_head / titleRemoved value: -"Expected Head" - added
Input schema / properties / expected_head / typeAdded value: +"string" - removed
Input schema / properties / path / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / path / defaultRemoved value: -null - removed
Input schema / properties / path / titleRemoved value: -"Path" - added
Input schema / properties / path / typeAdded value: +"string" - removed
Input schema / titleRemoved value: -"audit_verifyArguments"
- Changed
proximo_call13 fields changed- removed
Input schema / properties / args / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Input schema / properties / args / defaultRemoved value: -null - removed
Input schema / properties / args / titleRemoved value: -"Args" - added
Input schema / properties / args / typeAdded value: +"object" - removed
Input schema / properties / confirm / titleRemoved value: -"Confirm" - removed
Input schema / properties / method / titleRemoved value: -"Method" - removed
Input schema / properties / path / titleRemoved value: -"Path" - removed
Input schema / properties / plane / titleRemoved value: -"Plane" - removed
Input schema / properties / wait / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - removed
Input schema / properties / wait / defaultRemoved value: -null - removed
Input schema / properties / wait / titleRemoved value: -"Wait" - added
Input schema / properties / wait / typeAdded value: +"integer" - removed
Input schema / titleRemoved value: -"_callArguments"
- Changed
proximo_find8 fields changed- removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / plane / anyOfRemoved value: -[ - { - "enum": [ - "pve", - "pbs", - "pmg", - "pdm" - ], - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / plane / defaultRemoved value: -null - added
Input schema / properties / plane / enumAdded value: +[ + "pve", + "pbs", + "pmg", + "pdm" +] - removed
Input schema / properties / plane / titleRemoved value: -"Plane" - added
Input schema / properties / plane / typeAdded value: +"string" - removed
Input schema / properties / query / titleRemoved value: -"Query" - removed
Input schema / titleRemoved value: -"findArguments"
- Changed
proximo_plan9 fields changed- removed
Input schema / properties / args / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Input schema / properties / args / defaultRemoved value: -null - removed
Input schema / properties / args / titleRemoved value: -"Args" - added
Input schema / properties / args / typeAdded value: +"object" - added
Input schema / properties / fieldsAdded value: +{ + "type": "string" +} - removed
Input schema / properties / method / titleRemoved value: -"Method" - removed
Input schema / properties / path / titleRemoved value: -"Path" - removed
Input schema / properties / plane / titleRemoved value: -"Plane" - removed
Input schema / titleRemoved value: -"_planArguments"
- Changed
proximo_read21 fields changed- added
Input schema / properties / argsAdded value: +{ + "type": "object" +} - removed
Input schema / properties / diagnose / titleRemoved value: -"Diagnose" - removed
Input schema / properties / fields / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / fields / defaultRemoved value: -null - removed
Input schema / properties / fields / titleRemoved value: -"Fields" - added
Input schema / properties / fields / typeAdded value: +"string" - removed
Input schema / properties / params / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Input schema / properties / params / defaultRemoved value: -null - removed
Input schema / properties / params / titleRemoved value: -"Params" - added
Input schema / properties / params / typeAdded value: +"object" - removed
Input schema / properties / path / titleRemoved value: -"Path" - removed
Input schema / properties / plane / titleRemoved value: -"Plane" - removed
Input schema / properties / since / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / since / defaultRemoved value: -null - removed
Input schema / properties / since / titleRemoved value: -"Since" - added
Input schema / properties / since / typeAdded value: +"string" - removed
Input schema / properties / wait / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - removed
Input schema / properties / wait / defaultRemoved value: -null - removed
Input schema / properties / wait / titleRemoved value: -"Wait" - added
Input schema / properties / wait / typeAdded value: +"integer" - removed
Input schema / titleRemoved value: -"_readArguments"
9 tool updates
v0.46.2- Changed
audit_entries15 fields changed- added
Input schema / properties / action / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / action / descriptionRemoved value: -"Only this exact tool name, e.g. 'pve_guest_config_set'." - added
Input schema / properties / action / titleAdded value: +"Action" - removed
Input schema / properties / action / typeRemoved value: -[ - "string", - "null" -] - removed
Input schema / properties / limit / descriptionRemoved value: -"Newest N entries to return (default 20)." - added
Input schema / properties / limit / titleAdded value: +"Limit" - removed
Input schema / properties / mutations_only / descriptionRemoved value: -"Only entries that changed state." - added
Input schema / properties / mutations_only / titleAdded value: +"Mutations Only" - removed
Input schema / properties / principalRemoved value: -{ - "default": null, - "description": "Only entries attributed to this caller id.", - "type": [ - "string", - "null" - ] -} - added
Input schema / properties / target / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / target / descriptionRemoved value: -"Only entries against this exact target, e.g. 'vmid=100'." - added
Input schema / properties / target / titleAdded value: +"Target" - removed
Input schema / properties / target / typeRemoved value: -[ - "string", - "null" -] - added
Input schema / titleAdded value: +"audit_entriesArguments" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "title": "audit_entriesDictOutput", + "type": "object" +}
- Changed
audit_verify7 fields changed- added
Input schema / properties / expected_head / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / expected_head / descriptionRemoved value: -"64-char hex head() value pinned off-box; verifying against it also catches tail truncation, a forged tail-append, or a full ledger replacement. Omit to fall back to PROXIMO_AUDIT_EXPECTED_HEAD." - added
Input schema / properties / expected_head / titleAdded value: +"Expected Head" - removed
Input schema / properties / expected_head / typeRemoved value: -[ - "string", - "null" -] - added
Input schema / properties / pathAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Path" +} - added
Input schema / titleAdded value: +"audit_verifyArguments" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "title": "audit_verifyDictOutput", + "type": "object" +}
- Changed
proximo_call11 fields changed- added
Input schema / properties / argsAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Args" +} - removed
Input schema / properties / argumentsRemoved value: -{ - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The tool's arguments as an object, e.g. {'vmid': 100, 'action': 'reboot'}. Get the shape from proximo_tool_schema. Omit/null for a no-arg tool." -} - added
Input schema / properties / confirmAdded value: +{ + "default": false, + "title": "Confirm", + "type": "boolean" +} - added
Input schema / properties / methodAdded value: +{ + "title": "Method", + "type": "string" +} - added
Input schema / properties / pathAdded value: +{ + "title": "Path", + "type": "string" +} - added
Input schema / properties / planeAdded value: +{ + "enum": [ + "pve", + "pbs", + "pmg", + "pdm" + ], + "title": "Plane", + "type": "string" +} - removed
Input schema / properties / toolRemoved value: -{ - "description": "Exact tool name to run, e.g. 'pve_guest_power' (from proximo_find_tools). Non-resident names are fine.", - "type": "string" -} - added
Input schema / properties / waitAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Wait" +} - changed
Input schema / requiredPrevious value: -[ - "tool" -]New value: +[ + "plane", + "method", + "path" +] - added
Input schema / titleAdded value: +"_callArguments" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "title": "_callDictOutput", + "type": "object" +}
- Added
proximo_find - Removed
proximo_find_tools - Added
proximo_plan - Changed
proximo_read12 fields changed- removed
Input schema / properties / argumentsRemoved value: -{ - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Arguments" -} - added
Input schema / properties / diagnoseAdded value: +{ + "default": false, + "title": "Diagnose", + "type": "boolean" +} - added
Input schema / properties / fieldsAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Fields" +} - added
Input schema / properties / paramsAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Params" +} - added
Input schema / properties / pathAdded value: +{ + "title": "Path", + "type": "string" +} - added
Input schema / properties / planeAdded value: +{ + "enum": [ + "pve", + "pbs", + "pmg", + "pdm" + ], + "title": "Plane", + "type": "string" +} - added
Input schema / properties / sinceAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Since" +} - removed
Input schema / properties / toolRemoved value: -{ - "title": "Tool", - "type": "string" -} - added
Input schema / properties / waitAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Wait" +} - changed
Input schema / requiredPrevious value: -[ - "tool" -]New value: +[ + "plane", + "path" +] - changed
Input schema / titlePrevious value: -"proximo_readArguments"New value: +"_readArguments" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "title": "_readDictOutput", + "type": "object" +}
- Removed
proximo_recall - Removed
proximo_tool_schema
1 tool update
v0.36.0- Added
proximo_read
2 tool updates
v0.32.0- Changed
proximo_call2 fields changed- added
Input schema / properties / arguments / descriptionAdded value: +"The tool's arguments as an object, e.g. {'vmid': 100, 'action': 'reboot'}. Get the shape from proximo_tool_schema. Omit/null for a no-arg tool." - added
Input schema / properties / tool / descriptionAdded value: +"Exact tool name to run, e.g. 'pve_guest_power' (from proximo_find_tools). Non-resident names are fine."
- Changed
proximo_find_tools3 fields changed- added
Output schema / properties / result / anyOfAdded value: +[ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "additionalProperties": true, + "type": "object" + } +] - removed
Output schema / properties / result / itemsRemoved value: -{ - "additionalProperties": true, - "type": "object" -} - removed
Output schema / properties / result / typeRemoved value: -"array"
720 tool updates
v0.31.1- Added
audit_entries - Changed
audit_verify4 fields changed- removed
Input schema / properties / expected_head / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / expected_head / titleRemoved value: -"Expected Head" - added
Input schema / properties / expected_head / typeAdded value: +[ + "string", + "null" +] - removed
Input schema / titleRemoved value: -"audit_verifyArguments"
- Removed
ct_diagnose - Removed
ct_exec - Removed
ct_logs - Removed
ct_psql - Removed
pbs_acl_get - Removed
pbs_acl_update - Removed
pbs_acme_account_create - Removed
pbs_acme_account_delete - Removed
pbs_acme_account_get - Removed
pbs_acme_account_list - Removed
pbs_acme_account_update - Removed
pbs_acme_cert_order - Removed
pbs_acme_cert_renew - Removed
pbs_acme_challenge_schema - Removed
pbs_acme_directories - Removed
pbs_acme_plugin_create - Removed
pbs_acme_plugin_delete - Removed
pbs_acme_plugin_get - Removed
pbs_acme_plugin_update - Removed
pbs_acme_plugins_list - Removed
pbs_acme_tos - Removed
pbs_admin_gc_jobs_list - Removed
pbs_admin_prune_jobs_list - Removed
pbs_admin_sync_jobs_list - Removed
pbs_admin_traffic_control_status - Removed
pbs_admin_verify_jobs_list - Removed
pbs_apt_changelog - Removed
pbs_apt_repositories_get - Removed
pbs_apt_repository_add - Removed
pbs_apt_repository_set - Removed
pbs_apt_update_refresh - Removed
pbs_apt_updates_list - Removed
pbs_apt_versions - Removed
pbs_datastore_active_operations - Removed
pbs_datastore_create - Removed
pbs_datastore_delete - Removed
pbs_datastore_get - Removed
pbs_datastore_mount - Removed
pbs_datastore_prune - Removed
pbs_datastore_rrd - Removed
pbs_datastore_s3_refresh - Removed
pbs_datastore_status - Removed
pbs_datastore_unmount - Removed
pbs_datastore_update - Removed
pbs_datastores_list - Removed
pbs_datastores_usage - Removed
pbs_encryption_key_create - Removed
pbs_encryption_key_delete - Removed
pbs_encryption_key_list - Removed
pbs_encryption_key_toggle_archive - Removed
pbs_gc_start - Removed
pbs_gc_status - Removed
pbs_group_change_owner - Removed
pbs_group_delete - Removed
pbs_group_move - Removed
pbs_group_notes_get - Removed
pbs_group_notes_set - Removed
pbs_groups_list - Removed
pbs_job_create - Removed
pbs_job_delete - Removed
pbs_job_run - Removed
pbs_job_update - Removed
pbs_jobs_list - Removed
pbs_metrics_influxdb_http_create - Removed
pbs_metrics_influxdb_http_delete - Removed
pbs_metrics_influxdb_http_get - Removed
pbs_metrics_influxdb_http_list - Removed
pbs_metrics_influxdb_http_update - Removed
pbs_metrics_influxdb_udp_create - Removed
pbs_metrics_influxdb_udp_delete - Removed
pbs_metrics_influxdb_udp_get - Removed
pbs_metrics_influxdb_udp_list - Removed
pbs_metrics_influxdb_udp_update - Removed
pbs_metrics_servers_list - Removed
pbs_metrics_status - Removed
pbs_namespace_create - Removed
pbs_namespace_delete - Removed
pbs_namespace_move - Removed
pbs_namespaces_list - Removed
pbs_node_cert_delete - Removed
pbs_node_cert_upload - Removed
pbs_node_certificates_list - Removed
pbs_node_config_get - Removed
pbs_node_config_set - Removed
pbs_node_disk_directory_create - Removed
pbs_node_disk_directory_delete - Removed
pbs_node_disk_directory_list - Removed
pbs_node_disk_initgpt - Removed
pbs_node_disk_smart - Removed
pbs_node_disk_wipe - Removed
pbs_node_disk_zfs_create - Removed
pbs_node_disk_zfs_get - Removed
pbs_node_disk_zfs_list - Removed
pbs_node_disks_list - Removed
pbs_node_dns_get - Removed
pbs_node_dns_set - Removed
pbs_node_identity - Removed
pbs_node_journal - Removed
pbs_node_network_iface_create - Removed
pbs_node_network_iface_delete - Removed
pbs_node_network_iface_get - Removed
pbs_node_network_iface_update - Removed
pbs_node_network_list - Removed
pbs_node_network_reload - Removed
pbs_node_network_revert - Removed
pbs_node_report - Removed
pbs_node_rrd - Removed
pbs_node_service_control - Removed
pbs_node_service_status - Removed
pbs_node_services_list - Removed
pbs_node_status - Removed
pbs_node_subscription_check - Removed
pbs_node_subscription_delete - Removed
pbs_node_subscription_get - Removed
pbs_node_subscription_set - Removed
pbs_node_syslog - Removed
pbs_node_task_log - Removed
pbs_node_task_status - Removed
pbs_node_task_stop - Removed
pbs_node_time_get - Removed
pbs_node_time_set - Removed
pbs_notification_endpoint_create - Removed
pbs_notification_endpoint_delete - Removed
pbs_notification_endpoint_get - Removed
pbs_notification_endpoint_list - Removed
pbs_notification_endpoint_update - Removed
pbs_notification_matcher_delete - Removed
pbs_notification_matcher_field_values - Removed
pbs_notification_matcher_fields - Removed
pbs_notification_matcher_get - Removed
pbs_notification_matcher_set - Removed
pbs_notification_matchers_list - Removed
pbs_notification_target_test - Removed
pbs_notification_targets_list - Removed
pbs_permissions_get - Removed
pbs_prune - Removed
pbs_pull - Removed
pbs_push - Removed
pbs_realm_ad_create - Removed
pbs_realm_ad_delete - Removed
pbs_realm_ad_get - Removed
pbs_realm_ad_list - Removed
pbs_realm_ad_update - Removed
pbs_realm_ldap_create - Removed
pbs_realm_ldap_delete - Removed
pbs_realm_ldap_get - Removed
pbs_realm_ldap_list - Removed
pbs_realm_ldap_update - Removed
pbs_realm_openid_create - Removed
pbs_realm_openid_delete - Removed
pbs_realm_openid_get - Removed
pbs_realm_openid_list - Removed
pbs_realm_openid_update - Removed
pbs_realm_pam_get - Removed
pbs_realm_pam_set - Removed
pbs_realm_pbs_get - Removed
pbs_realm_pbs_set - Removed
pbs_realm_sync - Removed
pbs_remote_create - Removed
pbs_remote_delete - Removed
pbs_remote_get - Removed
pbs_remote_scan - Removed
pbs_remote_scan_groups - Removed
pbs_remote_scan_namespaces - Removed
pbs_remote_update - Removed
pbs_remotes_list - Removed
pbs_roles_list - Removed
pbs_s3_check - Removed
pbs_s3_client_create - Removed
pbs_s3_client_delete - Removed
pbs_s3_client_get - Removed
pbs_s3_client_list - Removed
pbs_s3_client_update - Removed
pbs_s3_list_buckets - Removed
pbs_s3_reset_counters - Removed
pbs_snapshot_delete - Removed
pbs_snapshot_notes_set - Removed
pbs_snapshot_protected_get - Removed
pbs_snapshot_protected_set - Removed
pbs_snapshots_list - Removed
pbs_tape_backup - Removed
pbs_tape_backup_job_create - Removed
pbs_tape_backup_job_delete - Removed
pbs_tape_backup_job_get - Removed
pbs_tape_backup_job_list - Removed
pbs_tape_backup_job_run - Removed
pbs_tape_backup_job_update - Removed
pbs_tape_changer_create - Removed
pbs_tape_changer_delete - Removed
pbs_tape_changer_get - Removed
pbs_tape_changer_list - Removed
pbs_tape_changer_status - Removed
pbs_tape_changer_transfer - Removed
pbs_tape_changer_update - Removed
pbs_tape_drive_barcode_label_media - Removed
pbs_tape_drive_cartridge_memory - Removed
pbs_tape_drive_catalog - Removed
pbs_tape_drive_clean - Removed
pbs_tape_drive_create - Removed
pbs_tape_drive_delete - Removed
pbs_tape_drive_eject - Removed
pbs_tape_drive_format - Removed
pbs_tape_drive_get - Removed
pbs_tape_drive_inventory - Removed
pbs_tape_drive_inventory_update - Removed
pbs_tape_drive_label_media - Removed
pbs_tape_drive_list - Removed
pbs_tape_drive_load_media - Removed
pbs_tape_drive_load_slot - Removed
pbs_tape_drive_read_label - Removed
pbs_tape_drive_restore_key - Removed
pbs_tape_drive_rewind - Removed
pbs_tape_drive_status - Removed
pbs_tape_drive_unload - Removed
pbs_tape_drive_update - Removed
pbs_tape_drive_volume_statistics - Removed
pbs_tape_key_create - Removed
pbs_tape_key_delete - Removed
pbs_tape_key_get - Removed
pbs_tape_key_list - Removed
pbs_tape_key_update_password - Removed
pbs_tape_media_content - Removed
pbs_tape_media_destroy - Removed
pbs_tape_media_list - Removed
pbs_tape_media_move - Removed
pbs_tape_media_sets - Removed
pbs_tape_media_status_get - Removed
pbs_tape_media_status_set - Removed
pbs_tape_pool_create - Removed
pbs_tape_pool_delete - Removed
pbs_tape_pool_get - Removed
pbs_tape_pool_list - Removed
pbs_tape_pool_update - Removed
pbs_tape_restore - Removed
pbs_tape_scan_changers - Removed
pbs_tape_scan_drives - Removed
pbs_tasks_list - Removed
pbs_tfa_add - Removed
pbs_tfa_delete - Removed
pbs_tfa_entry_get - Removed
pbs_tfa_list - Removed
pbs_tfa_unlock - Removed
pbs_tfa_update - Removed
pbs_tfa_user_get - Removed
pbs_tfa_webauthn_get - Removed
pbs_tfa_webauthn_set - Removed
pbs_token_create - Removed
pbs_token_delete - Removed
pbs_token_update - Removed
pbs_traffic_control_delete - Removed
pbs_traffic_control_upsert - Removed
pbs_traffic_controls_list - Removed
pbs_user_create - Removed
pbs_user_delete - Removed
pbs_user_get - Removed
pbs_user_token_get - Removed
pbs_user_tokens_list - Removed
pbs_user_update - Removed
pbs_users_list - Removed
pbs_verify_start - Removed
pbs_version - Removed
pdm_acl_list - Removed
pdm_node_status - Removed
pdm_pbs_datastores_list - Removed
pdm_pbs_remote_status - Removed
pdm_pbs_snapshots_list - Removed
pdm_ping - Removed
pdm_pve_cluster_status - Removed
pdm_pve_lxc_config - Removed
pdm_pve_lxc_list - Removed
pdm_pve_lxc_migrate - Removed
pdm_pve_lxc_power - Removed
pdm_pve_lxc_remote_migrate - Removed
pdm_pve_lxc_snapshot_create - Removed
pdm_pve_lxc_snapshot_delete - Removed
pdm_pve_lxc_snapshot_rollback - Removed
pdm_pve_node_list - Removed
pdm_pve_qemu_config - Removed
pdm_pve_qemu_list - Removed
pdm_pve_qemu_migrate - Removed
pdm_pve_qemu_power - Removed
pdm_pve_qemu_remote_migrate - Removed
pdm_pve_qemu_snapshot_create - Removed
pdm_pve_qemu_snapshot_delete - Removed
pdm_pve_qemu_snapshot_rollback - Removed
pdm_pve_resources - Removed
pdm_remote_config_get - Removed
pdm_remote_version - Removed
pdm_remotes_list - Removed
pdm_resources_list - Removed
pdm_resources_status - Removed
pdm_roles_list - Removed
pdm_tasks_list - Removed
pdm_users_list - Removed
pdm_version - Removed
pmg_action_bcc_create - Removed
pmg_action_bcc_update - Removed
pmg_action_delete - Removed
pmg_action_disclaimer_create - Removed
pmg_action_disclaimer_update - Removed
pmg_action_field_create - Removed
pmg_action_field_update - Removed
pmg_action_notification_create - Removed
pmg_action_notification_update - Removed
pmg_action_objects_list - Removed
pmg_action_removeattachments_create - Removed
pmg_action_removeattachments_update - Removed
pmg_apt_changelog - Removed
pmg_apt_repositories_get - Removed
pmg_apt_repository_add - Removed
pmg_apt_repository_set - Removed
pmg_apt_update_refresh - Removed
pmg_apt_updates_list - Removed
pmg_apt_versions - Removed
pmg_backup_create - Removed
pmg_doctor - Removed
pmg_domain_create - Removed
pmg_domain_delete - Removed
pmg_domains_list - Removed
pmg_mynetworks_add - Removed
pmg_mynetworks_remove - Removed
pmg_node_rrddata - Removed
pmg_node_status - Removed
pmg_node_syslog - Removed
pmg_postfix_flush - Removed
pmg_postfix_qshape - Removed
pmg_quarantine_action - Removed
pmg_quarantine_attachment - Removed
pmg_quarantine_blocklist_add - Removed
pmg_quarantine_blocklist_list - Removed
pmg_quarantine_blocklist_remove - Removed
pmg_quarantine_spam - Removed
pmg_quarantine_spamstatus - Removed
pmg_quarantine_spamusers - Removed
pmg_quarantine_virus - Removed
pmg_quarantine_virusstatus - Removed
pmg_quarantine_welcomelist_add - Removed
pmg_quarantine_welcomelist_list - Removed
pmg_quarantine_welcomelist_remove - Removed
pmg_relay_config - Removed
pmg_ruledb_digest - Removed
pmg_ruledb_rule_action_attach - Removed
pmg_ruledb_rule_action_detach - Removed
pmg_ruledb_rule_actions_list - Removed
pmg_ruledb_rule_create - Removed
pmg_ruledb_rule_delete - Removed
pmg_ruledb_rule_from_attach - Removed
pmg_ruledb_rule_from_detach - Removed
pmg_ruledb_rule_from_list - Removed
pmg_ruledb_rule_get - Removed
pmg_ruledb_rule_to_attach - Removed
pmg_ruledb_rule_to_detach - Removed
pmg_ruledb_rule_to_list - Removed
pmg_ruledb_rule_update - Removed
pmg_ruledb_rule_what_attach - Removed
pmg_ruledb_rule_what_detach - Removed
pmg_ruledb_rule_what_list - Removed
pmg_ruledb_rule_when_attach - Removed
pmg_ruledb_rule_when_detach - Removed
pmg_ruledb_rule_when_list - Removed
pmg_ruledb_rules_list - Removed
pmg_service_control - Removed
pmg_service_status - Removed
pmg_spam_config - Removed
pmg_spam_config_update - Removed
pmg_statistics_domains - Removed
pmg_statistics_mail - Removed
pmg_statistics_mailcount - Removed
pmg_statistics_receiver - Removed
pmg_statistics_recent - Removed
pmg_statistics_sender - Removed
pmg_statistics_spamscores - Removed
pmg_statistics_virus - Removed
pmg_tasks_list - Removed
pmg_tracker_detail - Removed
pmg_tracker_list - Removed
pmg_transport_create - Removed
pmg_transport_delete - Removed
pmg_what_group_create - Removed
pmg_what_group_delete - Removed
pmg_what_group_get - Removed
pmg_what_group_objects - Removed
pmg_what_group_update - Removed
pmg_what_groups_list - Removed
pmg_what_object_add - Removed
pmg_what_object_delete - Removed
pmg_what_object_update - Removed
pmg_when_group_create - Removed
pmg_when_group_delete - Removed
pmg_when_group_get - Removed
pmg_when_group_objects - Removed
pmg_when_group_update - Removed
pmg_when_groups_list - Removed
pmg_when_object_add - Removed
pmg_when_object_delete - Removed
pmg_when_object_update - Removed
pmg_who_group_create - Removed
pmg_who_group_delete - Removed
pmg_who_group_get - Removed
pmg_who_group_objects - Removed
pmg_who_group_update - Removed
pmg_who_groups_list - Removed
pmg_who_object_add - Removed
pmg_who_object_delete - Removed
pmg_who_object_update - Added
proximo_call - Added
proximo_find_tools - Added
proximo_recall - Added
proximo_tool_schema - Removed
pve_acl_list - Removed
pve_acl_modify - Removed
pve_acl_prune - Removed
pve_acme_account_create - Removed
pve_acme_account_delete - Removed
pve_acme_account_update - Removed
pve_acme_cert_order - Removed
pve_acme_cert_renew - Removed
pve_acme_cert_revoke - Removed
pve_acme_plugin_create - Removed
pve_acme_plugin_delete - Removed
pve_acme_plugin_update - Removed
pve_agent_exec - Removed
pve_agent_file_read - Removed
pve_agent_file_write - Removed
pve_agent_fs - Removed
pve_agent_info - Removed
pve_agent_set_password - Removed
pve_apt_changelog - Removed
pve_apt_repositories_get - Removed
pve_apt_repository_add - Removed
pve_apt_repository_set - Removed
pve_apt_update_refresh - Removed
pve_apt_updates_list - Removed
pve_apt_versions - Removed
pve_backup - Removed
pve_backup_delete - Removed
pve_backup_freshness - Removed
pve_backup_job_create - Removed
pve_backup_job_delete - Removed
pve_backup_job_list - Removed
pve_backup_job_update - Removed
pve_backup_list - Removed
pve_ceph_cfg_db - Removed
pve_ceph_cfg_raw - Removed
pve_ceph_cfg_value - Removed
pve_ceph_cmd_safety - Removed
pve_ceph_crush - Removed
pve_ceph_flag_get - Removed
pve_ceph_flag_set - Removed
pve_ceph_flags_list - Removed
pve_ceph_flags_set - Removed
pve_ceph_fs_create - Removed
pve_ceph_fs_destroy - Removed
pve_ceph_fs_list - Removed
pve_ceph_init - Removed
pve_ceph_log - Removed
pve_ceph_mds_create - Removed
pve_ceph_mds_destroy - Removed
pve_ceph_mds_list - Removed
pve_ceph_metadata - Removed
pve_ceph_mgr_create - Removed
pve_ceph_mgr_destroy - Removed
pve_ceph_mgr_list - Removed
pve_ceph_mon_create - Removed
pve_ceph_mon_destroy - Removed
pve_ceph_mon_list - Removed
pve_ceph_osd_create - Removed
pve_ceph_osd_destroy - Removed
pve_ceph_osd_in - Removed
pve_ceph_osd_lv_info - Removed
pve_ceph_osd_metadata - Removed
pve_ceph_osd_out - Removed
pve_ceph_osd_scrub - Removed
pve_ceph_osd_tree - Removed
pve_ceph_pool_create - Removed
pve_ceph_pool_destroy - Removed
pve_ceph_pool_list - Removed
pve_ceph_pool_set - Removed
pve_ceph_pool_status - Removed
pve_ceph_rules - Removed
pve_ceph_service_restart - Removed
pve_ceph_service_start - Removed
pve_ceph_service_stop - Removed
pve_ceph_status - Removed
pve_clone - Removed
pve_cloudinit_get - Removed
pve_cloudinit_set - Removed
pve_cluster_resources - Removed
pve_cluster_status - Removed
pve_create_container - Removed
pve_create_vm - Removed
pve_delete_guest - Removed
pve_diagnose - Removed
pve_disk_move - Removed
pve_disk_resize - Removed
pve_doctor - Removed
pve_firewall_alias_create - Removed
pve_firewall_alias_delete - Removed
pve_firewall_alias_list - Removed
pve_firewall_alias_update - Removed
pve_firewall_ipset_create - Removed
pve_firewall_ipset_delete - Removed
pve_firewall_ipset_entry_add - Removed
pve_firewall_ipset_entry_remove - Removed
pve_firewall_options_get - Removed
pve_firewall_options_set - Removed
pve_firewall_rule_add - Removed
pve_firewall_rule_remove - Removed
pve_firewall_rule_update - Removed
pve_firewall_rules_list - Removed
pve_firewall_security_group_create - Removed
pve_firewall_security_group_delete - Removed
pve_firewall_set_enabled - Removed
pve_group_create - Removed
pve_group_delete - Removed
pve_group_get - Removed
pve_group_update - Removed
pve_groups_list - Removed
pve_guest_config_get - Removed
pve_guest_config_revert - Removed
pve_guest_config_set - Removed
pve_guest_migrate - Removed
pve_guest_power - Removed
pve_guest_status - Removed
pve_ha_groups_list - Removed
pve_ha_resource_add - Removed
pve_ha_resource_remove - Removed
pve_ha_resources_list - Removed
pve_ha_rule_create - Removed
pve_ha_rule_delete - Removed
pve_ha_rule_update - Removed
pve_ha_rules_list - Removed
pve_hardware_list - Removed
pve_ipset_list - Removed
pve_list_guests - Removed
pve_mapping_pci_create - Removed
pve_mapping_pci_delete - Removed
pve_mapping_pci_list - Removed
pve_mapping_pci_update - Removed
pve_mapping_usb_create - Removed
pve_mapping_usb_delete - Removed
pve_mapping_usb_list - Removed
pve_mapping_usb_update - Removed
pve_metrics_server_delete - Removed
pve_metrics_server_list - Removed
pve_metrics_server_set - Removed
pve_network_apply - Removed
pve_network_iface_create - Removed
pve_network_iface_update - Removed
pve_network_list - Removed
pve_node_acme_domains_set - Removed
pve_node_cert_delete - Removed
pve_node_cert_upload - Removed
pve_node_certificates - Removed
pve_node_disk_initgpt - Removed
pve_node_disk_smart - Removed
pve_node_disk_wipe - Removed
pve_node_disks_list - Removed
pve_node_dns - Removed
pve_node_dns_set - Removed
pve_node_hosts_get - Removed
pve_node_hosts_set - Removed
pve_node_journal - Removed
pve_node_migrateall - Removed
pve_node_rrddata - Removed
pve_node_service_control - Removed
pve_node_service_status - Removed
pve_node_services_list - Removed
pve_node_startall - Removed
pve_node_status - Removed
pve_node_stopall - Removed
pve_node_storage_backend_create - Removed
pve_node_storage_backend_delete - Removed
pve_node_storage_backend_list - Removed
pve_node_subscription - Removed
pve_node_syslog - Removed
pve_node_time_get - Removed
pve_node_time_set - Removed
pve_notification_endpoint_create - Removed
pve_notification_endpoint_delete - Removed
pve_notification_endpoint_list - Removed
pve_notification_endpoint_update - Removed
pve_notification_matcher_delete - Removed
pve_notification_matcher_set - Removed
pve_notification_test - Removed
pve_overbroad_grants - Removed
pve_pool_create - Removed
pve_pool_delete - Removed
pve_pool_get - Removed
pve_pool_update - Removed
pve_pools_list - Removed
pve_realm_create - Removed
pve_realm_delete - Removed
pve_realm_get - Removed
pve_realm_update - Removed
pve_realms_list - Removed
pve_replication_create - Removed
pve_replication_delete - Removed
pve_replication_update - Removed
pve_restore - Removed
pve_role_create - Removed
pve_role_delete - Removed
pve_role_update - Removed
pve_roles_list - Removed
pve_rollback - Removed
pve_sdn_apply - Removed
pve_sdn_controller_create - Removed
pve_sdn_controller_delete - Removed
pve_sdn_controller_get - Removed
pve_sdn_controller_update - Removed
pve_sdn_controllers_list - Removed
pve_sdn_dns_create - Removed
pve_sdn_dns_delete - Removed
pve_sdn_dns_get - Removed
pve_sdn_dns_list - Removed
pve_sdn_dns_update - Removed
pve_sdn_dry_run - Removed
pve_sdn_fabric_create - Removed
pve_sdn_fabric_delete - Removed
pve_sdn_fabric_get - Removed
pve_sdn_fabric_node_create - Removed
pve_sdn_fabric_node_delete - Removed
pve_sdn_fabric_node_get - Removed
pve_sdn_fabric_node_update - Removed
pve_sdn_fabric_nodes_list - Removed
pve_sdn_fabric_nodes_list_all - Removed
pve_sdn_fabric_status_interfaces - Removed
pve_sdn_fabric_status_neighbors - Removed
pve_sdn_fabric_status_routes - Removed
pve_sdn_fabric_update - Removed
pve_sdn_fabrics_all - Removed
pve_sdn_fabrics_list - Removed
pve_sdn_ipam_create - Removed
pve_sdn_ipam_delete - Removed
pve_sdn_ipam_get - Removed
pve_sdn_ipam_status - Removed
pve_sdn_ipam_update - Removed
pve_sdn_ipams_list - Removed
pve_sdn_lock_acquire - Removed
pve_sdn_lock_release - Removed
pve_sdn_prefix_list_create - Removed
pve_sdn_prefix_list_delete - Removed
pve_sdn_prefix_list_entries_list - Removed
pve_sdn_prefix_list_entry_create - Removed
pve_sdn_prefix_list_entry_delete - Removed
pve_sdn_prefix_list_entry_get - Removed
pve_sdn_prefix_list_entry_update - Removed
pve_sdn_prefix_list_get - Removed
pve_sdn_prefix_list_update - Removed
pve_sdn_prefix_lists_list - Removed
pve_sdn_rollback - Removed
pve_sdn_route_map_entries_list - Removed
pve_sdn_route_map_entries_list_all - Removed
pve_sdn_route_map_entry_create - Removed
pve_sdn_route_map_entry_delete - Removed
pve_sdn_route_map_entry_get - Removed
pve_sdn_route_map_entry_update - Removed
pve_sdn_route_maps_list - Removed
pve_sdn_subnet_create - Removed
pve_sdn_subnet_delete - Removed
pve_sdn_subnet_get - Removed
pve_sdn_subnet_list - Removed
pve_sdn_subnet_update - Removed
pve_sdn_vnet_create - Removed
pve_sdn_vnet_delete - Removed
pve_sdn_vnet_firewall_options_get - Removed
pve_sdn_vnet_firewall_options_set - Removed
pve_sdn_vnet_firewall_rule_add - Removed
pve_sdn_vnet_firewall_rule_get - Removed
pve_sdn_vnet_firewall_rule_remove - Removed
pve_sdn_vnet_firewall_rule_update - Removed
pve_sdn_vnet_firewall_rules_list - Removed
pve_sdn_vnet_get - Removed
pve_sdn_vnet_ip_create - Removed
pve_sdn_vnet_ip_delete - Removed
pve_sdn_vnet_ip_update - Removed
pve_sdn_vnet_mac_vrf - Removed
pve_sdn_vnet_update - Removed
pve_sdn_vnets_list - Removed
pve_sdn_zone_bridges - Removed
pve_sdn_zone_content - Removed
pve_sdn_zone_create - Removed
pve_sdn_zone_delete - Removed
pve_sdn_zone_get - Removed
pve_sdn_zone_ip_vrf - Removed
pve_sdn_zone_status_list - Removed
pve_sdn_zone_update - Removed
pve_sdn_zones_list - Removed
pve_security_groups_list - Removed
pve_snapshot_create - Removed
pve_snapshot_delete - Removed
pve_snapshot_list - Removed
pve_storage_config_get - Removed
pve_storage_config_list - Removed
pve_storage_content - Removed
pve_storage_content_delete - Removed
pve_storage_create - Removed
pve_storage_delete - Removed
pve_storage_download - Removed
pve_storage_status - Removed
pve_storage_update - Removed
pve_task_log - Removed
pve_task_status - Removed
pve_task_stop - Removed
pve_task_wait - Removed
pve_tasks_list - Removed
pve_template_convert - Removed
pve_tfa_delete - Removed
pve_tfa_get - Removed
pve_tfa_list - Removed
pve_token_create - Removed
pve_token_revoke - Removed
pve_tokens_list - Removed
pve_user_create - Removed
pve_user_delete - Removed
pve_user_get - Removed
pve_user_update - Removed
pve_users_list
113 tool updates
v0.24.0- Added
pve_ceph_cfg_db - Added
pve_ceph_cfg_raw - Added
pve_ceph_cfg_value - Added
pve_ceph_cmd_safety - Added
pve_ceph_crush - Added
pve_ceph_flag_get - Added
pve_ceph_flag_set - Added
pve_ceph_flags_list - Added
pve_ceph_flags_set - Added
pve_ceph_fs_create - Added
pve_ceph_fs_destroy - Added
pve_ceph_fs_list - Added
pve_ceph_init - Added
pve_ceph_log - Added
pve_ceph_mds_create - Added
pve_ceph_mds_destroy - Added
pve_ceph_mds_list - Added
pve_ceph_metadata - Added
pve_ceph_mgr_create - Added
pve_ceph_mgr_destroy - Added
pve_ceph_mgr_list - Added
pve_ceph_mon_create - Added
pve_ceph_mon_destroy - Added
pve_ceph_mon_list - Added
pve_ceph_osd_create - Added
pve_ceph_osd_destroy - Added
pve_ceph_osd_in - Added
pve_ceph_osd_lv_info - Added
pve_ceph_osd_metadata - Added
pve_ceph_osd_out - Added
pve_ceph_osd_scrub - Added
pve_ceph_osd_tree - Added
pve_ceph_pool_create - Added
pve_ceph_pool_destroy - Added
pve_ceph_pool_list - Added
pve_ceph_pool_set - Added
pve_ceph_pool_status - Added
pve_ceph_rules - Added
pve_ceph_service_restart - Added
pve_ceph_service_start - Added
pve_ceph_service_stop - Added
pve_ceph_status - Changed
pve_sdn_apply2 fields changed- added
Input schema / properties / lock_tokenAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "SDN cluster lock token to use for this write, if one is held (from pve_sdn_lock_acquire).", + "title": "Lock Token" +} - added
Input schema / properties / release_lockAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Whether PVE releases the lock automatically after a successful commit (only relevant when lock_token is given; PVE's own default is True — omit to use it).", + "title": "Release Lock" +}
- Added
pve_sdn_controller_create - Added
pve_sdn_controller_delete - Added
pve_sdn_controller_get - Added
pve_sdn_controller_update - Added
pve_sdn_controllers_list - Added
pve_sdn_dns_create - Added
pve_sdn_dns_delete - Added
pve_sdn_dns_get - Added
pve_sdn_dns_list - Added
pve_sdn_dns_update - Added
pve_sdn_dry_run - Added
pve_sdn_fabric_create - Added
pve_sdn_fabric_delete - Added
pve_sdn_fabric_get - Added
pve_sdn_fabric_node_create - Added
pve_sdn_fabric_node_delete - Added
pve_sdn_fabric_node_get - Added
pve_sdn_fabric_node_update - Added
pve_sdn_fabric_nodes_list - Added
pve_sdn_fabric_nodes_list_all - Added
pve_sdn_fabric_status_interfaces - Added
pve_sdn_fabric_status_neighbors - Added
pve_sdn_fabric_status_routes - Added
pve_sdn_fabric_update - Added
pve_sdn_fabrics_all - Added
pve_sdn_fabrics_list - Added
pve_sdn_ipam_create - Added
pve_sdn_ipam_delete - Added
pve_sdn_ipam_get - Added
pve_sdn_ipam_status - Added
pve_sdn_ipam_update - Added
pve_sdn_ipams_list - Added
pve_sdn_lock_acquire - Added
pve_sdn_lock_release - Added
pve_sdn_prefix_list_create - Added
pve_sdn_prefix_list_delete - Added
pve_sdn_prefix_list_entries_list - Added
pve_sdn_prefix_list_entry_create - Added
pve_sdn_prefix_list_entry_delete - Added
pve_sdn_prefix_list_entry_get - Added
pve_sdn_prefix_list_entry_update - Added
pve_sdn_prefix_list_get - Added
pve_sdn_prefix_list_update - Added
pve_sdn_prefix_lists_list - Added
pve_sdn_rollback - Added
pve_sdn_route_map_entries_list - Added
pve_sdn_route_map_entries_list_all - Added
pve_sdn_route_map_entry_create - Added
pve_sdn_route_map_entry_delete - Added
pve_sdn_route_map_entry_get - Added
pve_sdn_route_map_entry_update - Added
pve_sdn_route_maps_list - Added
pve_sdn_subnet_get - Added
pve_sdn_vnet_firewall_options_get - Added
pve_sdn_vnet_firewall_options_set - Added
pve_sdn_vnet_firewall_rule_add - Added
pve_sdn_vnet_firewall_rule_get - Added
pve_sdn_vnet_firewall_rule_remove - Added
pve_sdn_vnet_firewall_rule_update - Added
pve_sdn_vnet_firewall_rules_list - Added
pve_sdn_vnet_get - Added
pve_sdn_vnet_ip_create - Added
pve_sdn_vnet_ip_delete - Added
pve_sdn_vnet_ip_update - Added
pve_sdn_vnet_mac_vrf - Added
pve_sdn_zone_bridges - Added
pve_sdn_zone_content - Added
pve_sdn_zone_get - Added
pve_sdn_zone_ip_vrf - Added
pve_sdn_zone_status_list
110 tool updates
v0.23.0- Added
pbs_admin_gc_jobs_list - Added
pbs_admin_prune_jobs_list - Added
pbs_admin_sync_jobs_list - Added
pbs_admin_traffic_control_status - Added
pbs_admin_verify_jobs_list - Added
pbs_datastore_active_operations - Added
pbs_datastore_mount - Added
pbs_datastore_prune - Added
pbs_datastore_rrd - Added
pbs_datastore_s3_refresh - Added
pbs_datastore_unmount - Added
pbs_datastores_usage - Added
pbs_encryption_key_create - Added
pbs_encryption_key_delete - Added
pbs_encryption_key_list - Added
pbs_encryption_key_toggle_archive - Added
pbs_group_delete - Added
pbs_group_move - Added
pbs_group_notes_get - Added
pbs_group_notes_set - Added
pbs_groups_list - Added
pbs_metrics_influxdb_http_create - Added
pbs_metrics_influxdb_http_delete - Added
pbs_metrics_influxdb_http_get - Added
pbs_metrics_influxdb_http_list - Added
pbs_metrics_influxdb_http_update - Added
pbs_metrics_influxdb_udp_create - Added
pbs_metrics_influxdb_udp_delete - Added
pbs_metrics_influxdb_udp_get - Added
pbs_metrics_influxdb_udp_list - Added
pbs_metrics_influxdb_udp_update - Added
pbs_metrics_servers_list - Added
pbs_metrics_status - Added
pbs_namespace_move - Added
pbs_node_config_get - Added
pbs_node_config_set - Added
pbs_node_identity - Added
pbs_node_report - Added
pbs_node_rrd - Added
pbs_pull - Added
pbs_push - Added
pbs_remote_scan - Added
pbs_remote_scan_groups - Added
pbs_remote_scan_namespaces - Added
pbs_s3_check - Added
pbs_s3_client_create - Added
pbs_s3_client_delete - Added
pbs_s3_client_get - Added
pbs_s3_client_list - Added
pbs_s3_client_update - Added
pbs_s3_list_buckets - Added
pbs_s3_reset_counters - Added
pbs_snapshot_protected_get - Added
pbs_tape_backup - Added
pbs_tape_backup_job_create - Added
pbs_tape_backup_job_delete - Added
pbs_tape_backup_job_get - Added
pbs_tape_backup_job_list - Added
pbs_tape_backup_job_run - Added
pbs_tape_backup_job_update - Added
pbs_tape_changer_create - Added
pbs_tape_changer_delete - Added
pbs_tape_changer_get - Added
pbs_tape_changer_list - Added
pbs_tape_changer_status - Added
pbs_tape_changer_transfer - Added
pbs_tape_changer_update - Added
pbs_tape_drive_barcode_label_media - Added
pbs_tape_drive_cartridge_memory - Added
pbs_tape_drive_catalog - Added
pbs_tape_drive_clean - Added
pbs_tape_drive_create - Added
pbs_tape_drive_delete - Added
pbs_tape_drive_eject - Added
pbs_tape_drive_format - Added
pbs_tape_drive_get - Added
pbs_tape_drive_inventory - Added
pbs_tape_drive_inventory_update - Added
pbs_tape_drive_label_media - Added
pbs_tape_drive_list - Added
pbs_tape_drive_load_media - Added
pbs_tape_drive_load_slot - Added
pbs_tape_drive_read_label - Added
pbs_tape_drive_restore_key - Added
pbs_tape_drive_rewind - Added
pbs_tape_drive_status - Added
pbs_tape_drive_unload - Added
pbs_tape_drive_update - Added
pbs_tape_drive_volume_statistics - Added
pbs_tape_key_create - Added
pbs_tape_key_delete - Added
pbs_tape_key_get - Added
pbs_tape_key_list - Added
pbs_tape_key_update_password - Added
pbs_tape_media_content - Added
pbs_tape_media_destroy - Added
pbs_tape_media_list - Added
pbs_tape_media_move - Added
pbs_tape_media_sets - Added
pbs_tape_media_status_get - Added
pbs_tape_media_status_set - Added
pbs_tape_pool_create - Added
pbs_tape_pool_delete - Added
pbs_tape_pool_get - Added
pbs_tape_pool_list - Added
pbs_tape_pool_update - Added
pbs_tape_restore - Added
pbs_tape_scan_changers - Added
pbs_tape_scan_drives - Added
pbs_version
128 tool updates
v0.22.0- Added
pbs_acl_get - Added
pbs_acl_update - Added
pbs_acme_account_create - Added
pbs_acme_account_delete - Added
pbs_acme_account_get - Added
pbs_acme_account_list - Added
pbs_acme_account_update - Added
pbs_acme_cert_order - Added
pbs_acme_cert_renew - Added
pbs_acme_challenge_schema - Added
pbs_acme_directories - Added
pbs_acme_plugin_create - Added
pbs_acme_plugin_delete - Added
pbs_acme_plugin_get - Added
pbs_acme_plugin_update - Added
pbs_acme_plugins_list - Added
pbs_acme_tos - Added
pbs_apt_changelog - Added
pbs_apt_repositories_get - Added
pbs_apt_repository_add - Added
pbs_apt_repository_set - Added
pbs_apt_update_refresh - Added
pbs_apt_updates_list - Added
pbs_apt_versions - Added
pbs_node_cert_delete - Added
pbs_node_cert_upload - Added
pbs_node_certificates_list - Added
pbs_node_disk_directory_create - Added
pbs_node_disk_directory_delete - Added
pbs_node_disk_directory_list - Added
pbs_node_disk_initgpt - Added
pbs_node_disk_smart - Added
pbs_node_disk_wipe - Added
pbs_node_disk_zfs_create - Added
pbs_node_disk_zfs_get - Added
pbs_node_disk_zfs_list - Added
pbs_node_disks_list - Added
pbs_node_dns_get - Added
pbs_node_dns_set - Added
pbs_node_journal - Added
pbs_node_network_iface_create - Added
pbs_node_network_iface_delete - Added
pbs_node_network_iface_get - Added
pbs_node_network_iface_update - Added
pbs_node_network_list - Added
pbs_node_network_reload - Added
pbs_node_network_revert - Added
pbs_node_service_control - Added
pbs_node_service_status - Added
pbs_node_services_list - Added
pbs_node_status - Added
pbs_node_subscription_check - Added
pbs_node_subscription_delete - Added
pbs_node_subscription_get - Added
pbs_node_subscription_set - Added
pbs_node_syslog - Added
pbs_node_task_log - Added
pbs_node_task_status - Added
pbs_node_task_stop - Added
pbs_node_time_get - Added
pbs_node_time_set - Added
pbs_notification_endpoint_create - Added
pbs_notification_endpoint_delete - Added
pbs_notification_endpoint_get - Added
pbs_notification_endpoint_list - Added
pbs_notification_endpoint_update - Added
pbs_notification_matcher_delete - Added
pbs_notification_matcher_field_values - Added
pbs_notification_matcher_fields - Added
pbs_notification_matcher_get - Added
pbs_notification_matcher_set - Added
pbs_notification_matchers_list - Added
pbs_notification_target_test - Added
pbs_notification_targets_list - Added
pbs_permissions_get - Added
pbs_realm_ad_create - Added
pbs_realm_ad_delete - Added
pbs_realm_ad_get - Added
pbs_realm_ad_list - Added
pbs_realm_ad_update - Added
pbs_realm_ldap_create - Added
pbs_realm_ldap_delete - Added
pbs_realm_ldap_get - Added
pbs_realm_ldap_list - Added
pbs_realm_ldap_update - Added
pbs_realm_openid_create - Added
pbs_realm_openid_delete - Added
pbs_realm_openid_get - Added
pbs_realm_openid_list - Added
pbs_realm_openid_update - Added
pbs_realm_pam_get - Added
pbs_realm_pam_set - Added
pbs_realm_pbs_get - Added
pbs_realm_pbs_set - Added
pbs_roles_list - Added
pbs_tfa_add - Added
pbs_tfa_delete - Added
pbs_tfa_entry_get - Added
pbs_tfa_list - Added
pbs_tfa_unlock - Added
pbs_tfa_update - Added
pbs_tfa_user_get - Added
pbs_tfa_webauthn_get - Added
pbs_tfa_webauthn_set - Added
pbs_token_create - Added
pbs_token_delete - Added
pbs_token_update - Added
pbs_user_create - Added
pbs_user_delete - Added
pbs_user_get - Added
pbs_user_token_get - Added
pbs_user_tokens_list - Added
pbs_user_update - Added
pbs_users_list - Added
pmg_apt_changelog - Added
pmg_apt_repositories_get - Added
pmg_apt_repository_add - Added
pmg_apt_repository_set - Added
pmg_apt_update_refresh - Added
pmg_apt_updates_list - Added
pmg_apt_versions - Added
pve_apt_changelog - Added
pve_apt_repositories_get - Added
pve_apt_repository_add - Added
pve_apt_repository_set - Added
pve_apt_update_refresh - Added
pve_apt_updates_list - Added
pve_apt_versions
TDQS
Scored across 6 tools
Each tool has a distinct core role: discovery (find), pre-flight (plan), GET (read), mutation (call), and audit ledger/verification. Some overlap exists between proximo_plan and proximo_call without confirm=true, and between proximo_find and proximo_read's word-based lookup, but descriptions clarify the boundaries.
The four core tools follow a clear proximo_<verb> pattern (find, plan, read, call). The audit tools use a different prefix and mix noun/verb forms (audit_entries vs audit_verify), which is a minor deviation but still readable and logically grouped.
Six tools is well-scoped for a governed API proxy: discovery, planning, reading, mutating, and audit ledger/verification. Each tool earns its place without redundancy.
The surface covers the full lifecycle—find, plan, read, mutate, and audit—with no obvious dead ends. Minor gaps exist (e.g., no dedicated tool to list global consent/arming status), but agents can work around them via proximo_plan or audit_entries.
Maintenance
Related MCP Connectors
Manage remote servers, SSH terminals, files, databases and proxies with scoped access and approvals.
Scoped, audited SSH exec, sessions, and SFTP on your saved servers without exposing credentials
Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.
Securely control computers you explicitly pair through files, terminals, processes, screenshots, desktop UI/input, clipboard, browser automation, diagnostics, and document tools.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceA Python-based server enabling interaction with Proxmox hypervisors. It supports secure authentication and provides tools for managing nodes, VMs, clusters, and storage.297MIT
- AlicenseNot gradedqualityAmaintenanceAn enhanced Python-based MCP server that enables complete VM lifecycle management and monitoring of Proxmox virtualization platforms through natural language, with 11 REST API endpoints for seamless integration.2,863 PyPI635MIT
- AlicenseNot gradedqualityDmaintenanceEnables comprehensive management of Proxmox Virtual Environment through 35 tools for VMs, containers, storage, backups, snapshots, and cluster operations via the Proxmox VE API.14 npm22MIT
- AlicenseNot gradedqualityCmaintenanceEnables comprehensive management of Proxmox virtualization environments, including VM and container lifecycle, snapshots, backups, monitoring, and OpenAPI integration.12MIT