�️ DeepSyte

Mobile Tool Reference

All 78 mobile MCP tools for Android and iOS automation — sessions, gestures, elements, app lifecycle, device control, and more.

Session & Device

ToolDescriptionKey Params
mobile_devicesList connected ADB devices
mobile_session_startStart Appium sessiondeviceUdid, platformName, app or bundleId, noReset, extraCaps
mobile_session_stopClose sessionsessionId
mobile_session_statusCheck session healthsessionId

mobile_session_start parameters

ParamTypeRequiredDescription
appiumUrlstringNoAppium server URL. Default: http://localhost:4723
deviceUdidstringYesDevice ID from adb devices
platformNamestringYesAndroid or iOS
appstringNoPath to APK/IPA — installs before launching
appPackagestringNoAndroid: package name of an already-installed app (e.g. com.android.settings)
appActivitystringNoAndroid: activity to launch (default: .MainActivity)
bundleIdstringNoiOS: bundle ID of an already-installed app
noResetbooleanNoDon't reset app state between sessions. Default: false
automationNamestringNoUiAutomator2 (Android default) or XCUITest (iOS)
extraCapsobjectNoExtra appium: capabilities. Useful for slow emulators: { uiautomator2ServerLaunchTimeout: 60000 }

The mobile_session_start, mobile_screenshot, and mobile_uitree tools also accept legacy parameter names (device, platform) as deprecated aliases for deviceUdid and platformName. Prefer the canonical names above for new code.


Screenshot & Screen Analysis

ToolDescriptionKey Params
mobile_screenshotADB screenshot — no session neededdeviceUdid
mobile_screenshot_elementCrop screenshot to element boundssessionId, elementId
mobile_describe_screenAI-readable list of elements on screensessionId
mobile_assert_textAssert text is visible — throws if not foundsessionId, text
mobile_wait_for_screen_changeWait until screen content changes after an actionsessionId, timeout
mobile_uitreeRaw accessibility XML via ADB — no session neededdeviceUdid
mobile_sourceFull Appium page source as XMLsessionId

Gestures

Nine tools accept screenshot: true to return a confirmation screenshot after the action: mobile_tap, mobile_tap_text, mobile_swipe, mobile_type, mobile_fill_field, mobile_long_press, mobile_double_tap, mobile_drag, mobile_scroll_to_text

ToolDescriptionKey Params
mobile_tapTap at coordinatessessionId, x, y, screenshot
mobile_tap_textFind element by visible text and tapsessionId, text, screenshot
mobile_double_tapDouble-tapsessionId, x, y, screenshot
mobile_long_pressLong press / holdsessionId, x, y, duration, screenshot
mobile_swipeSwipe between two pointssessionId, startX, startY, endX, endY, duration, screenshot
mobile_dragDrag-and-dropsessionId, startX, startY, endX, endY, screenshot
mobile_pinchPinch gesturesessionId, x, y, scale
mobile_zoomZoom gesturesessionId, x, y, scale
mobile_typeType text via keyboardsessionId, text, screenshot
mobile_keyPress hardware keysessionId, key (HOME, BACK, ENTER, VOLUME_UP, VOLUME_DOWN, POWER, DELETE…)
mobile_hide_keyboardDismiss soft keyboardsessionId
mobile_press_homeHome button — Android onlysessionId
mobile_press_backBack button — Android onlysessionId
mobile_set_orientationSet screen orientationsessionId, orientation (PORTRAIT or LANDSCAPE)
mobile_get_orientationGet current orientationsessionId

Elements

ToolDescriptionKey Params
mobile_find_elementFind element by strategysessionId, strategy, selector
mobile_find_all_elementsFind all matching elementssessionId, strategy, selector
mobile_find_by_textCross-platform text searchsessionId, text
mobile_wait_for_elementWait until element appearssessionId, strategy, selector, timeout
mobile_scroll_to_textScroll until text is visiblesessionId, text, screenshot
mobile_element_textGet element's visible textsessionId, elementId
mobile_fill_fieldClear field + type textsessionId, elementId, text, screenshot
mobile_set_valueSet field value bypassing keyboardsessionId, elementId, value
mobile_element_existsCheck if element is presentsessionId, strategy, selector
mobile_executeRun mobile: script escape hatchsessionId, script, args

