# All 49 Aster MCP tools, with arguments

> All 49 aster_* MCP tools with their exact names and arguments, plus the separate catalogue of 77 unprefixed actions the Android app dispatches on-device.

Aster here is the open-source Model Context Protocol server and Android companion app for AI-driven phone control, published on npm as aster-mcp. It is unrelated to Aster DM Healthcare, Aster Data Systems or the ASTER instrument on NASA’s Terra satellite.

Source: https://aster.matterwardlabs.com/tools/ · Part of Aster (https://github.com/satyajiit/aster-mcp) · Last generated 2026-09-13

Every tool below is registered by the MCP server with the `aster_` prefix. The callable name is `aster_take_screenshot`; `take_screenshot` alone will not resolve.

49 tools over 8 categories. The on-device MCP server and the Binder IPC surface expose a DIFFERENT set of 77 unprefixed actions; that catalogue is listed in full after this one, and the transports are traced in https://aster.matterwardlabs.com/architecture/.

## Which catalogue you get, by connection mode

Tool counts are surface-specific: the mode decides which of the two catalogues below is on the wire.

- **Remote WebSocket** (Default) — The phone holds a WebSocket to the Node server on your machine; your AI client speaks MCP over HTTP to that same server. Tools: aster_* (49 tools)
- **On-device MCP server** (Standalone) — The app runs its own Streamable-HTTP MCP server (Ktor, default port 8080) on the phone. No desktop server involved. Tools: unprefixed actions (77 in the on-device catalog)
- **Binder IPC** (Same device) — An agent running on the same phone — such as OpenAlly — calls Aster directly over Android Binder IPC, with no network hop. Tools: unprefixed actions (77 in the on-device catalog)

## Screen and input

Read what is on screen through the accessibility tree, then drive it back with taps, swipes and typed text.

| Tool | Arguments | What it does |
|---|---|---|
| `aster_take_screenshot` | `deviceId` | Capture the current screen as an image. |
| `aster_get_screen_hierarchy` | `deviceId`, `mode` (optional), `maxDepth` (optional), `includeInvisible` (optional), `searchText` (optional) | Return the accessibility node tree of the current screen, with filters to keep the payload small. |
| `aster_find_element` | `deviceId`, `text`, `exact` (optional) | Locate UI elements by text or content description, without pulling the whole hierarchy. |
| `aster_input_gesture` | `deviceId`, `gestureType`, `points`, `duration` (optional) | Perform a tap, swipe or long press on the screen. |
| `aster_input_text` | `deviceId`, `text` | Type text into the currently focused field. |
| `aster_click_by_text` | `deviceId`, `text` | Find and click an element by its text or content description in one call. |
| `aster_click_by_id` | `deviceId`, `viewId` | Click an element by its view ID resource name. |

## Navigation and apps

Move around the system, launch apps and intents, and take inventory of what is installed.

| Tool | Arguments | What it does |
|---|---|---|
| `aster_global_action` | `deviceId`, `action` | Trigger a global navigation action such as BACK, HOME or RECENTS. |
| `aster_launch_intent` | `deviceId`, `packageName` (optional), `action` (optional), `data` (optional) | Launch an app, or fire an Android intent, on the device. |
| `aster_list_packages` | `deviceId`, `includeSystem` (optional) | List installed Android packages, optionally including system ones. |
| `aster_list_installed_apps` | `deviceId`, `includeSystem` (optional), `cursor` (optional), `limit` (optional) | Page through installed apps with full metadata: label, version, install and update time, on-disk size, declared permissions, and last-used time when Usage access is granted. |
| `aster_execute_shell` | `deviceId`, `command` | Run a shell command inside the app sandbox as an unprivileged process — no root, a 30-second timeout and a 1 MB output cap, with no access to system files or other apps’ data. |

## Files and storage

Browse, read and write files, and work out where the storage actually went.

| Tool | Arguments | What it does |
|---|---|---|
| `aster_list_files` | `deviceId`, `path` | List the files and directories at a path. |
| `aster_read_file` | `deviceId`, `path` | Read the contents of a file on the device. |
| `aster_write_file` | `deviceId`, `path`, `content` | Write content to a file on the device. |
| `aster_delete_file` | `deviceId`, `path` | Delete a file from the device. |
| `aster_analyze_storage` | `deviceId`, `path` (optional), `maxDepth` (optional), `minSizeMB` (optional), `includeHidden` (optional) | Break storage down by directory and file type and flag the large files, as statistics an assistant can reason over. |
| `aster_find_large_files` | `deviceId`, `minSizeMB`, `path` (optional), `fileTypes` (optional), `limit` (optional) | Fast search for large files, with an optional file-type filter. |

