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.
{
"method": "tools/call",
"params": {
"name": "aster_take_screenshot",
"arguments": { "deviceId": "<your-device-id>" }
}
}49 tools, grouped by what they touch
Every tool is registered with the aster_ prefix, so the callable name is aster_take_screenshot — take_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_screenshotCapture the current screen as an image.
Arguments:
deviceId(required)aster_get_screen_hierarchyReturn 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_elementLocate UI elements by text or content description, without pulling the whole hierarchy.
Arguments:
deviceId(required)text(required)exact(optional)aster_input_gesturePerform a tap, swipe or long press on the screen.
Arguments:
deviceId(required)gestureType(required)points(required)duration(optional)aster_input_textType text into the currently focused field.
Arguments:
deviceId(required)text(required)aster_click_by_textFind and click an element by its text or content description in one call.
Arguments:
deviceId(required)text(required)aster_click_by_idClick 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_actionTrigger a global navigation action such as BACK, HOME or RECENTS.
Arguments:
deviceId(required)action(required)aster_launch_intentLaunch an app, or fire an Android intent, on the device.
Arguments:
deviceId(required)packageName(optional)action(optional)data(optional)aster_list_packagesList installed Android packages, optionally including system ones.
Arguments:
deviceId(required)includeSystem(optional)aster_list_installed_appsPage 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_shellRun 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_filesList the files and directories at a path.
Arguments:
deviceId(required)path(required)aster_read_fileRead the contents of a file on the device.
Arguments:
deviceId(required)path(required)aster_write_fileWrite content to a file on the device.
Arguments:
deviceId(required)path(required)content(required)aster_delete_fileDelete a file from the device.
Arguments:
deviceId(required)path(required)aster_analyze_storageBreak 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_filesFast 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_mediaSearch 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_metadataScan 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_photoCapture a photo with the device camera at 1280x720 and return the image.
Arguments:
deviceId(required)camera(optional)quality(optional)aster_record_videoRecord 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_notificationsRead the notifications currently sitting in the shade.
Arguments:
deviceId(required)limit(optional)aster_read_smsRead SMS messages, filterable by conversation thread and date.
Arguments:
deviceId(required)limit(optional)threadId(optional)sinceDate(optional)aster_send_smsSend an SMS text message to a phone number.
Arguments:
deviceId(required)number(required)message(required)aster_post_notificationPost a notification on the device.
Arguments:
deviceId(required)title(required)body(required)actions(optional)aster_make_callPlace a phone call.
Arguments:
deviceId(required)number(required)aster_make_call_with_voicePlace 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_contactsSearch 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_fullPage 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_contactsDelete 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_ttsSpeak text through the device text-to-speech engine.
Arguments:
deviceId(required)text(required)aster_play_audioPlay audio from a URL or from base64 data.
Arguments:
deviceId(required)source(required)aster_stop_audioStop the audio currently playing on the device.
Arguments:
deviceId(required)aster_vibrateVibrate the device with a custom pattern.
Arguments:
deviceId(required)pattern(required)aster_get_volumeRead every stream level — media, ring, notification, alarm, call, system — along with the ringer mode.
Arguments:
deviceId(required)aster_set_volumeSet the level, or mute and unmute, for one audio stream.
Arguments:
deviceId(required)stream(required)level(optional)mute(optional)aster_get_alarmsList alarms from the stock clock provider, falling back to next-alarm-only. Not every OEM exposes the full list.
Arguments:
deviceId(required)aster_set_alarmCreate 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_alarmDismiss an alarm while it is actually ringing. Does nothing otherwise; needs Android 6.0 or newer.
Arguments:
deviceId(required)aster_delete_alarmDelete 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_devicesList every paired device with its connection status and basic details.
No arguments.
aster_get_device_infoReport one device’s battery, storage and system specifications.
Arguments:
deviceId(required)aster_get_batteryReturn detailed battery information and statistics.
Arguments:
deviceId(required)aster_get_locationGet the current GPS or network location of the device.
Arguments:
deviceId(required)aster_get_clipboardRead 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_clipboardCopy text to the device clipboard.
Arguments:
deviceId(required)text(required)aster_show_overlayDraw 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_toastShow 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_textFind and tap element by visible text
Also as
aster_click_by_textclick_by_view_idFind and tap element by view ID
Also as
aster_click_by_idfind_elementSearch for UI elements by text
Also as
aster_find_elementget_screen_hierarchyRead the UI accessibility tree
Also as
aster_get_screen_hierarchyglobal_actionHome, back, recents, and other system actions
Also as
aster_global_actioninput_gestureTap, swipe, or long-press on screen
Also as
aster_input_gestureinput_textType text into focused input field
Also as
aster_input_textlong_pressLong-press an element by ref or coordinates
On-device only
observeIndexed 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
performInvoke an accessibility action on an element by ref
On-device only
press_keyPress a hardware/IME key (Enter, Back, Tab, arrows…)
On-device only
screen_approvePut a blocking approve/deny card on screen and wait for the owner to decide.
On-device only
screen_capabilityRead-only preflight: reports whether the accessibility service is enabled and bound before an automation run starts.
On-device only
screen_handoffPark an automation run at a step only a person should do — a payment, say — and show why.
On-device only
screen_promptPut a blocking choice on screen and wait for the owner to pick. One prompt in flight at a time.
On-device only
screen_signin_waitPark an automation run at a login or register wall and wait for the owner to finish.
On-device only
scrollScroll in any direction
On-device only
set_textType text into a specific field by ref (replace or append)
On-device only
set_toggleSet a switch or checkbox on/off by ref
On-device only
take_screenshotCapture screen as JPEG; optional annotate adds numbered boxes (Set-of-Marks)
Also as
aster_take_screenshottapTap an element by ref or coordinates
On-device only
wait_forWait until an element appears or disappears
On-device only
wait_for_idleWait until the screen stops changing
On-device only
Device 3
get_batteryBattery level, charging status, and health
Also as
aster_get_batteryget_device_infoModel, OS, RAM, storage, and hardware details
Also as
aster_get_device_infoget_locationCurrent GPS coordinates and location data
Also as
aster_get_location
Files 6
delete_fileDelete files or directories
Also as
aster_delete_filefiles.listList a folder the owner approved for an app (App Builder host-dir)
On-device only
files.readRead a file from an owner-approved folder (App Builder host-dir)
On-device only
list_filesBrowse files and folders with metadata
Also as
aster_list_filesread_fileRead text or binary file contents
Also as
aster_read_filewrite_fileCreate or overwrite files on device
Also as
aster_write_file
Camera 2
record_videoRecord short video clip from camera
Also as
aster_record_videotake_photoCapture photo from front or back camera
Also as
aster_take_photo
Communication 8
count_smsCount messages in a date window
On-device only
delete_contactsDelete contacts from the address book by id. Requires WRITE_CONTACTS.
Also as
aster_delete_contactslist_contacts_fullPage through the whole address book — every number, email and account type.
Also as
aster_list_contacts_fullmake_callInitiate a phone call
Also as
aster_make_callmake_call_with_voiceCall and speak text when answered
Also as
aster_make_call_with_voiceread_smsRead inbox, sent, or all messages
Also as
aster_read_smssearch_contactsFind contacts by name or phone number
Also as
aster_search_contactssend_smsSend text messages
Also as
aster_send_sms
Notifications 4
dismiss_all_notificationsClear all active notifications
On-device only
dismiss_notificationDismiss a specific notification
On-device only
post_notificationShow a local notification
Also as
aster_post_notificationread_notificationsGet active and recent notifications
Also as
aster_read_notifications
Media 5
get_now_playingRead the currently-playing track (title, artist, source app) from the OS media sessions; reuses notification access, no extra permission
On-device only
play_audioPlay audio from URL, file, or data
Also as
aster_play_audiospeak_ttsSpeak text aloud using TTS engine
Also as
aster_speak_ttsstop_audioStop current audio playback
Also as
aster_stop_audiovibrateVibrate with custom patterns
Also as
aster_vibrate
Storage 4
analyze_storageDisk usage breakdown by directory and type
Also as
aster_analyze_storagefind_large_filesFind files above a size threshold
Also as
aster_find_large_filesindex_media_metadataIndex photos/videos with EXIF and GPS
Also as
aster_index_media_metadatasearch_mediaSearch by date, location, type, or camera
Also as
aster_search_media
Apps 3
launch_intentLaunch apps or custom Android intents
Also as
aster_launch_intentlist_installed_appsInstalled apps with package, version, install time, sizes, declared permissions and last-used time.
Also as
aster_list_installed_appslist_packagesList all apps with version info
Also as
aster_list_packages
System 7
execute_shellRun commands in app sandbox
Also as
aster_execute_shellget_clipboardRead current clipboard content
Also as
aster_get_clipboardget_volumeVolume levels for all audio streams
Also as
aster_get_volumescreen_set_policyReceive the owner's per-app screen-control allow/deny list from OpenAlly
On-device only
set_clipboardCopy text to clipboard
Also as
aster_set_clipboardset_volumeAdjust volume or mute audio streams
Also as
aster_set_volumeshow_toastShow a brief on-screen message
Also as
aster_show_toast
Overlays 8
companion_overlay_hideTake down OpenAlly's ambient companion face
On-device only
companion_overlay_recomputeRecompute the companion face's position around the camera cutout
On-device only
companion_overlay_showDraw OpenAlly's ambient companion face beside the camera cutout
On-device only
companion_overlay_statusWhether Aster can draw over other apps, and whether OpenAlly's companion face is up
On-device only
hide_all_overlaysRemove all active overlays
On-device only
hide_overlayHide a specific floating overlay
On-device only
list_overlaysList active overlay IDs
On-device only
show_overlayDisplay floating HTML overlay on screen
Also as
aster_show_overlay
Alarms 4
delete_alarmRemove a saved alarm
Also as
aster_delete_alarmdismiss_alarmStop a ringing alarm
Also as
aster_dismiss_alarmget_alarmsView scheduled alarms
Also as
aster_get_alarmsset_alarmCreate a new alarm
Also as
aster_set_alarm