Element strategies

StrategyExample selectorPlatform
accessibility id"Login Button"Android (content-desc) + iOS (accessibilityIdentifier)
xpath"//android.widget.EditText[@resource-id='email']"Both
id"com.example.app:id/login_button"Android
class name"android.widget.TextView"Android
-android uiautomator"new UiSelector().text(\"Login\")"Android
-ios predicate string"label == 'Login'"iOS

App Lifecycle

ToolDescriptionKey Params
mobile_install_appInstall APK or IPAsessionId, appPath
mobile_uninstall_appRemove app from devicesessionId, bundleId or appPackage
mobile_activate_appBring app to foregroundsessionId, bundleId or appPackage
mobile_clear_app_dataClear data/cache without uninstalling — Android onlysessionId, appPackage
mobile_app_launchLaunch by package via ADB — no session neededdeviceUdid, appPackage, activity
mobile_app_stopForce-stop via ADB — no session neededdeviceUdid, appPackage
mobile_app_stateGet app statesessionId, bundleId

App states returned by mobile_app_state: not_installed, not_running, background_or_suspended, background, running.


Device Control

ToolDescriptionKey Params
mobile_grant_permissionGrant app permission — Android onlysessionId, appPackage, permission
mobile_revoke_permissionRevoke app permission — Android onlysessionId, appPackage, permission
mobile_deep_linkOpen URL scheme or universal linksessionId, url
mobile_clipboardGet or set clipboard textsessionId, action (get|set), text
mobile_geolocationMock GPS coordinatessessionId, latitude, longitude
mobile_push_filePush local file to devicesessionId, localPath, remotePath
mobile_pull_filePull file from devicesessionId, remotePath

Common Android permissions

android.permission.CAMERA
android.permission.ACCESS_FINE_LOCATION
android.permission.READ_CONTACTS
android.permission.RECORD_AUDIO
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
android.permission.POST_NOTIFICATIONS

Alerts, Context & WebView

ToolDescriptionKey Params
mobile_handle_alertAccept or dismiss alert/dialogsessionId, action (accept|dismiss)
mobile_get_contextsList Native + WebView contextssessionId
mobile_switch_contextSwitch between native and WebViewsessionId, contextName

To automate Chrome on-device or a WebView embedded in a native app:

  1. mobile_get_contexts — lists contexts like NATIVE_APP, WEBVIEW_com.example.app
  2. mobile_switch_context with the WebView context name
  3. Use mobile_browser_* tools — 20 CDP tools covering navigate, tap, type, evaluate JS, cookies, localStorage, network throttle, geolocation, user agent, and more

Screen Recording

ToolDescriptionKey Params
mobile_record_startStart screen recordingdeviceUdid
mobile_record_stopStop recording and return file pathdeviceUdid

Common Patterns

Explore an unfamiliar app

mobile_session_start
→ mobile_screenshot        # see the screen
→ mobile_describe_screen   # get AI-readable element list
→ mobile_tap_text("Menu")  # tap something
→ mobile_screenshot        # see the result

Test a login flow with assertions

mobile_session_start
→ mobile_find_by_text("Email") → mobile_fill_field(email)
→ mobile_find_by_text("Password") → mobile_fill_field(password)
→ mobile_tap_text("Sign In")
→ mobile_wait_for_screen_change
→ mobile_assert_text("Dashboard")
→ mobile_screenshot
mobile_session_start
→ mobile_deep_link("myapp://product/abc123")
→ mobile_assert_text("Product Name")
→ mobile_screenshot

Test with camera permission

mobile_session_start
→ mobile_grant_permission("android.permission.CAMERA")
→ mobile_activate_app("com.example.app")
→ mobile_tap_text("Enable Camera")
→ mobile_assert_text("Camera ready")

Slow emulator fix

mobile_session_start with extraCaps:
{
  "uiautomator2ServerLaunchTimeout": 60000,
  "uiautomator2ServerInstallTimeout": 60000,
  "adbExecTimeout": 60000
}

On this page