Skip to main content
Glama

Use the app on screen

screen_act

Press controls, fill or select values, or call an app's own tools in the open app, letting the user watch each action and see the resulting screen or answer.

Instructions

Do what the user would do in the app they have open: press a control, or fill/select a value (ref from screen_read, or the control's visible label) — or call one of the app's own tools that screen_read lists (tool + input). The user watches it happen; returns the screen after a press, the tool's answer after a call. "Show me Thursday" is an action in the app, not a data query.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
appNowhich open app (default: the one the user is on)
refNocontrol ref from screen_read, e.g. r3
toolNoone of the app's own tools, from screen_read
inputNothe tool's arguments
labelNothe control's visible label, if you have no ref
valueNofor fill / select
actionNodefault: fill for text inputs, select for dropdowns, press otherwise

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.10.1

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare non-read-only, non-destructive, closed-world behavior, so the bar is lowered. The description adds real context beyond the annotations: the user watches the effect happen, and the return differs by mode (screen after a press, the tool's answer after a call).

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-loads the core action, then parenthetically fills in parameters and return behavior in roughly two dense sentences with no filler. Slightly heavy on asides but every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter, zero-required tool with a nested input object and no output schema, the description usefully explains both the input source (screen_read) and what comes back for each mode. It stops short of covering failure/error behavior or ambiguity when both ref and label are supplied.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds only relational meaning (ref originates from screen_read, label is a fallback) that largely duplicates the schema's own wording, without clarifying interactions between app/ref/label/value.

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 concrete verb and resource ('do what the user would do in the app they have open') and enumerates the three action modes: press a control, fill/select a value, or call the app's own tool. This clearly separates it from screen_read (which yields refs) and from pure data tools.

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 explicit operating context: use a ref from screen_read or the control's visible label, and the default action mapping for text inputs vs dropdowns vs everything else. It also disambiguates intent ('"Show me Thursday" is an action in the app, not a data query'), though it never explicitly contrasts itself with siblings like call_function or screen_poll.

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