Skip to main content
Glama

update_power_schedule

Destructive

Replace a power schedule's action, timing, and enabled flag, and re-arm its next run. This is a FULL REPLACE, not a patch: restate every field of the schedule as it should be afterwards - enabled must always be passed (an omitted enabled is refused rather than silently re-enabling a paused schedule), and a 'cron' schedule must restate its timezone (an omitted timezone is refused rather than silently shifting the fire hour to UTC). Call list_power_schedules first for the schedule_id and the current values. Passing enabled false pauses the schedule without losing its configuration; true re-arms it for its next occurrence. The same VM-termination caution and stop_mode semantics as create_power_schedule apply to stop schedules ('delete_resources' terminates every VM; 'scale_to_zero' deletes the worker servers, losing data on their own disks, and keeps the control plane running). A 'stop' schedule must also restate its stop_mode (an omitted stop_mode is refused rather than silently reverting a scale-to-zero schedule to the destructive default). An enabled scale_to_zero stop on a cluster whose inventory shows claims on a worker's own disk is refused unless accept_node_local_data_loss is true, which may only be set after the user has explicitly agreed to lose that data at every stop, exactly as for create_power_schedule. Do not use it to turn a schedule into an off-hours saving schedule; propose_off_hours_schedule files that decision.

Input Schema

NameRequiredDescriptionDefault
actionYesWhat the schedule does when it fires.
run_atNoRFC 3339 timestamp of the single fire, e.g. '2026-01-02T19:00:00Z'. Required for schedule_kind 'once'; must be in the future.
enabledYesWhether the schedule is armed. Must always be passed on update: false pauses the schedule, true (re-)arms it.
timezoneNoIANA timezone the cron expression is evaluated in, e.g. 'Europe/Stockholm'. Must be restated for 'cron' schedules.
stop_modeNoHow a stop fires: 'delete_resources' (default) is the full stop_cluster teardown that terminates every VM; 'scale_to_zero' deletes the worker servers (data on their own disks is lost at every stop) and keeps the control plane, networks, SSH keys and cloud volumes; 'pause' powers every server off and keeps it with its disks (etcd and local data survive) - k3s clusters on Hetzner, UpCloud and DigitalOcean only, and what a stop always does on AWS and Scaleway. A pause saves no compute cost on Hetzner, DigitalOcean or UpCloud (Developer and General Purpose plans): they bill a powered-off server at its full price, so say so and offer scale_to_zero or delete_resources when the user wants to save. On AWS and Scaleway a powered-off server stops billing compute; its disks and IPs keep billing. Only meaningful with action 'stop'.
cluster_idNoUUID of the target cluster. Optional when a cluster is selected.
schedule_idYesUUID of the schedule to replace, from list_power_schedules.
cluster_nameNoExact name of the target cluster. Optional when a cluster is selected.
schedule_kindYes'once' fires a single time at run_at; 'cron' fires repeatedly per cron_expression.
preserve_stateNoFor a 'stop' schedule with stop_mode 'delete_resources' on a provider whose stop deletes the VMs: capture the cluster's state (an encrypted etcd snapshot) before the teardown, and restore it on the next start. When the capture cannot run, the stop is refused and nothing is torn down; the failure says to set preserve_state false to allow a stop without saving state. Defaults to false on create; on update an omitted value keeps the schedule's current setting. Ignored for other schedules.
cron_expressionNoStandard 5-field cron expression, e.g. '0 19 * * 1-5'. Required for schedule_kind 'cron'. Must not embed a timezone; use the timezone parameter.
accept_node_local_data_lossNoThe user's explicit consent to losing the data on the worker disks at every stop of an enabled scale_to_zero stop schedule. On a cluster whose inventory shows persistent volume claims on a worker's own disk, such a schedule is refused without it and the refusal names the claims. Set it to true ONLY after you have shown the user those claims and the user has explicitly agreed to lose that data - never on your own judgement, never pre-emptively, and not because the user asked for the schedule. Ignored for every other schedule; defaults to false.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

The description adds substantial behavior beyond the destructiveHint annotation: it warns that this is a full replace, that omitted enabled/timezone/stop_mode values are refused rather than defaulted, and that stop schedules can delete VMs or worker disks. It also explains refusal conditions around scale_to_zero and accept_node_local_data_loss.

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

Conciseness4/5

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

The first sentence is front-loaded with the core action, and the length is justified by the destructive complexity and the number of caveats. It is somewhat dense and repetitive around omitted-field refusal behavior, but nearly every sentence carries operational value.

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?

For a destructive 12-parameter mutation with no output schema, the description covers prerequisites, full-replace semantics, refusal behavior, data-loss risks, consent requirements, and the relevant alternative tool. An agent has enough context to invoke it safely and correctly.

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 in detail. The description adds important update-specific meaning: every field must be restated, enabled must always be passed, cron schedules must restate timezone, and stop schedules must restate stop_mode, while accept_node_local_data_loss is consent-gated.

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 opens with a specific verb and resource: replacing a power schedule's action, timing, and enabled flag, and re-arming its next run. It clearly distinguishes this as a full replacement rather than a patch and names the sibling to use for off-hours schedule changes.

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

Usage Guidelines5/5

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

It explicitly says to call list_power_schedules first for the schedule_id and current values, and explicitly excludes using it to turn a schedule into an off-hours saving schedule, directing that to propose_off_hours_schedule instead. This gives clear when-to-use, prerequisite, and when-not-to-use guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources