1---2name: android-control3description: Universal Android phone/device control through the android-control MCP server. Lists, connects, and drives Android devices — taps, swipes, typing, keys, screenshots, screen recording, UI hierarchy, apps, files, intents, shell, messaging, multi-device fleets, recovery, and the remote-touchpad companion. Use for ANY request about an Android phone, tablet, emulator, or adb device.4---56# android-control — drive any Android device with the MCP78The `android-control` MCP server exposes every Android capability as plain9tools over stdio. This one skill shows a small model exactly how to use them.10There are no hidden steps: list devices, pick one by serial, act, verify.1112## The complete tool reference1314Every tool below exists on the `android-control` MCP server. `device` is15optional everywhere: leave it out (or use `"all"`) to act on every connected16device; or pass a serial / model / group name to target exactly one.1718### 1. Discovery and connection1920| Tool | What it does | Params |21|------|--------------|--------|22| `list_devices` | List every discovered Android device (add `include_all=true` for offline sessions) | `include_all` (bool) |23| `discover` | Register currently attached devices — the FIRST call always |24| `status` | Get status/profile (default: all connected) | `device` |25| `connect` | Connect/reconnect one device | `device` (required), `confirm=true` |26| `disconnect` | Disconnect one device | `device` (required) |27| `reconnect` | Recover/reconnect device(s) | `device` |2829### 2. Screen3031| Tool | What it does | Params |32|------|--------------|--------|33| `take_screenshot` | Capture a screenshot of device(s) | `device` |34| `screen_record` | Record the screen and pull the mp4 | `seconds` (number, default 8), `device` |35| `screen_info` | Display/resolution/orientation info | `device` |3637### 3. Touch / mouse3839| Tool | What it does | Params |40|------|--------------|--------|41| `tap` | Tap/click at a point | `x`, `y` (ints, required), `device`, `confirm=true` |42| `long_press` | Long-press at a point | `x`, `y`, `duration_ms` (default 600), `device`, `confirm=true` |43| `swipe` | Swipe/drag between two points | `x1`, `y1`, `x2`, `y2`, `duration_ms` (default 300), `device`, `confirm=true` |44| `scroll` | Scroll a direction | `direction` (up/down/left/right, default down), `steps`, `device`, `confirm=true` |4546### 4. Keyboard4748| Tool | What it does | Params |49|------|--------------|--------|50| `type` | Type text into the focused field | `text` (required), `device`, `confirm=true` |51| `key` | Send a key press (`home`, `back`, `enter`, `volume_up`, ...) | `keycode` (required), `device`, `confirm=true` |52| `back` | Press Back | `device`, `confirm=true` |53| `home` | Press Home | `device`, `confirm=true` |54| `recents` | Open Recents | `device`, `confirm=true` |5556### 5. Semantic UI5758| Tool | What it does | Params |59|------|--------------|--------|60| `ui_tree` | Dump the semantic UI hierarchy (all widgets + text) | `device` |61| `ui_find` | Find nodes matching criteria | `text`, `text_contains`, `resource_id`, `content_desc`, `cls` (any), `device` |62| `ui_click` | Click the first node matching criteria | same matchers, `device`, `confirm=true` |63| `ui_type` | Type into a matched editable field | `text` (required), `text_contains`, `resource_id`, `device`, `confirm=true` |64| `ui_read` | Read all visible text of the current screen | `device` |6566### 6. Apps and intents6768| Tool | What it does | Params |69|------|--------------|--------|70| `apps_list` | List installed packages | `device` |71| `app_launch` | Launch an app by package | `package` (required), `device`, `confirm=true` |72| `app_stop` | Force-stop an app by package | `package` (required), `device`, `confirm=true` |73| `open_url` | Open a URL via intent | `url` (required), `device`, `confirm=true` |74| `open_settings` | Open Android Settings (optionally a named panel) | `panel` (string), `device`, `confirm=true` |7576### 7. Files7778| Tool | What it does | Params |79|------|--------------|--------|80| `files_list` | List files/folders in a directory | `path` (default `/sdcard/`), `device` |81| `send_file` | Send a file Windows -> Android | `local_path`, `remote_path` (required), `device`, `confirm=true` |82| `receive_file` | Receive a file Android -> Windows | `remote_path`, `local_path` (required), `device`, `confirm=true` |8384### 8. Messaging (agent <-> device)8586| Tool | What it does | Params |87|------|--------------|--------|88| `send_message` | Send a text/structured message agent -> device(s) | `message`, `structured` (object), `device`, `confirm=true` |89| `receive_messages` | Receive device(s) -> agent messages since last read | `device` |9091### 9. Shell and diagnostics9293| Tool | What it does | Params |94|------|--------------|--------|95| `shell` | Run a checked shell command | `command` (required), `device`, `confirm=true` |96| `device_info` | Full machine-readable device profile | `device` |97| `verify` | Health-check device(s) | `device` |9899### 10. Remote Touchpad companion (phone -> this PC)100101| Tool | What it does | Params |102|------|--------------|--------|103| `remote_touchpad` | Manage the phone-as-PC-input companion | `action` (status/start/stop/resolve), `bind`, `secret`; starting/stopping requires `confirm=true` |104105### 11. Autonomy106107| Tool | What it does | Params |108|------|--------------|--------|109| `run_goal` | Execute a natural-language goal across the fleet | `goal` (required) — it decomposes into the gated phases below |110111### Resources and prompts the server also exposes112113- Resources: `android://registry` (device registry), `android://skills` (skill catalogue), `android://capabilities` (capability vocabulary)114- Prompts: `control_device` (operate a specific device), `phone_touchpad` (phone as PC touchpad)115116## Workflow for a small model117118Follow this exact order. Do not skip to an action tool before step 3.1191201. **LIST** — call `list_devices` (and `discover` if it is empty). NEVER guess a121 serial from context; require it from the listing.1222. **PICK** — if more than one device is returned, name the serials and ask the123 user (or use the one they specified). Save the serial.1243. **CHECK** — call `status` with that serial, then `verify`. It must report125 connected/healthy before you act on it.1264. **ACT** — pick the row from the tables above that matches the request and127 call exactly that tool. Add `confirm=true` on every mutating tool.1285. **CLOSE** — after mutating, re-check with `status` or `ui_read`/screenshot so129 the result is evidence-backed. Report what changed.130131## If something fails132133- Offline / unknown device -> `discover` again, then `reconnect` with the serial.134- Still stuck -> `device_info` + `shell` (`getprop ro.build.version.release`,135 `pm list packages` are safe probes) to diagnose before retrying.136- Do NOT retry a mutating tool with different parameters after a refusal.137 Report the refusal and ask what to do instead.138139## Load the detail skills140141Each area has a deeper skill with worked examples. Load the matching one when142you need detail, otherwise the tables above are enough:143144- `android-adb` — ADB server/version/connect/pair145- `android-apps` — apps146- `android-discovery` — discovering devices147- `android-input` — taps, swipes, keys, text148- `android-screen` — screenshots, recording149- `android-ui` — semantic UI find/click/type150- `android-files` — file transfer151- `android-intents` — intents, URLs, settings152- `android-messaging` — agent<->device messages153- `android-device-info` — full device profile154- `android-shell` — checked shell commands155- `android-vision` — visual fallback observation156- `android-multi-device` — fleets, groups, parallel control157- `android-recovery` — reconnect and self-heal158- `android-remote-touchpad` — phone as PC touchpad