Skip to main content
Glama

qemu_mouse

Destructive

Move the absolute pointer in a QEMU guest and optionally click or scroll at screen-relative coordinates captured from a screenshot.

Instructions

Move the absolute pointer and optionally click.

x and y are fractions of the screen width/height (0.0 = left/top, 1.0 = right/bottom) - read them off a qemu_screenshot. button is "left", "right", or "middle" for a full click at that position; "wheel-up", "wheel-down", "wheel-left", or "wheel-right" to scroll a scrollable widget under the pointer instead; or "side"/"extra" for a 5-button mouse's extra side buttons (needs the guest's PS/2 mouse driver in IMEX mode to see them). Omit button to just move the pointer. Needs the guest to have an absolute pointer (USB tablet or PS/2 mouse) to track it - most GUIs have one by default.

Input Schema

NameRequiredDescriptionDefault
xYes
yYes
nameYes
buttonNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the description is not carrying the full burden. It still adds useful context the annotations cannot: the guest must expose an absolute pointer (USB tablet or PS/2 mouse), and side buttons require the guest's PS/2 driver in IMEX mode. What it does not do is warn that a click can trigger irreversible guest-side actions, which would explain the destructive flag.

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 purpose is front-loaded in the first sentence and the rest is dense, non-redundant detail about coordinates and button values. It is longer than average but nearly every clause carries information an agent needs; only the parenthetical driver caveat is borderline expendable.

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

Completeness3/5

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

Return values are covered by the output schema, so the description needn't explain them. The remaining gap is the unexplained required 'name' parameter and the absence of any note on click irreversibility despite destructiveHint=true. For a 4-parameter input tool, that leaves the definition adequate but not complete.

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

Parameters3/5

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

Schema description coverage is 0%, so the description has to compensate, and it does well for x, y (fractions of screen size) and button (enumerating left/right/middle, wheel directions, and side/extra). However, the required 'name' parameter is never mentioned, leaving one of three required inputs entirely unexplained.

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 opening sentence gives a specific verb and resource: 'Move the absolute pointer and optionally click.' It immediately separates the tool from siblings like qemu_key and qemu_type, which handle other input devices, so an agent can pick it without inspecting the schema.

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 tells the agent to read x/y coordinates 'off a qemu_screenshot', which is a concrete workflow pointer to the sibling tool that produces the needed input. It also states that omitting button just moves the pointer. It stops short of explicit when-not guidance (e.g., use qemu_key for keystrokes), so it is strong but not exhaustive.

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