Skip to main content
Glama

sequence

Destructive

Run ordered pointer, keyboard, and UI actions in one call to reduce round-trips for click/type/enter macros and stop when windows change unexpectedly.

Instructions

Run an ordered list of actions in ONE call, so a click/type/enter micro-sequence costs one round-trip instead of several. Each step is {"op": "pointer"|"keyboard"|"click_ui"|"hypr"|"wait_for", ...that tool's args}, e.g. [{"op":"pointer","action":"click","x":800,"y":60}, {"op":"keyboard","action":"type","text":"hello","window":"0x.."}, {"op":"keyboard","action":"key","keys":"enter"}]. With stop_on_change (default) the run stops, best-effort, when it notices a STRUCTURAL change between steps that the step did not intend: a window opening (e.g. a dialog), closing, or moving, a switch to an unexpected workspace, or a seat-taking layer surface (a launcher or on-screen keyboard) appearing, so later steps do not act on stale state. Notification popups and bars are not treated as changes. It does NOT catch a bare focus change, so to type into a specific window reliably give that keyboard step a window= address (the keys go to that window). Bounded to 20 steps and ~30s total. then observes the final state ('desktop' default, 'screenshot', 'ui', 'none'). background applies to every pointer, keyboard and click_ui step that does not set its own, and background=true refuses a hypr step that takes the human's view.

Input Schema

NameRequiredDescriptionDefault
thenNodesktop
stepsYes
backgroundNo
stop_on_changeNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.13.0
    • addedInput schema / properties / background
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Background"
      +}
  2. Addedv0.6.0

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the destructiveHint/readOnlyHint annotations: stop_on_change default behavior, precisely which events count as a structural change (window open/close/move, unexpected workspace, layer surface) and which don't (notification popups/bars, bare focus change), the window= workaround, hard limits (20 steps, ~30s), and background's refusal rule for view-taking hypr steps. This is exactly the behavioral context an agent needs.

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 value proposition before the mechanics, and every clause roughly earns its place. It is a dense single block with many nested parentheticals, which is slightly harder to scan than it could be, but no sentence is wasted.

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, multi-step, bounded tool this covers everything: limits, stop conditions, parameter inheritance, per-step addressing, and awaiting behavior. An output schema exists, so return values need not be described, and the remaining gaps are negligible.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden and does: it defines stop_on_change's detection semantics, `then`'s observed-state role and its 'desktop' default alongside 'screenshot'/'ui'/'none', and background's inheritance across pointer/keyboard/click_ui steps plus its hypr constraint. It also specifies the steps item shape via example even though the schema is a bare array.

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?

States a specific verb+resource: it runs an ordered list of actions in one call, explicitly to collapse a click/type/enter micro-sequence into one round-trip. It names the exact ops the steps can carry (pointer, keyboard, click_ui, hypr, wait_for) and gives a concrete example, so an agent can distinguish it from the individual sibling action tools immediately.

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?

Clear context for use: batching several related actions to avoid multiple round-trips. The boundaries are given indirectly (steps reference the individual sibling tools' args, implying single actions belong there), but there is no explicit statement of when NOT to batch or when to prefer a single pointer/keyboard call.

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