Skip to main content
Glama

pbs_push

Push backup snapshots from a local Proxmox Backup Server datastore to a remote PBS datastore. Supports dry-run planning and optional execution with confirmation.

Instructions

MUTATION: push backups from the LOCAL datastore store to a REMOTE PBS datastore.

RISK_MEDIUM by default, escalating to RISK_HIGH when remove_vanished=True (mirrors pbs_pull's risk model, applied to the REMOTE side — see proximo.pbs_admin module docstring's RISK RATING section). WRITES real backup data into the REMOTE remote_store; an over-broad or absent group_filter transfers every group in scope. Dry-run by default (returns a PLAN disclosing every param that changes where data lands or what gets deleted); confirm=True executes (POST /push). The live schema declares this returns null — no UPID to poll; Smoke-confirm whether this call blocks synchronously for the full transfer duration. No rollback primitive — a remote push cannot be undone from this side. Needs PROXIMO_PBS_* config.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nsNoNamespace on the LOCAL datastore to push from. Defaults to root.
storeYesLOCAL PBS datastore name to push backups FROM. REQUIRED.
remoteYesRemote ID identifying the destination PBS. REQUIRED (unlike pbs_pull's optional remote).
confirmNoFalse (default) returns a dry-run PLAN only; True executes the push.
rate_inNoInbound rate limit as a byte size with unit.
burst_inNoInbound burst limit as a byte size with unit.
rate_outNoOutbound rate limit as a byte size with unit.
burst_outNoOutbound burst limit as a byte size with unit.
max_depthNoNamespace recursion depth, 0-7.
remote_nsNoNamespace on the REMOTE datastore to push into. Defaults to root.
group_filterNoGroup filters, e.g. '[exclude:]type:vm' or 'group:GROUP' or 'regex:RE'. Omit to push EVERY group in scope.
remote_storeYesDatastore name on the remote PBS to push TO. REQUIRED.
transfer_lastNoLimit transfer to the last N snapshots per group (>=1).
verified_onlyNoOnly synchronize verified backup snapshots, exclude others.
encrypted_onlyNoOnly synchronize encrypted backup snapshots, exclude others.
encryption_keyNoID of an already-registered client encryption key (pbs_encryption_key_*) to encrypt content toward the remote. NOT the raw key material.
proximo_targetNoWhich configured Proxmox target to run this call against — a target name from your multi-target config (a specific PVE/PBS/PMG/PDM box). Omit to use the single/default target from the environment; the selection applies only to this call.
worker_threadsNoNumber of worker threads to process groups in parallel, 1-32.
remove_vanishedNoDELETE remote snapshots that no longer exist locally. Escalates this call's risk to HIGH — no dry-run preview exists.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses mutation side effects (writes real backup data), risk escalation (remove_vanished), dry-run default, null return (no UPID to poll), synchronous behavior uncertainty, and no rollback. It also warns about group_filter scope. This is comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, followed by risk and behavioral details. It uses all caps for key terms (MUTATION, RISK_MEDIUM, etc.) to aid scanning. Every sentence adds essential information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (19 params, mutation, risk), the description covers purpose, risk, dry-run, return type, config requirements, and synchronization behavior. It acknowledges output schema and raises a valid question about synchronous execution. No significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents parameters. The description adds value by explaining the confirm parameter (dry-run vs execute) and the risk implications of remove_vanished, going beyond the schema's basic descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'push backups from the LOCAL datastore store to a REMOTE PBS datastore', using specific verb and resource. It distinguishes from the sibling pbs_pull by specifying the direction (local to remote) and contrasting risk model.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes risk levels, dry-run behavior, and execution mode (confirm=True). It references pbs_pull for risk model and mentions no rollback, providing context for when to use. However, it does not explicitly list when not to use or provide detailed alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

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