Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ANDROID_HOMENoPath to the Android SDK. Used to locate adb if not already on PATH.
APKSCOPE_ADBNoPath to the adb binary. Used if adb is not on PATH and ANDROID_HOME/ANDROID_SDK_ROOT are not set.
ANDROID_SDK_ROOTNoPath to the Android SDK. Used to locate adb if not already on PATH.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
screenshotA

Render the current screen as text.

mode: 'palette' (default) one glyph per pixel with a legend mapping glyphs to true RGB -- layout, colour and shape. 'ramp' luminance ASCII, cheapest and structure only. 'ansi' truecolour half-blocks, roughly 40 characters per pixel, so keep it to small crops and low cols.

crop: 'all', 'top', 'mid', 'bot', or 'a,b' as fractions of screen height. cols: output width in characters. squash: vertical scale factor, default 1.0 (true aspect); raise it to compress a tall screen.

Does not convey small body text, subtle typography, or whether a screen matches a design intent -- use screen_tree for exact content.

screen_treeA

List every labelled element on screen with its bounds.

The primary way to read a Flutter UI: Flutter publishes its semantics tree only while an accessibility service is bound, which this tool arranges temporarily and then reverts.

Each line gives class, flags, pixel size, centre coordinate and label. Flags: C=clickable, F=focusable, E=enabled, k=checked, s=selected. Only elements marked C are real controls -- Flutter also marks plain text focusable, so do not treat F alone as tappable.

Pass tappable=True to get just the tap-target table.

audit_layoutA

Check tap-target sizes, overlaps and (optionally) off-screen elements.

Reports TAP-SMALL (a control below min_tap_dp, Material's guidance is 48), OVERLAP (two controls sharing more than a third of the smaller one), and with check_clip CLIPPED (a node extending past the viewport).

Full-bleed wrappers are excluded: Flutter often wraps a whole screen in one GestureDetector, which would otherwise appear to overlap everything.

tapA

Tap the on-screen element whose label contains label.

Refuses an ambiguous label and lists the candidates, because a silent wrong tap navigates somewhere unexpected. Pass first=True to take the first match.

Returns the resolved label and coordinates actually tapped.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.1/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct role: screenshot renders pixels visually, screen_tree extracts semantic structure, audit_layout checks geometry heuristics, and tap performs an action. The descriptions explicitly cross-reference each other (e.g. screenshot points to screen_tree for exact content), eliminating overlap.

Naming Consistency3/5

All names are lowercase snake_case, but the grammatical pattern is mixed: 'screenshot' and 'screen_tree' are output nouns, 'audit_layout' is verb_noun, and 'tap' is a bare verb. Readable and non-chaotic, but not a predictable single convention.

Tool Count4/5

Four tools is a lean, well-scoped set covering the read/audit/interact loop for a Flutter screen. It is slightly thin (no gesture, input, or navigation helpers), but nothing feels redundant or out of place.

Completeness3/5

Read and audit coverage is solid, and tap handles basic interaction, but the surface lacks text input, scrolling/swiping, back navigation, and app launch/wait operations. These are notable gaps for a UI inspection/automation domain that will force agents to work around them.

Maintenance

ActivityMaintained
ResponsivenessNo issues