Skip to main content
Glama

Read and answer what the running game is showing

live_dialog

Read and answer in-game RPG Maker dialogs—messages, choices, number input—by waiting until the window can take keys, so each response lands on the intended option.

Instructions

The dialog layer of a live game, driven by intent instead of counted key presses. read says what the game is waiting for and what it is showing: the message text, the choice options with each one's enabled state and where the cursor is, the number pad's digits, and whether the window is actually able to take a key right now. answer picks an option by index or types a number, dismiss presses on until the game stops waiting, and cancel takes the cancel branch. Every one of them ends by reading the game again, so the reply tells you what came next. Why this is a tool and not three live_key calls: $gameMessage.isChoice() turns true the moment a choice is queued, while Window_ChoiceList is still fading in, and the engine only moves the cursor when Window_Selectable.isCursorMovable() holds — which needs the window open and active. A cursor key sent in those frames is dropped, and the answer comes back as the first option whatever you meant. Measured on a real playtest: it cost a run. So answer waits for the window to be able to take keys, presses one edge at a time, and re-reads the cursor after every press instead of assuming it moved; the reply says how many presses it took and refuses an option the game has switched off, because that press does nothing and an empty wait looks like a bug.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
indexNoanswer: which option, 0-based — the engine's own order, same as `make_choice_scene` options
limitNodismiss/cancel: how many presses to try before giving up (default 12)
actionNoDefault read
numberNoanswer: the value to type into a number-input window
waitMsNoHow long to wait for the window to be takeable (default 8000)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.4.2

TDQS

A4.6/5.0
Behavior4/5

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

With only idempotentHint=false and destructiveHint=false in annotations, the description carries the burden and delivers: it discloses that answer waits for the window to be takeable, presses one edge at a time, re-reads the cursor after each press, reports the press count, and refuses disabled options. It omits what a failure/timeout reply looks like and the return format, so it falls just short of fully exhaustive.

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 purpose and the action list, then a rationale paragraph justifying the design. Everything is relevant, but the second paragraph is dense and longer than strictly needed to route an agent, so it is efficient rather than maximal.

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 detailing what read returns (message text, options with enabled state and cursor position, number-pad digits, window takeability) and what every action's reply contains. Nothing needed to call it correctly is missing.

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 100%, so the baseline is 3, but the description adds real meaning by tying parameters to action branches (index/number for answer, presses for dismiss/cancel) and confirming 0-based engine ordering. It does not mention limit or waitMs, leaving those entirely to the schema.

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 set (read/answer/dismiss/cancel) over a specific resource (the live game's dialog layer) and enumerates exactly what each action does. It also explicitly distinguishes itself from the sibling live_key, so an agent can tell them apart without opening either schema.

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?

Names the alternative ('three live_key calls') and explains precisely when to prefer this tool: the choice-queued/cursor-unmovable race where raw cursor keys are dropped. It also routes between its own four actions (read to observe, answer/dismiss/cancel to act).

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