Tool catalogue

All 49 Aster MCP tools

This is the full set an MCP client sees when it connects to the Aster server over HTTP: every tool the AI can call on a paired Android 8.0+ (API 26) phone, across 8 categories, with the exact name it must send.

MCP tools/call
{
  "method": "tools/call",
  "params": {
    "name": "aster_take_screenshot",
    "arguments": { "deviceId": "<your-device-id>" }
  }
}
MCP tools

49 tools, grouped by what they touch

Every tool is registered with the aster_ prefix, so the callable name is aster_take_screenshottake_screenshot on its own will not resolve.

Screen and input (7)

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

  • aster_take_screenshot

    Capture the current screen as an image.

    Arguments: deviceId (required)

  • aster_get_screen_hierarchy

    Return the accessibility node tree of the current screen, with filters to keep the payload small.

    Arguments: deviceId (required)mode (optional)maxDepth (optional)includeInvisible (optional)searchText (optional)

  • aster_find_element

    Locate UI elements by text or content description, without pulling the whole hierarchy.

    Arguments: deviceId (required)text (required)exact (optional)

  • aster_input_gesture

    Perform a tap, swipe or long press on the screen.

    Arguments: deviceId (required)gestureType (required)points (required)duration (optional)

  • aster_input_text

    Type text into the currently focused field.

    Arguments: deviceId (required)text (required)

  • aster_click_by_text

    Find and click an element by its text or content description in one call.

    Arguments: deviceId (required)text (required)

  • aster_click_by_id

    Click an element by its view ID resource name.

    Arguments: deviceId (required)viewId (required)

Navigation and apps (5)

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

  • aster_global_action

    Trigger a global navigation action such as BACK, HOME or RECENTS.

    Arguments: deviceId (required)action (required)

  • aster_launch_intent

    Launch an app, or fire an Android intent, on the device.

    Arguments: deviceId (required)packageName (optional)action (optional)data (optional)

  • aster_list_packages

    List installed Android packages, optionally including system ones.

    Arguments: deviceId (required)includeSystem (optional)

  • aster_list_installed_apps

    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.

    Arguments: deviceId (required)includeSystem (optional)cursor (optional)limit (optional)

  • aster_execute_shell

    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.

    Arguments: deviceId (required)command (required)

Files and storage (6)

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

  • aster_list_files

    List the files and directories at a path.

    Arguments: deviceId (required)path (required)

  • aster_read_file

    Read the contents of a file on the device.

    Arguments: deviceId (required)path (required)

  • aster_write_file

    Write content to a file on the device.

    Arguments: deviceId (required)path (required)content (required)

  • aster_delete_file

    Delete a file from the device.

    Arguments: deviceId (required)path (required)

  • aster_analyze_storage

    Break storage down by directory and file type and flag the large files, as statistics an assistant can reason over.

    Arguments: deviceId (required)path (optional)maxDepth (optional)minSizeMB (optional)includeHidden (optional)

  • aster_find_large_files

    Fast search for large files, with an optional file-type filter.

    Arguments: deviceId (required)minSizeMB (required)path (optional)fileTypes (optional)limit (optional)

Media and camera (4)

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

  • aster_search_media

    Search media with a natural-language query or explicit filters — "photos from last year same month", "pictures taken at mumbai" — or both together.

    Arguments: deviceId (required)query (optional)path (optional)dateFrom (optional)dateTo (optional)location (optional)fileTypes (optional)minSizeMB (optional)maxSizeMB (optional)cameraModel (optional)sortBy (optional)limit (optional)

  • aster_index_media_metadata

    Scan photos and videos recursively and extract EXIF: date taken, GPS location, camera and dimensions.

    Arguments: deviceId (required)path (optional)includeLocation (optional)includeExif (optional)limit (optional)

  • aster_take_photo

    Capture a photo with the device camera at 1280x720 and return the image.

    Arguments: deviceId (required)camera (optional)quality (optional)

  • aster_record_video

    Record up to 8 seconds at 480p with no audio; returns a base64 MP4 under 5 MB, otherwise a file path.

    Arguments: deviceId (required)camera (optional)maxDuration (optional)

