How this differs from Semantic UI input
Operate an on-screen control by ID or role, such as pressing the Start button or entering a name in a field.
Drive gameplay itself, such as jumping, moving right, holding W, or moving the pointer.
Expose only the operations you need
Publish game-defined actions such as jump, move, or chat. An agent can request the intent “jump” without knowing the player's key binding.
Expose keyboard, pointer, Standard Gamepad, and text input close to the physical device model. Enable it only when testing key bindings or hold behavior.
Release held input safely
If an agent stops while holding W, Gua prevents the character from walking forever. Held input is tracked separately for each connection, so one connection does not release another connection's controls. If no release command arrives, a hold ends automatically after five seconds by default and can never exceed 60 seconds. Disconnect, session disposal, reset, adapter shutdown, and replay failure also return keys and buttons to neutral. An operation is reported as successful only after the game host confirms that it processed the input.
Engine setup
Add GuaGameInputMap, register only intended actions, and enable raw input only when the Input System pump is ready. Unity uses virtual Keyboard, Mouse, and Standard Gamepad devices from com.unity.inputsystem@1.20.0.
Configure the action map on GuaAutoAdapter. Raw requests are injected on the main thread through Input.parse_input_event.
Tools and confirmation
gui-mcp advertises a fixed game-input tool surface and rejects an unsupported operation when it is invoked. WebMCP registers only the input tools enabled by the capabilities read during page-tool registration. The Inspector's direct panel provides Semantic Game Action controls, one-shot physical-key presses, held-state inspection, and Release all. Release all is a cleanup operation that releases every held key, button, movement action, or other game input owned by the current Inspector connection and returns the character or device state to neutral. It does not release input owned by another connection. Pointer, gamepad, and text input are not direct Inspector controls. A risky action marked requiresConfirmation must receive confirmed: true. Player/Public Agent input remains denied unless the host separately enables Player semantic or raw capabilities.