## Media and camera

Search the photo and video library by meaning or by metadata, and capture new media on demand.

| Tool | Arguments | What it does |
|---|---|---|
| `aster_search_media` | `deviceId`, `query` (optional), `path` (optional), `dateFrom` (optional), `dateTo` (optional), `location` (optional), `fileTypes` (optional), `minSizeMB` (optional), `maxSizeMB` (optional), `cameraModel` (optional), `sortBy` (optional), `limit` (optional) | Search media with a natural-language query or explicit filters — "photos from last year same month", "pictures taken at mumbai" — or both together. |
| `aster_index_media_metadata` | `deviceId`, `path` (optional), `includeLocation` (optional), `includeExif` (optional), `limit` (optional) | Scan photos and videos recursively and extract EXIF: date taken, GPS location, camera and dimensions. |
| `aster_take_photo` | `deviceId`, `camera` (optional), `quality` (optional) | Capture a photo with the device camera at 1280x720 and return the image. |
| `aster_record_video` | `deviceId`, `camera` (optional), `maxDuration` (optional) | Record up to 8 seconds at 480p with no audio; returns a base64 MP4 under 5 MB, otherwise a file path. |

## Communication

Notifications, SMS and phone calls — the surfaces a phone is actually for.

| Tool | Arguments | What it does |
|---|---|---|
| `aster_read_notifications` | `deviceId`, `limit` (optional) | Read the notifications currently sitting in the shade. |
| `aster_read_sms` | `deviceId`, `limit` (optional), `threadId` (optional), `sinceDate` (optional) | Read SMS messages, filterable by conversation thread and date. |
| `aster_send_sms` | `deviceId`, `number`, `message` | Send an SMS text message to a phone number. |
| `aster_post_notification` | `deviceId`, `title`, `body`, `actions` (optional) | Post a notification on the device. |
| `aster_make_call` | `deviceId`, `number` | Place a phone call. |
| `aster_make_call_with_voice` | `deviceId`, `number`, `text`, `waitSeconds` (optional) | Place a call and speak text over the loudspeaker. The audio is acoustic coupling — the loudspeaker plays into the call microphone, it is not routed into the call audio — so it works best in a quiet room and quality is device-dependent. |

## Contacts

Search, page through and prune the device address book.

| Tool | Arguments | What it does |
|---|---|---|
| `aster_search_contacts` | `deviceId`, `name` (optional), `number` (optional), `limit` (optional) | Search contacts by name or phone number; each match comes back with all of its numbers and emails. |
| `aster_list_contacts_full` | `deviceId`, `cursor` (optional), `limit` (optional) | Page through the whole address book — numbers, emails and account type per contact — with a cursor, for indexing. |
| `aster_delete_contacts` | `deviceId`, `ids` | Delete contacts by id. Requires WRITE_CONTACTS and returns the count deleted plus a per-id failure list. |

## Audio and alarms

Speak, play and silence audio, control the individual volume streams, and manage the clock app’s alarms.

| Tool | Arguments | What it does |
|---|---|---|
| `aster_speak_tts` | `deviceId`, `text` | Speak text through the device text-to-speech engine. |
| `aster_play_audio` | `deviceId`, `source` | Play audio from a URL or from base64 data. |
| `aster_stop_audio` | `deviceId` | Stop the audio currently playing on the device. |
| `aster_vibrate` | `deviceId`, `pattern` | Vibrate the device with a custom pattern. |
| `aster_get_volume` | `deviceId` | Read every stream level — media, ring, notification, alarm, call, system — along with the ringer mode. |
| `aster_set_volume` | `deviceId`, `stream`, `level` (optional), `mute` (optional) | Set the level, or mute and unmute, for one audio stream. |
| `aster_get_alarms` | `deviceId` | List alarms from the stock clock provider, falling back to next-alarm-only. Not every OEM exposes the full list. |
| `aster_set_alarm` | `deviceId`, `hour`, `minute`, `message` (optional), `days` (optional), `skipUi` (optional) | Create an alarm through the device clock app. Android exposes no standard way to edit one, so changing an alarm means creating another. |
| `aster_dismiss_alarm` | `deviceId` | Dismiss an alarm while it is actually ringing. Does nothing otherwise; needs Android 6.0 or newer. |
| `aster_delete_alarm` | `deviceId`, `alarmId` | Delete a saved alarm by id, on devices whose clock content provider is reachable (stock Android, Samsung). |