Communication (6)

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

  • aster_read_notifications

    Read the notifications currently sitting in the shade.

    Arguments: deviceId (required)limit (optional)

  • aster_read_sms

    Read SMS messages, filterable by conversation thread and date.

    Arguments: deviceId (required)limit (optional)threadId (optional)sinceDate (optional)

  • aster_send_sms

    Send an SMS text message to a phone number.

    Arguments: deviceId (required)number (required)message (required)

  • aster_post_notification

    Post a notification on the device.

    Arguments: deviceId (required)title (required)body (required)actions (optional)

  • aster_make_call

    Place a phone call.

    Arguments: deviceId (required)number (required)

  • aster_make_call_with_voice

    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.

    Arguments: deviceId (required)number (required)text (required)waitSeconds (optional)

Contacts (3)

Search, page through and prune the device address book.

  • aster_search_contacts

    Search contacts by name or phone number; each match comes back with all of its numbers and emails.

    Arguments: deviceId (required)name (optional)number (optional)limit (optional)

  • aster_list_contacts_full

    Page through the whole address book — numbers, emails and account type per contact — with a cursor, for indexing.

    Arguments: deviceId (required)cursor (optional)limit (optional)

  • aster_delete_contacts

    Delete contacts by id. Requires WRITE_CONTACTS and returns the count deleted plus a per-id failure list.

    Arguments: deviceId (required)ids (required)

Audio and alarms (10)

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

  • aster_speak_tts

    Speak text through the device text-to-speech engine.

    Arguments: deviceId (required)text (required)

  • aster_play_audio

    Play audio from a URL or from base64 data.

    Arguments: deviceId (required)source (required)

  • aster_stop_audio

    Stop the audio currently playing on the device.

    Arguments: deviceId (required)

  • aster_vibrate

    Vibrate the device with a custom pattern.

    Arguments: deviceId (required)pattern (required)

  • aster_get_volume

    Read every stream level — media, ring, notification, alarm, call, system — along with the ringer mode.

    Arguments: deviceId (required)

  • aster_set_volume

    Set the level, or mute and unmute, for one audio stream.

    Arguments: deviceId (required)stream (required)level (optional)mute (optional)

  • aster_get_alarms

    List alarms from the stock clock provider, falling back to next-alarm-only. Not every OEM exposes the full list.

    Arguments: deviceId (required)

  • aster_set_alarm

    Create an alarm through the device clock app. Android exposes no standard way to edit one, so changing an alarm means creating another.

    Arguments: deviceId (required)hour (required)minute (required)message (optional)days (optional)skipUi (optional)

  • aster_dismiss_alarm

    Dismiss an alarm while it is actually ringing. Does nothing otherwise; needs Android 6.0 or newer.

    Arguments: deviceId (required)

  • aster_delete_alarm

    Delete a saved alarm by id, on devices whose clock content provider is reachable (stock Android, Samsung).

    Arguments: deviceId (required)alarmId (required)

Device and UI (8)

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

  • aster_list_devices

    List every paired device with its connection status and basic details.

    No arguments.

  • aster_get_device_info

    Report one device’s battery, storage and system specifications.

    Arguments: deviceId (required)

  • aster_get_battery

    Return detailed battery information and statistics.

    Arguments: deviceId (required)

  • aster_get_location

    Get the current GPS or network location of the device.

    Arguments: deviceId (required)

  • aster_get_clipboard

    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.

    Arguments: deviceId (required)

  • aster_set_clipboard

    Copy text to the device clipboard.

    Arguments: deviceId (required)text (required)

  • aster_show_overlay

    Draw a system overlay containing web content, with an optional close button and auto-timeout.

    Arguments: deviceId (required)url (optional)html (optional)showCloseButton (optional)timeout (optional)

  • aster_show_toast

    Show a toast message on the device.

    Arguments: deviceId (required)message (required)duration (optional)

The on-device surface is a different set

