Skip to main content
Glama

Virtual input

input

Drive a Roblox Studio play client by simulating keyboard presses, mouse clicks, cursor moves, camera look, text entry, focus, and timed waits in ordered sequences through the real input pipeline.

Instructions

Human-like input in a play client through the real input pipeline (dm 'client' = lowest-numbered client, or 'client:N'). actions run in order:

  • {type:'key', key:'W', hold_ms:600 (≤ 60000)} press, hold, release; {type:'key', key:'Space', down:true|false} single edge

  • {type:'click', x, y, button:'left'|'right'|'middle'} down, 50 ms, up; {type:'move', x, y} absolute cursor; {type:'look', dx, dy} relative camera look — best effort: the step fails unless the camera actually rotated (the default camera script ignores virtual deltas; drive workspace.CurrentCamera from a run instead)

  • {type:'text', text}; {type:'focus', path:'PlayerGui.Hud.Input'} TextBox:CaptureFocus(); {type:'wait', ms (≤ 60000)} x,y default to GUI space (gui: true): the coordinates a GuiObject reports as AbsolutePosition; the runtime adds GuiService:GetGuiInset(). gui: false sends raw viewport pixels (inset included). Screenshot pixels are NOT viewport pixels: the screenshot is the whole Studio window scaled by scale; the 3D viewport sits inside it at an offset you must calibrate (see the agent guide). Input only reaches the game while the Studio window renders (not minimized). Result: {steps:[{i, ok, error?}], elapsed_ms}. A failing step does not abort the sequence unless abort_on_error=true; keys still held when a sequence aborts or is cancelled are released. No scroll action: virtual input produces no MouseWheel events. For reactive or long-running input, install a controller with playtest.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dmNoTarget DataModel: 'edit' (default) | 'server' | 'client' (lowest-numbered) | 'client:N'
actionsYes
sessionNoStudio session GUID or unique prefix (default: the active hub; required for writes when several Studios are connected)
wait_msNoWait this long for completion before returning a {job_id,status:"running"} handle (default 25000)
abort_on_errorNoStop at the first failing step (default false)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

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

The annotations are all false and provide no safety profile, so the description carries the full burden. It thoroughly discloses action execution order, hold/release semantics, 50 ms click timing, coordinate-space behavior with GUI inset, the fact that screenshot pixels are not viewport pixels, absence of MouseWheel events, key release on abort/cancel, per-step result format, and non-aborting failure behavior unless abort_on_error is set.

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?

The description is dense and every sentence contributes necessary operational detail, with no filler. It is front-loaded with the core purpose and action list, but the heavy use of parentheticals and run-on sentence structure makes it harder to parse than a more bulleted layout would be. Still, it is appropriately sized for the tool's complexity.

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?

Given the tool's complexity and lack of an output schema, the description is complete: it covers action order, hard limits, coordinate-system calibration, result shape, abort and error semantics, key-release behavior, no-scroll limitation, window rendering prerequisite, and when to delegate to playtest or run. An agent has everything needed to invoke it correctly.

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?

While the schema provides descriptions for dm, session, wait_ms, and abort_on_error, the complex `actions` array properties lack schema descriptions. The description compensates by defining each action type and its fields (key, down, hold_ms, x/y, button, dx/dy, text, path, ms, gui) with constraints and coordinate defaults, adding substantial meaning beyond 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?

The description states exactly what the tool does: it provides human-like input through the real input pipeline in a play client, with a detailed breakdown of supported action types (key, click, move, look, text, focus, wait). This clearly distinguishes it from siblings like observe, run, and playtest, and goes far beyond a restatement of the title.

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?

The description gives explicit routing guidance: for reactive or long-running input, install a controller with `playtest`; for camera rotation that the default script ignores, drive workspace.CurrentCamera from a `run` instead. It also states a key prerequisite—input only reaches the game while the Studio window renders (not minimized)—so an agent knows when the tool will not work.

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