## Device and UI

Device state — battery, location, clipboard — plus the overlay and toast surfaces Aster can draw on top of whatever is running.

| Tool | Arguments | What it does |
|---|---|---|
| `aster_list_devices` | _none_ | List every paired device with its connection status and basic details. |
| `aster_get_device_info` | `deviceId` | Report one device’s battery, storage and system specifications. |
| `aster_get_battery` | `deviceId` | Return detailed battery information and statistics. |
| `aster_get_location` | `deviceId` | Get the current GPS or network location of the device. |
| `aster_get_clipboard` | `deviceId` | Read the device clipboard. Android 10 and later only let the foreground app read it, so a backgrounded Aster reports an empty clipboard rather than the real contents. |
| `aster_set_clipboard` | `deviceId`, `text` | Copy text to the device clipboard. |
| `aster_show_overlay` | `deviceId`, `url` (optional), `html` (optional), `showCloseButton` (optional), `timeout` (optional) | Draw a system overlay containing web content, with an optional close button and auto-timeout. |
| `aster_show_toast` | `deviceId`, `message`, `duration` (optional) | Show a toast message on the device. |

## Flat list

- `aster_take_screenshot` — deviceId
- `aster_get_screen_hierarchy` — deviceId, mode?, maxDepth?, includeInvisible?, searchText?
- `aster_find_element` — deviceId, text, exact?
- `aster_input_gesture` — deviceId, gestureType, points, duration?
- `aster_input_text` — deviceId, text
- `aster_click_by_text` — deviceId, text
- `aster_click_by_id` — deviceId, viewId
- `aster_global_action` — deviceId, action
- `aster_launch_intent` — deviceId, packageName?, action?, data?
- `aster_list_packages` — deviceId, includeSystem?
- `aster_list_installed_apps` — deviceId, includeSystem?, cursor?, limit?
- `aster_execute_shell` — deviceId, command
- `aster_list_files` — deviceId, path
- `aster_read_file` — deviceId, path
- `aster_write_file` — deviceId, path, content
- `aster_delete_file` — deviceId, path
- `aster_analyze_storage` — deviceId, path?, maxDepth?, minSizeMB?, includeHidden?
- `aster_find_large_files` — deviceId, minSizeMB, path?, fileTypes?, limit?
- `aster_search_media` — deviceId, query?, path?, dateFrom?, dateTo?, location?, fileTypes?, minSizeMB?, maxSizeMB?, cameraModel?, sortBy?, limit?
- `aster_index_media_metadata` — deviceId, path?, includeLocation?, includeExif?, limit?
- `aster_take_photo` — deviceId, camera?, quality?
- `aster_record_video` — deviceId, camera?, maxDuration?
- `aster_read_notifications` — deviceId, limit?
- `aster_read_sms` — deviceId, limit?, threadId?, sinceDate?
- `aster_send_sms` — deviceId, number, message
- `aster_post_notification` — deviceId, title, body, actions?
- `aster_make_call` — deviceId, number
- `aster_make_call_with_voice` — deviceId, number, text, waitSeconds?
- `aster_search_contacts` — deviceId, name?, number?, limit?
- `aster_list_contacts_full` — deviceId, cursor?, limit?
- `aster_delete_contacts` — deviceId, ids
- `aster_speak_tts` — deviceId, text
- `aster_play_audio` — deviceId, source
- `aster_stop_audio` — deviceId
- `aster_vibrate` — deviceId, pattern
- `aster_get_volume` — deviceId
- `aster_set_volume` — deviceId, stream, level?, mute?
- `aster_get_alarms` — deviceId
- `aster_set_alarm` — deviceId, hour, minute, message?, days?, skipUi?
- `aster_dismiss_alarm` — deviceId
- `aster_delete_alarm` — deviceId, alarmId
- `aster_list_devices`
- `aster_get_device_info` — deviceId
- `aster_get_battery` — deviceId
- `aster_get_location` — deviceId
- `aster_get_clipboard` — deviceId
- `aster_set_clipboard` — deviceId, text
- `aster_show_overlay` — deviceId, url?, html?, showCloseButton?, timeout?
- `aster_show_toast` — deviceId, message, duration?

