Skip to main content
Glama

Run a bounded input sequence

gma3_input_sequence

Run an ordered, bounded sequence of console input—taps, presses, releases, combos, text and waits—validating every step before any event, so one invalid step dispatches nothing.

Instructions

Run an ordered, bounded sequence of console input under one interaction owner: taps, presses, releases, combinations, text and waits (at most 16 steps, about 30 s of holds/waits/typing). The bridge validates EVERY step (routes, keys, text policy, context) before the first event; one invalid step means nothing is dispatched. Steps are then serviced one after another by the plugin loop (a tap waits for its release, text goes out in chunks with its context rechecked), and a failure stops the sequence: later steps are reported as skipped, keys the sequence still holds are released newest first, nothing is replayed. Each step ends succeeded, failed (nothing of it dispatched), unknown (a dispatch raised or a release stayed unresolved: the console may have received it) or skipped. A tap is complete only after its release was attempted; completed never means a UI effect was verified (see verification/readback). Pass interaction to run inside an acquired interaction, otherwise one is begun and ended for the sequence. Commands from every client are [busy] while it runs. Input is OFF until the operator runs Plugin "gma3_mcp_bridge" "input=keyboard". Real console keys are pressed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
labelNo
stepsYes
lease_msNoLease of the interaction begun for this sequence (default: twice its estimated duration + 2 s).
interactionNoId from gma3_input_interaction acquire. Required for a standalone hold (press). A bounded tap, chord tap, text or sequence may run without one (it owns an interaction for its duration) but must pass the id while this server has one open.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses pre-dispatch validation of EVERY step (one invalid step means nothing dispatched), sequential servicing with context rechecks, failure propagation (later steps skipped, held keys released newest-first, nothing replayed), the succeeded/failed/unknown/skipped status taxonomy, the caveat that 'completed' does not mean a UI effect was verified, the [busy] lock on all clients during the run, and the requirement that input be enabled via the bridge plugin. That is unusually thorough behavioral context.

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

Conciseness3/5

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

Front-loaded with the core verb+scope, which is good, but the paragraph is long and dense, packing validation, lifecycle, statuses, locking, and setup requirements into one run-on block. Key facts (16-step cap, ~30 s budget) compete with edge-case semantics; a bulleted split of lifecycle vs. step kinds vs. preconditions would have earned a higher score.

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?

No output schema exists, so the description must explain returns; it does so via the status taxonomy (succeeded/failed/unknown/skipped) and failure semantics, which is sufficient. Remaining gaps are minor: no explicit guidance on label or lease_ms semantics, and the interaction parameter's role is described but not contrasted against gma3_input_interaction's own lifecycle.

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 50%, and the description mostly mirrors what the schema already documents (step cap, time budget, interaction ownership) without adding syntax or defaults for the under-documented parameters like lease_ms, label, or the per-step modifier flags. It does add the operational nuance that a sequence owns an interaction if none is passed, but the 50% coverage gap is not fully compensated.

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?

The description states a specific verb+resource: 'Run an ordered, bounded sequence of console input' with the exact step types (taps, presses, releases, combinations, text, waits) and limits (16 steps, ~30 s). It distinguishes itself from most siblings by describing the sequence-level orchestration, though it never names or routes to the most obvious alternatives like gma3_hardkey, gma3_type, or gma3_keyboard. A single 'use this instead of individual input calls when...' sentence would have earned 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 Guidelines3/5

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

Usage context is implied rather than stated: the description explains what the sequence does and mentions the interaction parameter, but never says when to prefer this tool over calling gma3_hardkey/gma3_keyboard/gma3_type individually, nor when not to use it. For a tool with three obvious input-sibling alternatives, that is a clear gap.

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