Skip to main content
Glama

Press a logical MA key

gma3_hardkey

Press, hold, or tap logical MA hardkeys on a grandMA3 onPC console through the bridge keyboard backend, refusing unmapped or colliding key routes.

Instructions

Press, release or tap a logical MA hardkey (PLEASE, STORE, ESC, CLEAR, OOPS, NUM0-9, EXEC with executor, MA) on the console through the bridge's keyboard backend: REAL console keys are pressed through the operator's shortcut table or a verified native route (MA = LeftShift, PLEASE = Enter redirect); unmapped, ambiguous or colliding routes are refused before dispatch. tap presses and releases with hold_ms (default 50, max 5000) and returns once the release was attempted; exclusive: true is the intended long-press (every other input is refused meanwhile). keys (2-4 logical keys) presses a combination in order and releases newest first (chord tap with action tap; a hold with action press). press holds the key until release or the interaction/lease ends and REQUIRES an interaction id (gma3_input_interaction acquire). While any key is held, an interaction is open or a release stayed unresolved, the bridge refuses commands/property/playback/fader/Lua from every client with [busy]. Input is OFF until the operator runs Plugin "gma3_mcp_bridge" "input=keyboard" (release works while off). Input is not display-scoped. The result never claims a UI effect: verification is unavailable unless an observable (aggregate MASTATE for MA) showed the expected value; a release on this backend is 'dispatched', never 'confirmed'. Nothing is retried or replayed; an uncertain dispatch is reported as unknown.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
keyNoLogical MA key resolved through the operator's live shortcut table (MA = LeftShift natively, PLEASE = the native Enter redirect). MA1/MA2 are unsupported.
keysNoA combination pressed in order (e.g. [MA, STORE]) and released newest first. Instead of key.
actionYes
displayNoDisplay index passed to the console as API context only. It must exist; input is NOT display-scoped on onPC 2.5.1 (no routing, focus or pop-up placement is promised).
hold_msNotap only: how long the key (or chord) stays down before the scheduled release (default 50).
executorNoExecutorIndex of a mapped executor shortcut; required with key EXEC, refused otherwise.
exclusiveNotap/press of a single key only: the intended long-press; refused while anything else is held, and refuses every other input until released.
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

A4.1/5.0
Behavior5/5

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

With no annotations present, the description carries the full burden and does so thoroughly: it discloses the [busy] refusal while any key is held, the input=OFF gating, that releases are 'dispatched' never 'confirmed', that nothing is retried/replayed, and that uncertain dispatch is reported as unknown. This is unusually rich, honest behavioral disclosure for a mutation-like 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 verb and packed with relevant signal, but it is a single dense paragraph with no structural breaks, making it harder to scan. Every clause roughly earns its place for a genuinely complex tool, so 4.

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 complex, 8-parameter tool with no output schema and no annotations, the description is complete: it covers routing, preconditions, concurrency/refusal semantics, verification limits, and result interpretation. Nothing an agent needs to call it correctly appears missing.

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 88%, so the schema already documents key, keys, action, display, hold_ms, executor, exclusive and interaction. The description largely restates this (hold_ms default/max, keys 2-4, interaction required for press), adding little syntax or meaning beyond the schema. Baseline 3 is appropriate.

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?

Names a specific verb set (press/release/tap) and resource (logical MA hardkeys via the bridge keyboard backend), listing the exact keys and the routing mechanism. An agent can tell broadly what it does. It does not, however, explicitly distinguish itself from sibling tools like gma3_keyboard or gma3_type, so it falls 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?

Provides strong operational context: press REQUIRES an interaction id from gma3_input_interaction, exclusive:true is the intended long-press, and input is off until the operator enables input=keyboard. It explains when refusals occur and preconditions, but names no alternative sibling for comparison, so 4 rather than 5.

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