droidpilot
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DROIDPILOT_GRPC | No | Emulator gRPC address. Set to an empty string to disable. | 127.0.0.1:8554 |
| DROIDPILOT_SERIAL | No | adb serial of the Android device/emulator. Defaults to the only connected device. | |
| DROIDPILOT_MIN_INTERVAL_MS | No | Minimum 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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| observeB | List interactive and labelled elements on screen with handles. Optionally attach a screenshot. |
| screenshotA | Current screen as JPEG, scaled to |
| tapC | Tap an element handle ("e7") or device coordinates ("540,1200"). |
| tap_textC | Tap the first element whose text (or content description) contains |
| long_pressC | Press and hold an element handle or "x,y". |
| swipeC | Swipe from |
| scrollA | Scroll "down" (reveal content below), "up", "left" or "right", within a scrollable handle or the whole
screen, by about |
| 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
|
| 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 |
| wait_idleA | Wait until the screen stops changing and nothing is loading (use when the element list says
|
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 18 tools
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.
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.
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.
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.