Skip to main content
Glama
gma3-mcp

gma3-mcp

by nf-s

Press a logical MA key

gma3_hardkey

Press, release, or tap logical MA hardkeys and key combinations through the console keyboard backend, including held and exclusive long-press input dispatch.

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). On the Quickey backend a tap of a code with direct-tap evidence, without exclusive and with hold_ms 50 or less, is one Press Quickey (nothing held; KB-29, bridge 0.37.0). 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

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.4/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 thoroughly: [busy] refusals across every client while a key is held or an interaction is open, no retry/replay with uncertain dispatches reported as unknown, and the candid statement that a release is 'dispatched', never 'confirmed', with no UI-effect claim. Prerequisites (operator must enable input=keyboard) and scope limits (not display-scoped) are spelled out.

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?

Purpose is front-loaded, but the body is one dense wall of parentheticals, internal references (KB-29, bridge 0.37.0) and nested clauses that slow parsing. Almost every sentence carries real information, so the problem is structure and density rather than filler.

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 an 8-parameter mutation tool with no annotations and no output schema, the description covers prerequisites, concurrency/busy behaviour, result interpretation and failure semantics. An agent has enough to call it correctly and to explain an outcome without further documentation.

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 coverage is already 88%, yet the description still adds meaning beyond it: keys is pressed in order and released newest first (chord tap vs hold), exclusive is the intended long-press that blocks all other input, executor pairs with EXEC, and interaction must be passed while the server has one open. These are semantic constraints the schema alone does not convey.

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 set (press, release or tap) and a concrete resource (logical MA hardkey), enumerating the supported keys and the backend used. An agent knows exactly what the tool does, though it never contrasts this with sibling gma3_keyboard or gma3_type, so the boundary with those tools must be inferred.

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 rich conditional guidance: tap vs press vs keys-chord, exclusive for long-press, press requires an interaction id from gma3_input_interaction acquire, and input is OFF until the operator runs the input=keyboard plugin. Missing explicit routing advice for when to choose gma3_keyboard or gma3_type instead, which is the main gap.

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

Deploy Server

Other Tools