android-use
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| check_deviceA | Check that a phone is reachable and report what it is. Call this first if anything seems wrong. Connects over Wi-Fi automatically if it can. |
| list_devicesA | Find phones that could be added: devices on your tailnet running the client app. This is the normal way to discover a phone. ADB is only relevant while setting a phone up from this machine; use list_adb_devices if you specifically need that. |
| list_adb_devicesA | Phones reachable over ADB from this machine - cable or wireless debugging. Only useful while setting a phone up locally. Day-to-day the phones are reached over the network, not ADB. |
| pair_wirelessA | Pair with a phone over Wi-Fi, once, so no cable is needed afterwards. On the phone: Settings > Developer options > Wireless debugging > 'Pair device with pairing code'. Pass the ip:port and the 6-digit code it shows. Note that the pairing port differs from the connection port. |
| enable_wirelessA | Switch a cabled phone over to Wi-Fi so the cable can be unplugged. Needs the phone plugged in for this one step, but no pairing code. Use this when the user wants to stop using the cable. It does not survive a phone reboot - pair_wireless does. |
| connect_wirelessA | Connect to an already-paired phone over Wi-Fi. Use after the phone reboots or wireless debugging is toggled - the port changes each time, so this rediscovers it. |
| disconnect_wirelessA | Drop the wireless connection. The pairing is remembered, so connect_wireless will reconnect without pairing again. |
| get_screenA | Read what is currently on the phone screen, as a numbered list of tappable elements. This is the main way to see the phone - call it before acting, and after anything unexpected. |
| take_screenshotA | Take a picture of the phone screen. Use this when get_screen doesn't show what you need - videos, games, photos, or custom-drawn interfaces. |
| tapA | Tap an element by its number from get_screen. This is the normal way to tap - the index comes straight from the last get_screen listing. |
| tap_textA | Tap the element whose label matches this text. Use when you know what the button says but not its index. |
| tap_coordinatesA | Tap an exact pixel position. Only use this when an element has no index - for example something you found in a screenshot. |
| scrollA | Scroll the screen: 'down' to see what is further down the page, 'up' to go back, or 'left'/'right' to move between pages. |
| type_textB | Type text into the field that is currently focused. Tap a text field first. |
| press_keyC | Press a hardware or system key. Common ones: back, home, recents, enter, delete, volume_up, volume_down. |
| wake_screenA | Wake the phone and dismiss a simple swipe lock. A PIN, pattern or fingerprint lock cannot be bypassed - the user must unlock it themselves. |
| list_appsB | List the apps installed on the phone and which ones this server is allowed to open. |
| open_appA | Open an app by name, e.g. 'youtube' or 'chrome'. Only apps on the allowlist can be opened - call list_apps to see them. |
| open_settingsA | Jump straight to a Settings page instead of navigating there by hand. Pages: wifi, mobile_data, network, airplane_mode, hotspot, bluetooth, display, sound, battery, storage, apps, location, security, accessibility, date_time, language, privacy, notifications, about_phone, settings_home. |
| check_internetA | Diagnose the phone's internet connection without touching the screen. Start here for 'my internet isn't working' - it shows whether the radios are on, whether traffic flows, and whether DNS resolves. |
| chrome_tabsA | List the tabs open in Chrome on the phone. Use the ids with the other chrome_ tools; most of them default to the most recent tab. |
| chrome_readA | Read a page in Chrome as structured content: its text plus a numbered list of links, buttons and fields. This is the web equivalent of get_screen, and far more reliable than reading the page off a screenshot. |
| chrome_openC | Open a URL in a new Chrome tab on the phone. |
| chrome_navigateC | Point an existing Chrome tab at a different URL. |
| chrome_clickB | Click an element by its number from chrome_read. |
| chrome_typeA | Type into a field in Chrome. Give the field's number from chrome_read, or omit it to type into whatever is already focused. Unlike the phone's own keyboard, this handles any language and emoji. |
| chrome_javascriptA | Run JavaScript in a Chrome tab and return the result. Use for anything the other chrome_ tools do not cover - extracting data, submitting a form, scrolling to an element. |
| chrome_close_tabB | Close a Chrome tab by its id from chrome_tabs. |
| phone_healthB | Check whether the phone is reachable and why not, if not. Worth calling first when something stops working: the accessibility service can be switched off by the system without warning, and the failure looks like a network problem until you look. |
| watchdog_reportA | Show what the background watchdog last saw, including when the phone went down and whether a repair was attempted. Use this to answer 'has the phone been reachable?' without poking the phone right now. |
| repair_phoneA | Put the phone's accessibility service back when it has been switched off. Android periodically revokes accessibility access from apps it did not install. The phone can re-enable its own service, so this works over any network including cellular - no cable, and nobody has to touch the phone. |
| list_phonesA | List the phones this server can drive, and whether each is reachable. Every other tool takes an optional |
| use_phoneA | Set which phone the other tools act on when no device is named. This changes the default for everyone using this server, so prefer naming the phone per call when you are switching between them. |
| discover_phonesA | Look for phones on your tailnet that are running the client app. Finds Android devices on the tailnet and checks whether each answers on the bridge port. A phone found here still needs its pairing token before it can be driven - read that from the Android Use app on the phone itself. |
| add_phoneA | Register a phone so it can be driven by name.
|
| forget_phoneB | Remove a phone from the registry. The phone itself is left untouched. |
| lock_phoneA | Work on one phone only, until unlocked. Every tool then acts on this phone, and a request naming a different one is refused rather than redirected. Use this when helping one person, so a misread instruction cannot reach somebody else's phone. |
| unlock_phoneB | Stop working on just one phone, so all registered phones are usable again. |
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 38 tools
Most tools are clearly separated by domain (device discovery, connection, UI interaction, Chrome, phone management), but some overlap exists: check_device, phone_health, and watchdog_report all diagnose reachability, and unlock_phone/lock_phone are inverse operations that could be confused with disconnect_wireless. The descriptions help, but a few boundaries are fuzzy.
The naming is predominantly verb_noun (check_device, list_devices, tap_text, open_app, chrome_read), with a consistent style. Minor deviations: 'watchdog_report' is noun-ish, 'use_phone' and 'lock_phone' are less descriptive, and the chrome_* prefix is a clear sub-pattern. Overall predictable and readable.
38 tools is on the heavy side for a single server, though the scope is broad (device management, UI automation, Chrome automation, phone registry). The count feels bloated because several tools could be merged (e.g., check_device/phone_health/watchdog_report, or the wireless pairing cluster), but each tool does have a distinct function.
The server covers the full lifecycle: discovery, pairing, connection, screen interaction, app control, Chrome automation, and phone registry management. Minor gaps: no explicit tool for swiping/long-press, no way to get device logs, and no tool to manage the allowlist for open_app, but the core workflows are well covered.