Skip to main content
Glama

perform_ui_action

Destructive

Executes explicit Android UI actions—tap, validated node tap, swipe, keyevent, text input, or bounded wait—while capturing before/after UI and checking device/run bindings.

Instructions

Perform one explicit tap, validated snapshot-node tap, swipe, keyevent, ASCII text input or bounded wait. Captures before/after UI. Use trace_id or up to four trace_ids to mark the actual input across explicit processes, plus optional run_id to retain its result. Markers establish a time window, not causality. Every device/run binding is checked before input.

Input Schema

NameRequiredDescriptionDefault
actionYes
run_idNo
serialYes
packageNo
trace_idNo
trace_idsNo
analysis_project_idNoOptional investigation to retain this tool result in. Does not prove target identity or causal relationships.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.4.0

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true; the description adds genuinely non-redundant behavior: automatic before/after UI capture, pre-input validation of every device/run binding, and the explicit caveat that markers are not causal. It still does not say what happens on partial failure or that tap_node depends on a prior snapshot for node_id validity.

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?

Three dense sentences, front-loaded with the capability list before the tracing semantics. Nearly every clause carries information, though the 'Every device/run binding is checked before input' sentence is slightly cryptic without naming which bindings.

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

Completeness3/5

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

For a destructive, non-idempotent, 7-parameter input tool with no output schema, the description covers action kinds and tracing but omits the package targeting parameter entirely and does not indicate what the captured before/after UI returns or how to retrieve it (presumably an artifact id). That leaves an agent guessing on two call-critical points.

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?

With only 14% schema description coverage across 7 parameters, the description must compensate, and it does partially: trace_id/trace_ids (max four) and run_id are explained semantically, and the action variants are listed. But 'serial', 'package' (the target-app binding, which materially changes behavior) and the snapshot_id/node_id provenance for tap_node are left unexplained, so meaningful gaps remain.

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 opens with a specific verb plus an exhaustive enumeration of the action kinds the single tool supports (explicit tap, validated snapshot-node tap, swipe, keyevent, ASCII text input, bounded wait), which maps directly onto the oneOf action schema. It distinguishes itself from siblings like capture_ui and read_ui_snapshot by being the mutation/input tool and noting it captures before/after UI itself.

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

Usage Guidelines3/5

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

It gives real guidance on trace_id/trace_ids/run_id (marking input across processes, retaining results) and warns that markers establish a time window, not causality. However, it offers no guidance on choosing between the action variants (e.g., when to prefer tap_node over a coordinate tap, or when a bounded wait is appropriate versus re-snapshotting), and no alternatives among siblings are named.

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