## The on-device catalogue — 77 unprefixed actions

A second, different catalogue. These are the actions the Android app dispatches itself, reachable two ways and both on the phone: an app on the same device over Binder IPC (OpenAlly, for example), or the on-device Ktor MCP server. They carry NO `aster_` prefix — the wire name is the name below.

Neither catalogue contains the other. 48 names appear in both; 29 of the actions below cannot be reached from an MCP client at all; exactly 1 server tool (`aster_list_devices`) has no on-device action behind it, because brokering between phones is meaningless on the phone itself.

The "From MCP" column carries the `aster_` tool that dispatches the action, or "on-device only" when nothing does. Note `click_by_view_id`, which an MCP client calls as `aster_click_by_id`: a rename, not a second capability.

### Screen Control

| Action | What it does | From MCP |
|---|---|---|
| `click_by_text` | Find and tap element by visible text | `aster_click_by_text` |
| `click_by_view_id` | Find and tap element by view ID | `aster_click_by_id` |
| `find_element` | Search for UI elements by text | `aster_find_element` |
| `get_screen_hierarchy` | Read the UI accessibility tree | `aster_get_screen_hierarchy` |
| `global_action` | Home, back, recents, and other system actions | `aster_global_action` |
| `input_gesture` | Tap, swipe, or long-press on screen | `aster_input_gesture` |
| `input_text` | Type text into focused input field | `aster_input_text` |
| `long_press` | Long-press an element by ref or coordinates | on-device only |
| `observe` | Indexed actionable-element view of the current screen with stable refs; falls back to on-device OCR when the accessibility tree is sparse | on-device only |
| `perform` | Invoke an accessibility action on an element by ref | on-device only |
| `press_key` | Press a hardware/IME key (Enter, Back, Tab, arrows…) | on-device only |
| `screen_approve` | Put a blocking approve/deny card on screen and wait for the owner to decide. | on-device only |
| `screen_capability` | Read-only preflight: reports whether the accessibility service is enabled and bound before an automation run starts. | on-device only |
| `screen_handoff` | Park an automation run at a step only a person should do — a payment, say — and show why. | on-device only |
| `screen_prompt` | Put a blocking choice on screen and wait for the owner to pick. One prompt in flight at a time. | on-device only |
| `screen_signin_wait` | Park an automation run at a login or register wall and wait for the owner to finish. | on-device only |
| `scroll` | Scroll in any direction | on-device only |
| `set_text` | Type text into a specific field by ref (replace or append) | on-device only |
| `set_toggle` | Set a switch or checkbox on/off by ref | on-device only |
| `take_screenshot` | Capture screen as JPEG; optional annotate adds numbered boxes (Set-of-Marks) | `aster_take_screenshot` |
| `tap` | Tap an element by ref or coordinates | on-device only |
| `wait_for` | Wait until an element appears or disappears | on-device only |
| `wait_for_idle` | Wait until the screen stops changing | on-device only |

### Device

| Action | What it does | From MCP |
|---|---|---|
| `get_battery` | Battery level, charging status, and health | `aster_get_battery` |
| `get_device_info` | Model, OS, RAM, storage, and hardware details | `aster_get_device_info` |
| `get_location` | Current GPS coordinates and location data | `aster_get_location` |

### Files

| Action | What it does | From MCP |
|---|---|---|
| `delete_file` | Delete files or directories | `aster_delete_file` |
| `files.list` | List a folder the owner approved for an app (App Builder host-dir) | on-device only |
| `files.read` | Read a file from an owner-approved folder (App Builder host-dir) | on-device only |
| `list_files` | Browse files and folders with metadata | `aster_list_files` |
| `read_file` | Read text or binary file contents | `aster_read_file` |
| `write_file` | Create or overwrite files on device | `aster_write_file` |

### Camera

| Action | What it does | From MCP |
|---|---|---|
| `record_video` | Record short video clip from camera | `aster_record_video` |
| `take_photo` | Capture photo from front or back camera | `aster_take_photo` |

