Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DROIDPILOT_GRPCNoEmulator gRPC address. Set to an empty string to disable.127.0.0.1:8554
DROIDPILOT_SERIALNoadb serial of the Android device/emulator. Defaults to the only connected device.
DROIDPILOT_MIN_INTERVAL_MSNoMinimum gap between actions in milliseconds.300

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
observeB

List interactive and labelled elements on screen with handles. Optionally attach a screenshot.

screenshotA

Current screen as JPEG, scaled to width px wide (the device is usually 1080 wide; scale coordinates back).

tapC

Tap an element handle ("e7") or device coordinates ("540,1200").

tap_textC

Tap the first element whose text (or content description) contains text.

long_pressC

Press and hold an element handle or "x,y".

swipeC

Swipe from start to end (handles or "x,y"). Set hold_ms > 0 to press first, i.e. drag.

scrollA

Scroll "down" (reveal content below), "up", "left" or "right", within a scrollable handle or the whole screen, by about distance of its height/width so consecutive pages overlap. fling=True lets the list coast further (faster for long lists, but items can be skipped).

pinchA

Two-finger pinch: zoom "in" or "out", centred on a handle/"x,y" or the screen centre. Emulator gRPC only.

rotateA

Turn the device to "portrait", "landscape", "reverse_portrait" or "reverse_landscape", like a person turning the phone. The display only follows if auto-rotate is on and the app allows it; check the orientation in the returned header.

type_textB

Type into the focused field (tap the field first). Unicode is fine. clear=True replaces existing text.

press_keyB

Press a key: back, home, recent, delete, tab, volume_up, volume_down, power, or any KEYCODE_ name. "enter" (also "search"/"go"/"send"/"done") presses the on-screen keyboard's action key when the keyboard is shown, which is what submits most search boxes and chat inputs.

wait_forC

Wait until an element whose label (text or content description) contains text, and/or with resource id resource_id, appears.

wait_idleA

Wait until the screen stops changing and nothing is loading (use when the element list says loading, e.g. a web page still coming in), then return the element list.

app_launchB

Launch an app by package name (see app_list).

app_stopC

Force-stop an app.

app_currentC

Foreground package and activity.

app_listC

Installed packages, optionally filtered by substring.

statusC

Which backends are in use, screen size and pacing.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.2/5.0

Scored across 18 tools

Disambiguation4/5

Each tool has a distinct action: observation (screenshot/observe), input (type_text, press_key), gestures (tap, tap_text, long_press, swipe, scroll, pinch), waiting, and app lifecycle. Minor overlap exists between screenshot and observe (which can attach a screenshot) and between swipe and scroll, but descriptions clearly delineate when to use each.

Naming Consistency4/5

Names are uniformly lowercase snake_case with an `app_` prefix grouping the package-management tools and verb_noun forms like type_text, press_key, wait_for, long_press. A handful of bare single-word names (screenshot, observe, tap, status) deviate from the verb_noun pattern but remain unambiguous.

Tool Count4/5

18 tools is slightly on the heavy side but each maps to a needed mobile-automation primitive (perception, gesture input, waiting, app control, device state). No tool appears redundant enough to drop outright.

Completeness4/5

Core lifecycle is well covered: observe/screenshot for perception, tap/type/swipe/pinch/press_key for interaction, wait_for/wait_idle for synchronization, and app_launch/stop/current/list for app management. Gaps exist around clipboard/paste, deep-link or URL opening, and notification/shell access, but agents can work around most of these via existing tools.