Skip to main content
Glama

qemu_stop

DestructiveIdempotent

Stops a QEMU virtual machine with graceful ACPI shutdown first and a forced kill fallback for unresponsive guests.

Instructions

Stop a VM. Tries graceful ACPI powerdown first; force=True kills it.

Guests without ACPI handling (most hobby kernels) will need force=True or will be killed after the graceful_timeout_s grace period anyway. graceful_timeout_s (default 10 s) bounds how long to wait for the guest to shut down after ACPI powerdown before falling back to a kill; raise it for a guest that legitimately needs longer (large RAM, a slow ACPI handler). kill_timeout_s (default 3 s) bounds how long to wait for the QEMU process to exit after quit/kill before it's force-killed. Both must be positive.

Input Schema

NameRequiredDescriptionDefault
nameYes
forceNo
kill_timeout_sNo
graceful_timeout_sNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.2/5.0
Behavior5/5

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

The description carries real behavioral information beyond the annotations: an ACPI powerdown is attempted first, then a kill fallback after graceful_timeout_s, then a process force-kill after kill_timeout_s. It also warns that many hobby kernels will end up force-killed, which is exactly the side-effect disclosure an agent needs for a destructiveHint=true tool.

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?

Front-loaded with the core action and the fallback behavior, then parameter detail. Slightly wordy in the parenthetical about large RAM and the "or will be killed ... anyway" clause, which partly repeats the timeout explanation, but nothing is filler.

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

Completeness4/5

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 described, and the behavioral and timeout semantics are thoroughly covered for a destructive stop operation. The only missing piece is the meaning of the required `name` argument, which leaves a small hole for a 4-parameter tool.

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 0%, so the description must do the work, and it does for three of four parameters: force, graceful_timeout_s and kill_timeout_s each get defaults, meaning and a constraint ("both must be positive"). The required `name` parameter is never explained (presumably a VM name from qemu_list), which is the one remaining gap.

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

Purpose4/5

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

Opens with a specific verb and resource: "Stop a VM." That is clearly distinguishable from qemu_pause/qemu_resume siblings, and the grace-then-kill detail further pins the semantics. It doesn't explicitly name an alternative tool, so it falls just short of a 5.

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?

Gives concrete when-to-use guidance: guests without ACPI handling need force=True, and graceful_timeout_s should be raised for large-RAM or slow-ACPI guests. It lacks an explicit when-not or a pointer to qemu_pause for a reversible suspend, but the operational context is clear.

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