### Communication

| Action | What it does | From MCP |
|---|---|---|
| `count_sms` | Count messages in a date window | on-device only |
| `delete_contacts` | Delete contacts from the address book by id. Requires WRITE_CONTACTS. | `aster_delete_contacts` |
| `list_contacts_full` | Page through the whole address book — every number, email and account type. | `aster_list_contacts_full` |
| `make_call` | Initiate a phone call | `aster_make_call` |
| `make_call_with_voice` | Call and speak text when answered | `aster_make_call_with_voice` |
| `read_sms` | Read inbox, sent, or all messages | `aster_read_sms` |
| `search_contacts` | Find contacts by name or phone number | `aster_search_contacts` |
| `send_sms` | Send text messages | `aster_send_sms` |

### Notifications

| Action | What it does | From MCP |
|---|---|---|
| `dismiss_all_notifications` | Clear all active notifications | on-device only |
| `dismiss_notification` | Dismiss a specific notification | on-device only |
| `post_notification` | Show a local notification | `aster_post_notification` |
| `read_notifications` | Get active and recent notifications | `aster_read_notifications` |

### Media

| Action | What it does | From MCP |
|---|---|---|
| `get_now_playing` | Read the currently-playing track (title, artist, source app) from the OS media sessions; reuses notification access, no extra permission | on-device only |
| `play_audio` | Play audio from URL, file, or data | `aster_play_audio` |
| `speak_tts` | Speak text aloud using TTS engine | `aster_speak_tts` |
| `stop_audio` | Stop current audio playback | `aster_stop_audio` |
| `vibrate` | Vibrate with custom patterns | `aster_vibrate` |

### Storage

| Action | What it does | From MCP |
|---|---|---|
| `analyze_storage` | Disk usage breakdown by directory and type | `aster_analyze_storage` |
| `find_large_files` | Find files above a size threshold | `aster_find_large_files` |
| `index_media_metadata` | Index photos/videos with EXIF and GPS | `aster_index_media_metadata` |
| `search_media` | Search by date, location, type, or camera | `aster_search_media` |

### Apps

| Action | What it does | From MCP |
|---|---|---|
| `launch_intent` | Launch apps or custom Android intents | `aster_launch_intent` |
| `list_installed_apps` | Installed apps with package, version, install time, sizes, declared permissions and last-used time. | `aster_list_installed_apps` |
| `list_packages` | List all apps with version info | `aster_list_packages` |

### System

| Action | What it does | From MCP |
|---|---|---|
| `execute_shell` | Run commands in app sandbox | `aster_execute_shell` |
| `get_clipboard` | Read current clipboard content | `aster_get_clipboard` |
| `get_volume` | Volume levels for all audio streams | `aster_get_volume` |
| `screen_set_policy` | Receive the owner's per-app screen-control allow/deny list from OpenAlly | on-device only |
| `set_clipboard` | Copy text to clipboard | `aster_set_clipboard` |
| `set_volume` | Adjust volume or mute audio streams | `aster_set_volume` |
| `show_toast` | Show a brief on-screen message | `aster_show_toast` |

### Overlays

| Action | What it does | From MCP |
|---|---|---|
| `companion_overlay_hide` | Take down OpenAlly's ambient companion face | on-device only |
| `companion_overlay_recompute` | Recompute the companion face's position around the camera cutout | on-device only |
| `companion_overlay_show` | Draw OpenAlly's ambient companion face beside the camera cutout | on-device only |
| `companion_overlay_status` | Whether Aster can draw over other apps, and whether OpenAlly's companion face is up | on-device only |
| `hide_all_overlays` | Remove all active overlays | on-device only |
| `hide_overlay` | Hide a specific floating overlay | on-device only |
| `list_overlays` | List active overlay IDs | on-device only |
| `show_overlay` | Display floating HTML overlay on screen | `aster_show_overlay` |

### Alarms

| Action | What it does | From MCP |
|---|---|---|
| `delete_alarm` | Remove a saved alarm | `aster_delete_alarm` |
| `dismiss_alarm` | Stop a ringing alarm | `aster_dismiss_alarm` |
| `get_alarms` | View scheduled alarms | `aster_get_alarms` |
| `set_alarm` | Create a new alarm | `aster_set_alarm` |