The 49 aster_* tools above belong to the Node server. When the phone runs its own MCP server, or when an agent on the same phone calls in over Binder IPC, it exposes 77 unprefixed actions instead — a different catalogue, not a superset. 48 of the on-device actions are reachable from an MCP client and 29 are not (48 + 29 = 77); going the other way exactly 1 server tool has no on-device action behind it — aster_list_devices, which only means anything when a server is brokering several phones. (aster_click_by_id looks like a second one, but it is just the server's name for the device action click_by_view_id.)

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. 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. 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. unprefixed actions (77 in the on-device catalog)

How a command reaches the phone walks the three transports end to end, and explains which one you get by default.

All 77 on-device actions

Unprefixed, and dispatched by the phone itself — reachable two ways, both on the device: over Binder IPC from an app such as OpenAlly, or from the companion's own MCP server. 48 of them are also reachable from a remote MCP client; the other 29 are not. Each row below says which.

Screen Control 23

  • click_by_text

    Find and tap element by visible text

    Also as aster_click_by_text

  • click_by_view_id

    Find and tap element by view ID

    Also as aster_click_by_id

  • find_element

    Search for UI elements by text

    Also as aster_find_element

  • get_screen_hierarchy

    Read the UI accessibility tree

    Also as aster_get_screen_hierarchy

  • global_action

    Home, back, recents, and other system actions

    Also as aster_global_action

  • input_gesture

    Tap, swipe, or long-press on screen

    Also as aster_input_gesture

  • input_text

    Type text into focused input field

    Also as 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)

    Also as 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 3

  • get_battery

    Battery level, charging status, and health

    Also as aster_get_battery

  • get_device_info

    Model, OS, RAM, storage, and hardware details

    Also as aster_get_device_info

  • get_location

    Current GPS coordinates and location data

    Also as aster_get_location

Files 6

  • delete_file

    Delete files or directories

    Also as 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

    Also as aster_list_files

  • read_file

    Read text or binary file contents

    Also as aster_read_file

  • write_file

    Create or overwrite files on device

    Also as aster_write_file

Camera 2

  • record_video

    Record short video clip from camera

    Also as aster_record_video

  • take_photo

    Capture photo from front or back camera

    Also as aster_take_photo

Communication 8

  • count_sms

    Count messages in a date window

    On-device only

  • delete_contacts

    Delete contacts from the address book by id. Requires WRITE_CONTACTS.

    Also as aster_delete_contacts

  • list_contacts_full

    Page through the whole address book — every number, email and account type.

    Also as aster_list_contacts_full

  • make_call

    Initiate a phone call

    Also as aster_make_call

  • make_call_with_voice

    Call and speak text when answered

    Also as aster_make_call_with_voice

  • read_sms

    Read inbox, sent, or all messages

    Also as aster_read_sms

  • search_contacts

    Find contacts by name or phone number

    Also as aster_search_contacts

  • send_sms

    Send text messages

    Also as aster_send_sms

Notifications 4

  • 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

    Also as aster_post_notification

  • read_notifications

    Get active and recent notifications

    Also as aster_read_notifications

Media 5

  • 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

    Also as aster_play_audio

  • speak_tts

    Speak text aloud using TTS engine

    Also as aster_speak_tts

  • stop_audio

    Stop current audio playback

    Also as aster_stop_audio

  • vibrate

    Vibrate with custom patterns

    Also as aster_vibrate

Storage 4

  • analyze_storage

    Disk usage breakdown by directory and type

    Also as aster_analyze_storage

  • find_large_files

    Find files above a size threshold

    Also as aster_find_large_files

  • index_media_metadata

    Index photos/videos with EXIF and GPS

    Also as aster_index_media_metadata

  • search_media

    Search by date, location, type, or camera

    Also as aster_search_media

Apps 3

  • launch_intent

    Launch apps or custom Android intents

    Also as aster_launch_intent

  • list_installed_apps

    Installed apps with package, version, install time, sizes, declared permissions and last-used time.

    Also as aster_list_installed_apps

  • list_packages

    List all apps with version info

    Also as aster_list_packages

System 7

  • execute_shell

    Run commands in app sandbox

    Also as aster_execute_shell

  • get_clipboard

    Read current clipboard content

    Also as aster_get_clipboard

  • get_volume

    Volume levels for all audio streams

    Also as 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

    Also as aster_set_clipboard

  • set_volume

    Adjust volume or mute audio streams

    Also as aster_set_volume

  • show_toast

    Show a brief on-screen message

    Also as aster_show_toast

Overlays 8

  • 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

    Also as aster_show_overlay

Alarms 4

  • delete_alarm

    Remove a saved alarm

    Also as aster_delete_alarm

  • dismiss_alarm

    Stop a ringing alarm

    Also as aster_dismiss_alarm

  • get_alarms

    View scheduled alarms

    Also as aster_get_alarms

  • set_alarm

    Create a new alarm

    Also as aster_set_alarm