Proximo
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PROXIMO_AUDIT_KEYED | No | Defaults to on; set to 'off' to disable HMAC-SHA256 keying of the audit ledger. | 1 |
| PROXIMO_ENABLE_EXEC | No | Opt-in: enables near-root LXC exec via SSH. Off by default. | 0 |
| PROXIMO_CT_ALLOWLIST | No | Comma-separated list of CTIDs allowed for exec (fail-closed). | |
| PROXIMO_ENABLE_AGENT | No | Opt-in: enables qemu-guest-agent operations inside VMs. Off by default. | 0 |
| PROXIMO_LEDGER_REDACT | No | If set to '1', record fingerprint instead of SQL body/command argv in ledger (privacy). | 0 |
| PROXIMO_A2A_TOKEN_FILE | No | Path to a file containing the bearer token for A2A server (non-localhost bind requires this). | |
| PROXIMO_AGENT_ALLOWLIST | No | Comma-separated list of VMIDs allowed for agent operations (fail-closed). | |
| PROXIMO_AUDIT_EXPECTED_HEAD | No | Expected head hash for audit verification (off-box anchor against tail truncation/forgery). |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ct_execA | Run a command inside an LXC (ssh -> pct exec). MUTATION-CAPABLE. Dry-run by default: without confirm=True you get a PLAN — the command plus a heuristic read-vs-write / destructive-pattern classification (advisory only) — recorded to the ledger. Re-call with confirm=True to execute. Disabled unless PROXIMO_ENABLE_EXEC is set (safe default is API-only). Allowlist-scoped (fail-closed) and audited. snapshot=True (UNDO): take an auto-undo snapshot first and WAIT for it; if it can't be made
(e.g. storage doesn't support snapshots) the command is NOT run (fail-closed). On success the
result carries an |
| ct_psqlA | Run SQL via psql inside a container (as the db OS user). MUTATION-CAPABLE. Dry-run by default: without confirm=True you get a PLAN — the SQL plus a heuristic read/DML/DDL classification (advisory only) — recorded to the ledger. Re-call with confirm=True to execute. snapshot=True (UNDO): take an auto-undo snapshot first and WAIT for it; if it can't be made the
SQL is NOT run (fail-closed). On success the result carries an |
| audit_verifyA | Verify the tamper-evident audit ledger's hash chain — PROVE the log is intact. Pass |
| pve_agent_execA | MUTATION: run a command inside a guest via the qemu-agent (async, polls for result). Dry-run by default: without confirm=True you get a PLAN recorded to the ledger. Re-call with confirm=True to execute. Requires PROXIMO_ENABLE_AGENT=1 and the VMID in PROXIMO_AGENT_ALLOWLIST. The command runs INSIDE the guest OS — no undo primitive on this plane. Returns status="ok" only when the agent reports the process exited. Returns status="running" with pid when the poll deadline is reached before exit. |
| pbs_datastores_listA | List all PBS datastores (read-only). Returns datastore objects with store name, backend type, and mount status. Use pbs_datastore_status for runtime usage statistics or pbs_datastore_get for full configuration. Needs PROXIMO_PBS_* config. |
| pbs_datastore_statusA | Get runtime usage statistics for one PBS datastore (read-only). Returns total capacity, used bytes, and available bytes. Use pbs_datastores_list to enumerate datastores (with backend type) or pbs_gc_status for garbage-collection state. |
| pbs_gc_statusA | Get garbage-collection status for one PBS datastore (read-only). Returns current GC state, disk/index statistics, and pending/removed chunk counts (the GC schedule field appears only when a schedule is configured on the datastore). Use pbs_gc_start to execute garbage collection or pbs_datastore_status for capacity. |
| pbs_snapshots_listA | READ-ONLY: list backup snapshots in a PBS datastore with optional filters. Returns snapshot metadata including backup type, ID, timestamp, size, owner, and protection status; filter by namespace, backup_type (vm/ct/host), or backup_id. To delete one use pbs_snapshot_delete; to change its protected flag or notes use pbs_snapshot_protected_set or pbs_snapshot_notes_set. |
| pbs_namespaces_listA | List namespaces within a PBS datastore with optional hierarchical filtering (read-only).
Returns each namespace's hierarchical path (the |
| pbs_remotes_listA | READ-ONLY: list all PBS remote sync-sources. Returns a list of remote config dicts; passwords are never included (PBS never returns them, and this strips defensively too). Use pbs_remote_get for one remote's config. Needs PROXIMO_PBS_* config. |
| pbs_remote_getA | READ-ONLY: get the config of one PBS remote sync-source by name. Returns a dict; no password returned. Use pbs_remotes_list to list all remotes, or pbs_remote_update to change this one. Needs PROXIMO_PBS_* config. |
| pbs_traffic_controls_listA | READ-ONLY: list all PBS traffic-control bandwidth-limit rules. Returns active rules with their rate-in/rate-out limits, network targets, and comment. Use pbs_traffic_control_upsert to create or modify rules. Needs PROXIMO_PBS_* config. |
| pbs_jobs_listA | READ-ONLY: list all PBS scheduled jobs of the given type. job_type = sync|verify|prune. Returns all jobs with their configs; raises on invalid job_type. Use pbs_job_create, pbs_job_update, or pbs_job_delete to manage one. Needs PROXIMO_PBS_* config. |
| pbs_tasks_listA | READ-ONLY: list PBS tasks on a node. Defaults to 'localhost' (standard single-node PBS name). Returns a list of task dicts; filter running=True for active tasks or errors=True for failed ones. Use this to check on a UPID returned by pbs_gc_start, pbs_verify_start, pbs_datastore_create, or pbs_datastore_delete. Needs PROXIMO_PBS_* config. |
| pbs_datastore_getA | Get full config of one PBS datastore by name (read). Returns path, gc-schedule, etc. For runtime usage stats use pbs_datastore_status instead. Needs PROXIMO_PBS_* config. |
| pbs_gc_startA | MUTATION (HIGH): start garbage collection on a PBS datastore. Dry-run by default — GC permanently removes unreferenced chunks (no undo). confirm=True to execute; returns the UPID (async task) — check progress with pbs_gc_status or pbs_tasks_list. |
| pbs_verify_startA | MUTATION: start an integrity verification run on a PBS datastore. Dry-run by default — non-destructive (read-only check) but heavy I/O. confirm=True to execute; returns the UPID (async task) — check progress with pbs_tasks_list. |
| pbs_pruneA | MUTATION: prune backup snapshots per a retention policy. TWO safety gates: confirm (Proximo dry-run vs execute) AND dry_run (PBS-side preview). dry_run=True (default) only previews; dry_run=False DELETES recovery points (PLAN is HIGH, no undo). confirm=True to execute. Synchronous — returns prune decisions. For one specific snapshot use pbs_snapshot_delete instead. |
| pbs_snapshot_deleteA | MUTATION (HIGH): delete a specific backup snapshot (a recovery point) from a PBS datastore. Dry-run by default. Permanent — no undo. confirm=True to execute. Synchronous. To shield a snapshot instead of deleting it use pbs_snapshot_protected_set(protected=True); for bulk retention-based deletion use pbs_prune. |
| pbs_namespace_createA | MUTATION: create a namespace within a PBS datastore. Dry-run by default (additive, LOW). confirm=True to execute — returns {"status": "ok", "result": null}. Use pbs_namespaces_list to check for name collisions first, or pbs_namespace_delete to remove one. |
| pbs_namespace_deleteA | MUTATION: delete a namespace from a PBS datastore. Dry-run by default — delete_groups=True is HIGH (it deletes all backup groups/snapshots inside the namespace, no undo). confirm=True to execute — returns {"status": "ok", "result": null}. Use pbs_namespaces_list to confirm it's empty first, or pbs_namespace_create to recreate an empty namespace afterward. |
| pbs_datastore_createA | MUTATION (MEDIUM): create a new PBS datastore at the given path. Dry-run by default — additive, but a misconfigured path can conflict with existing storage. PBS datastore creation is an async worker task (UPID) → outcome='submitted' (not 'ok'). No rollback primitive. confirm=True to execute. Use pbs_datastores_list to check for name/path collisions first, or pbs_datastore_update to modify it afterward. POST /config/datastore Smoke-confirm: gc-schedule / prune-schedule / notification-mode param names; sync-vs-async. |
| pbs_datastore_updateA | MUTATION (MEDIUM): update PBS datastore configuration. Dry-run by default. CAPTURE: reads current config before planning; on read failure the plan is marked incomplete. Changing gc-schedule / prune-schedule affects data retention cluster-wide. No rollback primitive — revert by re-applying the captured config. confirm=True to execute. Use pbs_datastore_get to inspect current config, or pbs_datastore_delete to remove the datastore instead. PUT /config/datastore/{name} Smoke-confirm: accepted param names (hyphenated vs underscored). |
| pbs_datastore_deleteA | MUTATION: delete a PBS datastore. Dry-run by default. RISK IS CONDITIONAL: destroy_data=False (default) → MEDIUM: detaches the datastore config; backup CHUNKS REMAIN ON DISK and the datastore is re-addable to recover. destroy_data=True → HIGH, IRREVERSIBLE: PERMANENTLY DESTROYS ALL backup data in the named datastore — no recovery possible. PBS deletion is an async worker task (UPID) → outcome='submitted'. confirm=True to execute. To recover from a destroy_data=False detach, re-add with pbs_datastore_create at the same path. DELETE /config/datastore/{name} Smoke-confirm: destroy-data / keep-job-configs param names; sync-vs-async. |
| pbs_snapshot_protected_setA | MUTATION: set or clear the protected flag on a PBS snapshot. RISK IS CONDITIONAL: protected=True → LOW: shields the snapshot from pruning and GC (protective). protected=False → HIGH: SILENTLY re-enables pruning/GC — this recovery point can now be auto-deleted by the next prune job or GC run. No undo once auto-deleted. No PBS snapshot primitive for rollback. Dry-run by default. confirm=True to execute. To annotate rather than protect a snapshot use pbs_snapshot_notes_set; to delete it outright use pbs_snapshot_delete. PUT /admin/datastore/{store}/protected Smoke-confirm: exact path + param names (backup-type, backup-id, backup-time, protected). |
| pbs_snapshot_notes_setA | MUTATION (LOW): annotate a PBS snapshot with notes. Dry-run by default. CAPTURE: reads current notes before planning; on failure the plan is marked incomplete. Does not affect backup data, retention, or protection — to shield the snapshot from pruning/GC use pbs_snapshot_protected_set instead. No PBS snapshot primitive — revert by re-applying the captured notes. confirm=True to execute. PUT /admin/datastore/{store}/notes Smoke-confirm: exact endpoint path + param names (backup-type, backup-id, backup-time). |
| pbs_group_change_ownerA | MUTATION (MEDIUM): reassign the owner of a PBS backup group. Dry-run by default. The new owner controls deletion and prune of this backup group. The previous owner loses those permissions immediately. Use pbs_snapshots_list to see the group's current owner first. No PBS snapshot primitive — revert by re-assigning the owner back. confirm=True to execute. POST /admin/datastore/{store}/change-owner Smoke-confirm: exact path + new-owner vs owner param name. |
| pbs_remote_createA | MUTATION (MEDIUM): create a PBS remote sync-source. Dry-run by default. PRIVATE PASSWORD REDACTION: 'password' is a remote user credential. It is UNCONDITIONALLY redacted from the server-side plan, change, current state, detail, and audit ledger. Only {"password":"[redacted]"} is recorded on those surfaces. L02 NOTE: the MCP tool-call itself is a structured JSON object in which 'password' appears as a plain parameter — it is visible in the LLM's output token stream and in any MCP client log. This is an MCP-protocol property; server-side redaction protects the ledger only. The TLS cert 'fingerprint' is PUBLIC data — it is NOT redacted. No rollback primitive — revert by deleting the remote (pbs_remote_delete). confirm=True to execute. POST /config/remote Smoke-confirm: auth-id vs authid param name; port param name. |
| pbs_remote_updateA | MUTATION (MEDIUM): update an existing PBS remote. Dry-run by default. CAPTURE: reads current (non-secret) config before planning; on failure plan is marked incomplete. PRIVATE PASSWORD REDACTION: if 'password' is provided it is UNCONDITIONALLY redacted from the server-side plan, change, current state, detail, and audit ledger. L02 NOTE: the MCP tool-call itself is a structured JSON object in which 'password' appears as a plain parameter — visible in the LLM's output token stream and any MCP client log. This is an MCP-protocol property; server-side redaction protects the ledger only. The TLS cert 'fingerprint' is PUBLIC and appears in plans/logs for audit. No rollback primitive — revert by re-applying captured config. confirm=True to execute. Use pbs_remote_get to inspect current config first. PUT /config/remote/{name} Smoke-confirm: auth-id param name; whether partial PUT is accepted. |
| pbs_remote_deleteA | MUTATION (MEDIUM): remove a PBS remote and its stored credentials. Dry-run by default. After deletion: any sync jobs referencing this remote break; re-add needs the password re-supplied. No rollback primitive — re-create with pbs_remote_create to recover. confirm=True to execute. DELETE /config/remote/{name} Smoke-confirm: response shape on success. |
| pbs_traffic_control_upsertA | MUTATION: create or update a PBS traffic-control (bandwidth-limit) rule. Dry-run by default. Detects create-vs-update by reading the existing rule config (CAPTURE on update path): create → LOW: additive, no existing rule changed. update → MEDIUM: changing rate limits can throttle backups or saturate the network. A too-low rate-in or rate-out throttles PBS backups to a crawl. No rollback primitive. confirm=True to execute. Use pbs_traffic_controls_list to see existing rules first, or pbs_traffic_control_delete to remove one. POST (create) or PUT (update) /config/traffic-control[/{name}] Smoke-confirm: create-vs-update dispatch; rate-in/rate-out/burst-in/burst-out/timeframe param names. |
| pbs_traffic_control_deleteA | MUTATION (MEDIUM): remove a PBS traffic-control (bandwidth-limit) rule. Dry-run by default. After deletion: backups run unthrottled on the matched network. Recoverable by re-creating the rule with pbs_traffic_control_upsert. confirm=True to execute. DELETE /config/traffic-control/{name} Smoke-confirm: response shape on success. |
| pbs_apt_updates_listA | READ-ONLY: list available package updates (cached apt index) on a PBS node. GET /nodes/{node}/apt/update. Smoke-confirm: shape not live-verified — expected per-package dicts (Package/Title/Description/Origin/Version/OldVersion/Priority/Section/Arch). Proxmox's API deliberately does not expose upgrade execution; the upgrade itself happens at your console. This tool governs visibility only. To refresh this list first use pbs_apt_update_refresh. Needs PROXIMO_PBS_* config. |
| pbs_apt_changelogA | READ-ONLY: get a package's changelog text on a PBS node. GET /nodes/{node}/apt/changelog?name=…[&version=…]. Smoke-confirm: shape not live-verified. The returned text is UPSTREAM/package-maintainer-authored (not Proxmox-authored) — classified ADVERSARIAL content (taint.ADVERSARIAL_TOOLS), like pve_apt_changelog and pmg_apt_changelog. Proxmox's API deliberately does not expose upgrade execution; the upgrade itself happens at your console. This tool governs visibility only. Needs PROXIMO_PBS_* config. |
| pbs_apt_repositories_getA | READ-ONLY: get the current APT repository configuration of a PBS node. GET /nodes/{node}/apt/repositories. Smoke-confirm: shape not live-verified — expected
{files, errors, digest, infos, standard-repos}. |
| pbs_apt_versionsA | READ-ONLY: get installed versions of important Proxmox Backup Server packages on a PBS node. GET /nodes/{node}/apt/versions. Smoke-confirm: shape not live-verified — expected per-package dicts (Package/Version/OldVersion + Arch/...). Proxmox's API deliberately does not expose upgrade execution; the upgrade itself happens at your console. This tool governs visibility only. Needs PROXIMO_PBS_* config. |
| pbs_apt_update_refreshA | MUTATION: resynchronize the APT package index on a PBS node (apt-get update). RISK_LOW: no package state change — refreshes the local index cache only. Proxmox's API deliberately does not expose upgrade execution; the upgrade itself happens at your console. This tool governs visibility only — it does NOT install or upgrade any package. Idempotent — safe to re-run any time. Dry-run by default (returns a PLAN); confirm=True executes (POST, Smoke-confirm) and returns {"status": "submitted"|"ok", "result": <task UPID | None>}. Needs PROXIMO_PBS_* config. |
| pbs_apt_repository_setA | MUTATION: enable/disable one APT repository entry on a PBS node, by file path + index. RISK_MEDIUM: changes where packages come from — affects the NEXT upgrade's package provenance. CAPTURE: reads current repository state before planning (also readable directly via pbs_apt_repositories_get); if unreadable -> complete=False. Proxmox's API deliberately does not expose upgrade execution; the upgrade itself happens at your console. This tool governs repo config only. Dry-run by default (returns a PLAN); confirm=True executes (POST, Smoke-confirm) and returns {"status": "ok", "result": None}. Needs PROXIMO_PBS_* config. |
| pbs_apt_repository_addA | MUTATION: add a standard repository to the configuration on a PBS node. RISK_MEDIUM: adds a new package source — affects the NEXT upgrade's package provenance. CAPTURE: reads current repository state before planning (also readable directly via pbs_apt_repositories_get); if unreadable -> complete=False. No automatic revert: removing an added repository requires pbs_apt_repository_set to disable the resulting entry (there is no repository-delete endpoint). Proxmox's API deliberately does not expose upgrade execution; the upgrade itself happens at your console. This tool governs repo config only. Dry-run by default (returns a PLAN); confirm=True executes (PUT, Smoke-confirm) and returns {"status": "ok", "result": None}. Needs PROXIMO_PBS_* config. |
| pbs_users_listA | READ-ONLY: list all PBS users. Returns each user's userid, enabled flag, expiry, email, comment, and firstname/lastname; include_tokens=True also embeds token metadata (never secrets). Use pbs_user_get for one user's full config or pbs_user_tokens_list for a dedicated token listing. Needs PROXIMO_PBS_* config. |
| pbs_user_getA | READ-ONLY: get a PBS user's config. Returns userid, enabled flag, expiry, email, comment, firstname/lastname (no tokens, no secrets). Use pbs_user_tokens_list for the user's API tokens, or pbs_user_create/update/delete to manage the user. Needs PROXIMO_PBS_* config. |
| pbs_user_createA | MUTATION (MEDIUM): create a PBS user. Dry-run by default. PASSWORD REDACTION: confirm=True executes and returns a dict; synchronous, no UPID. Use pbs_user_update to change it afterward, or pbs_user_delete to remove it. Needs PROXIMO_PBS_* config. |
| pbs_user_updateA | MUTATION (MEDIUM): update a PBS user (enable=False stops login immediately). Dry-run by default — the PLAN reads the user's current config first. NOTE: this tool does NOT accept a password parameter — PBS's own PUT /access/users 'password' field is documented as ignored ("use PUT /access/password instead"); exposing a working-looking no-op parameter here would mislead a caller into thinking it changed the password. confirm=True executes and returns a dict; synchronous, no UPID. Use pbs_user_get to see current state first, or pbs_user_delete to remove the user instead. Needs PROXIMO_PBS_* config. |
| pbs_user_deleteA | MUTATION (MEDIUM): delete a PBS user. Dry-run by default — the PLAN reads the user's current config and tokens to show what vanishes with it (permanent, no undo — any tokens owned by this user are removed with it, and ACL entries granted directly to this userid become orphaned). confirm=True executes and returns a dict; synchronous, no UPID. To disable login without deleting, use pbs_user_update (enable=False) instead. Needs PROXIMO_PBS_* config. |
| pbs_user_tokens_listA | READ-ONLY: list API tokens for a PBS user. Returns each token's token-name, tokenid, comment, expiry, and enabled flag — NOT the secret (shown only once, at creation or regeneration). Use pbs_token_create/update/delete to manage tokens. Needs PROXIMO_PBS_* config. |
| pbs_user_token_getA | READ-ONLY: get one PBS API token's metadata. Returns comment, expiry, enabled flag, token-name, and tokenid — NOT the secret. Use pbs_user_tokens_list to enumerate a user's tokens first. Needs PROXIMO_PBS_* config. |
| pbs_token_createA | MUTATION (MEDIUM): create an API token for a PBS user. Dry-run by default. PBS has NO privsep concept (unlike PVE) — the new token has NO privileges until an ACL entry grants it some (pbs_acl_update with auth_id='{userid}!{token_name}'). confirm=True executes and returns a dict whose result carries the token secret (value) ONCE — it is never written to the audit ledger and cannot be retrieved again (only regenerated via pbs_token_update, which invalidates it). Synchronous. Use pbs_user_tokens_list to see a user's existing tokens, or pbs_token_delete to remove one. Needs PROXIMO_PBS_* config. |
| pbs_token_updateA | MUTATION: update a PBS API token's metadata. Dry-run by default. RISK IS CONDITIONAL: regenerate=False is MEDIUM (metadata-only); regenerate=True is HIGH — it issues a brand-new secret and invalidates the OLD one IMMEDIATELY, with no grace period, breaking any integration still using it. When regenerate=True, confirm=True's result carries the NEW secret ONCE (key 'secret') — same never-in-ledger contract as pbs_token_create: the detail dict passed to the audit ledger never contains it. confirm=True executes and returns a dict; synchronous, no UPID. Needs PROXIMO_PBS_* config. |
| pbs_token_deleteA | MUTATION (MEDIUM, IRREVERSIBLE): permanently revoke a PBS API token. Dry-run by default — the PLAN flags that revocation is permanent, the secret is gone forever, and any integration using it loses PBS API access immediately. confirm=True executes and returns a dict; synchronous, no UPID. Use pbs_user_tokens_list to see a user's tokens first, or pbs_token_create to issue a new one instead. Needs PROXIMO_PBS_* config. |
| pbs_acl_getA | READ-ONLY: list PBS ACL entries. Returns each entry's path, roleid, ugid (the user/token/group id), ugid_type ('user' or 'group'), and propagate flag. Use pbs_acl_update to grant/revoke, or pbs_roles_list to see PBS's fixed set of built-in roles. Needs PROXIMO_PBS_* config. |
| pbs_acl_updateA | MUTATION (HIGH): grant or revoke a PBS ACL entry (PUT /access/acl) — this GRANTS or REVOKES AUTHORITY, so it is treated as HIGH risk unconditionally on this plane (PBS's ACL-inheritance/shadow semantics are not schema-documented or live-verified here, unlike PVE's plan_acl_modify which computes a shadow/widen preview — every change here is flagged HIGH rather than risk under-flagging one this module cannot yet analyze). Dry-run by default (reads the current entries at this exact path for context). Exactly one of auth_id (a user or token principal) / group is required — PBS's PUT /access/acl carries a single 'role' (not PVE's comma-separated multi-role list) and folds user+token identity into one 'auth-id' field. delete=False = grant; delete=True = revoke. confirm=True executes and returns a dict; synchronous, no UPID. Use pbs_acl_get to see current entries or pbs_roles_list to see PBS's fixed set of built-in roles. Needs PROXIMO_PBS_* config. |
| pbs_roles_listA | READ-ONLY: list PBS's built-in roles. Returns each role's id, privilege list, and comment. PBS roles are a FIXED enum (Admin, Audit, NoAccess, Datastore*/Remote*/Tape* roles) — unlike PVE, there is no create/update/delete endpoint for PBS roles. Use pbs_acl_update to assign a role to a principal. Needs PROXIMO_PBS_* config. |
| pbs_permissions_getA | READ-ONLY: resolve effective privileges for a PBS user/token. Returns a map of ACL path to a map of privilege name to propagate-bit — the RESOLVED (inherited + direct) view, unlike pbs_acl_get's raw entry list. Use pbs_acl_get to see the raw ACL entries this resolves from. Needs PROXIMO_PBS_* config. |
| pbs_realm_ad_listA | READ-ONLY: list configured AD realms. Use pbs_realm_ad_get for one realm's full config. Needs PROXIMO_PBS_* config. |
| pbs_realm_ad_getA | READ-ONLY: get one AD realm's config. Needs PROXIMO_PBS_* config. |
| pbs_realm_ad_createA | MUTATION (MEDIUM): create an AD authentication realm. Dry-run by default. PASSWORD REDACTION: |
| pbs_realm_ad_updateA | MUTATION (MEDIUM): update an AD realm's config. Dry-run by default — the PLAN reads the
realm's current config first. |
| pbs_realm_ad_deleteA | MUTATION (MEDIUM): permanently delete an AD realm. Dry-run by default — the PLAN reads the realm's current config and flags that any users authenticating via it lose login access. confirm=True executes and returns a dict; synchronous, no UPID. Needs PROXIMO_PBS_* config. |
| pbs_realm_ldap_listA | READ-ONLY: list configured LDAP realms. Use pbs_realm_ldap_get for one realm's full config. Needs PROXIMO_PBS_* config. |
| pbs_realm_ldap_getA | READ-ONLY: get one LDAP realm's config. Needs PROXIMO_PBS_* config. |
| pbs_realm_ldap_createA | MUTATION (MEDIUM): create an LDAP authentication realm. Dry-run by default. PASSWORD REDACTION: |
| pbs_realm_ldap_updateA | MUTATION (MEDIUM): update an LDAP realm's config. Dry-run by default — the PLAN reads the
realm's current config first. |
| pbs_realm_ldap_deleteA | MUTATION (MEDIUM): permanently delete an LDAP realm. Dry-run by default — the PLAN reads the realm's current config and flags that any users authenticating via it lose login access. confirm=True executes and returns a dict; synchronous, no UPID. Needs PROXIMO_PBS_* config. |
| pbs_realm_openid_listA | READ-ONLY: list configured OpenID realms. Use pbs_realm_openid_get for one realm's full config. Needs PROXIMO_PBS_* config. |
| pbs_realm_openid_getA | READ-ONLY: get one OpenID realm's config (never includes client_key). Needs PROXIMO_PBS_* config. |
| pbs_realm_openid_createA | MUTATION (MEDIUM): create an OpenID authentication realm. Dry-run by default. CLIENT-KEY REDACTION: |
| pbs_realm_openid_updateA | MUTATION (MEDIUM): update an OpenID realm's config. Dry-run by default — the PLAN reads
the realm's current config first. NOTE: there is NO username_claim parameter here — the live PBS schema makes it create-only (set it at pbs_realm_openid_create time); PUT is additionalProperties:false, so accepting it here would only hard-fail the whole update server-side. Needs PROXIMO_PBS_* config. |
| pbs_realm_openid_deleteA | MUTATION (MEDIUM): permanently delete an OpenID realm. Dry-run by default — the PLAN reads the realm's current config and flags that any users authenticating via it lose login access. confirm=True executes and returns a dict; synchronous, no UPID. Needs PROXIMO_PBS_* config. |
| pbs_realm_pam_getA | READ-ONLY: get the built-in PAM realm's config (comment/default only). Needs PROXIMO_PBS_* config. |
| pbs_realm_pam_setA | MUTATION (MEDIUM): update the built-in PAM realm's comment/default-preselect flag. Dry-run by default. PAM has NO delete endpoint — the worst case here is a comment/default change, not a lockout. confirm=True executes and returns a dict; synchronous, no UPID. Needs PROXIMO_PBS_* config. |
| pbs_realm_pbs_getA | READ-ONLY: get the built-in PBS-auth realm's config (comment/default only). Needs PROXIMO_PBS_* config. |
| pbs_realm_pbs_setA | MUTATION (MEDIUM): update the built-in PBS-auth realm's comment/default-preselect flag. Dry-run by default. This realm has NO delete endpoint — the worst case here is a comment/default change, not a lockout. confirm=True executes and returns a dict; synchronous, no UPID. Needs PROXIMO_PBS_* config. |
| pbs_tfa_listA | READ-ONLY: list ALL users' TFA configuration (per-user entries + lock state). Use pbs_tfa_user_get to scope to one user. Needs PROXIMO_PBS_* config. |
| pbs_tfa_user_getA | READ-ONLY: list one user's TFA entries. Needs PROXIMO_PBS_* config. |
| pbs_tfa_entry_getB | READ-ONLY: get one TFA entry. Needs PROXIMO_PBS_* config. |
| pbs_tfa_addA | MUTATION (MEDIUM): add a TFA entry for a user. Dry-run by default. SECRET-BEARING RESPONSE for type='recovery': confirm=True's result carries
{"recovery": [], ...} — SERVER-GENERATED secret material, shown ONCE and
never retrievable again. It is never written to the audit ledger (the |
| pbs_tfa_updateA | MUTATION (MEDIUM): update a TFA entry's description/enabled flag. Dry-run by default —
the PLAN reads the current entry first. |
| pbs_tfa_deleteA | MUTATION (HIGH, IRREVERSIBLE): permanently remove one TFA factor from a user. HIGH because
it WEAKENS authentication — an account-takeover enabler, and a lockout if it's the user's last
factor on a TFA-required realm. Dry-run by default — the PLAN flags the permanence and the
takeover/lockout risk. |
| pbs_tfa_unlockA | MUTATION (HIGH): clear a user's TOTP lockout (PUT /access/users/{userid}/unlock-tfa — note the path lives under /access/users/, not /access/tfa/{userid}/). HIGH because it removes the anti-brute-force throttle guarding a 6-digit TOTP keyspace — an account-takeover enabler if the lockout was triggered by a real guessing attack. Dry-run by default. confirm=True executes and returns a dict whose result is a bool: whether the user was previously locked out. Synchronous. Needs PROXIMO_PBS_* config. |
| pbs_tfa_webauthn_getA | READ-ONLY: get the server-wide WebAuthn relying-party config (id/origin/rp/ allow-subdomains). Needs PROXIMO_PBS_* config. |
| pbs_tfa_webauthn_setA | MUTATION (MEDIUM): update the server-wide WebAuthn config. Dry-run by default — the PLAN
reads the current config and calls out that changing |
| pbs_acme_account_listA | READ-ONLY: list registered PBS ACME account NAMES (the schema's own response item is
|
| pbs_acme_account_getA | READ-ONLY: get one PBS ACME account's full config (account/directory/location/tos). Does NOT include eab_hmac_key — PBS never returns it on read. Needs PROXIMO_PBS_* config. |
| pbs_acme_directoriesB | READ-ONLY: list PBS's built-in catalog of known ACME CA directory endpoints (name + URL pairs, e.g. Let's Encrypt production/staging). No params. Needs PROXIMO_PBS_* config. |
| pbs_acme_tosA | READ-ONLY: get the Terms-of-Service URL for an ACME directory (or None if the CA advertises no ToS). The PBS host fetches the given directory URL live (https-only, validated) and the response is authored by whoever controls that URL — classified ADVERSARIAL in the taint control for exactly that reason. Needs PROXIMO_PBS_* config. |
| pbs_acme_challenge_schemaA | READ-ONLY: list the catalog of known ACME challenge plugin types (id/name/schema/type per
entry) — the parameter schema each plugin |
| pbs_acme_plugins_listA | READ-ONLY: list all configured PBS ACME DNS challenge plugins, INCLUDING the raw |
| pbs_acme_plugin_getA | READ-ONLY: get one PBS ACME plugin's full config, INCLUDING the raw |
| pbs_acme_account_createA | MUTATION: register a new ACME account with the CA. Dry-run by default. Additive — does not affect any existing account. Pair with pbs_acme_plugin_create (DNS-01 challenge), then pbs_acme_cert_order, to actually issue a cert; to remove an account instead use pbs_acme_account_delete. confirm=True executes (POST /config/acme/account, synchronous — PBS returns null) and returns {"status": "ok", "result": None}; the default returns a dry-run PLAN dict. Needs PROXIMO_PBS_* config. |
| pbs_acme_account_updateA | MUTATION: update ACME account contact info. Dry-run by default. LOW risk — metadata update only, no cert impact. PBS's PUT accepts ONLY contact (no eab/tos fields on update — those are create-only). To delete the account instead use pbs_acme_account_delete. confirm=True executes (synchronous — PBS returns null) and returns {"status": "ok", "result": None}. Needs PROXIMO_PBS_* config. |
| pbs_acme_account_deleteA | MUTATION: IRREVERSIBLE — DEACTIVATES an ACME account at the CA (not just local config removal) and deletes the local record. Dry-run by default. HIGH risk: TLS lockout at cert expiry if this is the only account. The account key is destroyed — registering again with pbs_acme_account_create creates a DIFFERENT CA account, not a restore of this one. force=delete local data even if the CA refuses to deactivate (PBS-only escape hatch; PVE's equivalent tool has no such flag). The dry-run PLAN captures the current config as evidence only. confirm=True executes (synchronous — PBS returns null) and returns {"status": "ok", "result": None}. Needs PROXIMO_PBS_* config. |
| pbs_acme_plugin_createA | MUTATION: create an ACME DNS challenge plugin. Dry-run by default. Additive — does not affect any existing plugin. dns_api = DNS provider name (e.g. 'cf', 'route53'). Reference plugin_id when ordering a cert via a DNS-01 challenge; to remove the plugin use pbs_acme_plugin_delete. confirm=True executes (POST /config/acme/plugins, synchronous — PBS returns null) and returns {"status": "ok", "result": None}. Needs PROXIMO_PBS_* config. |
| pbs_acme_plugin_updateA | MUTATION: update an ACME DNS challenge plugin. Dry-run by default. MEDIUM risk — invalid new credentials break cert renewal for every domain using this plugin at the next attempt. To remove a plugin instead use pbs_acme_plugin_delete. The dry-run PLAN includes the plugin's current config with the credential blob redacted (PBS DOES return it on read — see module docstring); confirm=True executes (PUT /config/acme/plugins/{id}, synchronous — PBS returns null) and returns {"status": "ok", "result": None}. Needs PROXIMO_PBS_* config. |
| pbs_acme_plugin_deleteA | MUTATION: delete an ACME DNS challenge plugin. Dry-run by default. HIGH risk: cert auto-renewal breaks for every domain using this plugin — TLS lockout at cert expiry unless a fallback challenge method is configured. No UNDO primitive — recreate with pbs_acme_plugin_create, but the credentials must be re-supplied by the caller. The dry-run PLAN captures the current config (credential redacted) as evidence only; confirm=True executes (synchronous — PBS returns null) and returns {"status": "ok", "result": None}. Needs PROXIMO_PBS_* config. |
| pbs_acme_cert_orderA | MUTATION: order a NEW ACME TLS certificate for a PBS node. Dry-run by default. MEDIUM (mirrors pve_acme_cert_order's rating): the cert is CA-validated and installed ONLY on a successful challenge — a failed challenge leaves the existing cert untouched. PBS's schema declares a null return (unlike PVE's task UPID) — this does NOT mean issuance is synchronous; the ACME challenge round-trip with the CA still happens on the PBS side after this call returns, and there is nothing to poll here (no UPID exists to wait on). PBS has NO ACME cert revoke (unlike PVE). force=overwrite existing files. confirm=True executes (POST /nodes/{node}/certificates/acme/certificate) and returns {"status": "ok", "result": None}. Needs PROXIMO_PBS_* config. |
| pbs_acme_cert_renewA | MUTATION: renew the existing ACME TLS certificate for a PBS node. Dry-run by default. MEDIUM (mirrors pve_acme_cert_renew's rating): CA-validated, installed only on success (a failure can't lock you out). Same null-return honesty as pbs_acme_cert_order — PBS declares no return value for this call, but the renewal itself still completes asynchronously on the PBS side; there is no UPID to poll. force=renew even if not yet within the renewal lead time. PBS has NO ACME cert revoke. confirm=True executes (PUT /nodes/{node}/certificates/acme/ certificate) and returns {"status": "ok", "result": None}. Needs PROXIMO_PBS_* config. |
| pbs_admin_gc_jobs_listA | READ-ONLY: job-level view of GC (garbage collection) jobs, max one per datastore, across
ALL datastores unless |
| pbs_admin_prune_jobs_listA | READ-ONLY: job-level view of prune jobs. REVIEWED_TRUSTED (job comment/schedule, matches pbs_jobs_list precedent). Use pbs_job_run(job_type='prune', ...) to trigger one manually. Needs PROXIMO_PBS_* config. |
| pbs_admin_sync_jobs_listA | READ-ONLY: job-level view of sync jobs. REVIEWED_TRUSTED. Use pbs_job_run(job_type='sync', ...) to trigger one manually. Needs PROXIMO_PBS_* config. |
| pbs_admin_verify_jobs_listA | READ-ONLY: job-level view of verification jobs. REVIEWED_TRUSTED. Use pbs_job_run(job_type='verify', ...) to trigger one manually. Needs PROXIMO_PBS_* config. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| safe_migration | Runbook: migrate a guest to another node safely (plan-first, verify-after). |
| diagnose_cluster | Runbook: read-only health sweep of the cluster (DIAGNOSE, no changes). |
| provision_container | Runbook: provision a new LXC within policy (plan-first, verify-after). |
| safe_backup | Runbook: back up a guest and verify the backup actually landed. |
| review_receipts | Runbook: verify Proximo's PROVE ledger integrity (the receipts). |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/john-broadway/proximo'
If you have feedback or need assistance with the MCP directory API, please join our Discord server