Skip to main content
Glama
gma3-mcp

gma3-mcp

by nf-s

Read or answer the console's open dialog

gma3_dialog

Reads open grandMA3 console dialogs or safely presses a named button after verifying the dialog's title, message, and button state before acting.

Instructions

For a dialog no structured tool answers, e.g. a macro's Lua Confirm() (gma3_run_macro reports an open dialog). action read (read-only): the top modal's class, title, message and buttons (text, enabled), or open: false. action press: clicks one button, named by its exact text, after checking that the open dialog still shows expect_title and/or expect_text as read returned them ("" for a dialog without a title) and that the button is there and enabled; a different dialog is never answered. Then the dialog is read again: closed, replaced by another dialog, or still open, with the console's last command (which does not name the button: check the effect on the object). Requires exclusive: true for press. What a button does has NO UNDO. Buttons that delete, overwrite, load a show or discard changes are pressed only because the call names them: read the message first. Tools that open their own dialogs (gma3_save_show, gma3_patch_move) answer them themselves. Needs bridge 0.42.0.

Input Schema

NameRequiredDescriptionDefault
actionYes
buttonNopress: the button's text exactly as read lists it, e.g. "OK".
exclusiveNopress: required, must be true: nobody else operates the console meanwhile.
expect_textNopress: the dialog's message as read returned it (whitespace is compared collapsed).
expect_titleNopress: the dialog's title as read returned it ("" when it has none).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations supplied, the description carries the full burden and delivers: read is read-only, press requires exclusive: true, the guard fields must match what read returned ("" when untitled), and the dialog is re-read afterwards returning closed, replaced, or still open. It goes further than most by warning that what a button does has NO UNDO and that the console's last command does not name the button, so the effect must be checked on the object.

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?

Nearly every clause carries distinct operational information, and the when-to-use condition is front-loaded. It is a dense block of semicolon-joined fragments rather than a structured list, which costs some scannability for a tool with two modes and four optional guard parameters.

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?

No output schema exists, and the description compensates by enumerating what read returns (class, title, message, buttons with text and enabled, or open: false) and the three post-press states. For a five-parameter, annotation-free tool with irreversible button presses, that covers everything an agent needs to call it safely.

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

Parameters4/5

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

Schema coverage is 80%, so most parameters are already documented; the description still adds the purpose behind them — expect_title/expect_text exist as a safety comparison against the live dialog, and button must match the exact text read listed and be enabled. It adds a little more with the collapsed-whitespace comparison rule, though it does not restate the action enum values beyond the read/press behaviour split.

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 description states a specific verb and resource — read the top modal or press one of its buttons — and scopes it precisely as the fallback 'for a dialog no structured tool answers, e.g. a macro's Lua Confirm()'. It also names the sibling that reports the trigger condition (gma3_run_macro) and the siblings that handle their own dialogs, so an agent can separate it from every other tool in the list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

It gives both directions: use it only for dialogs nothing structured covers, and skip it for gma3_save_show and gma3_patch_move which answer their own dialogs. It also prescribes the operating order — read the message first, then press — and states that a mismatched dialog is never answered.

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