MCP server for Android device automation and control via accessibility services, UI tree snapshots, gesture dispatch, browser automation, and screen capture
Android Agent Bridge provides 34 tools with consistent naming (verb_noun pattern) and descriptions. However, output schemas are entirely undocumented, no tool declares what fields it returns, forcing LLMs to guess. Parameter descriptions are present but often generic (e.g., 'Node ID from get_ui_tree' lacks type/range info). Error handling exists but lacks recovery guidance. Security concerns: run_script tool accepts arbitrary script execution with no validation or permission gates. Missing pagination/limits on list_apps and get_notifications despite potentially large result sets.
Clear all cookies from the embedded WebView.
Get console messages from the embedded WebView.
Evaluate JavaScript in the embedded WebView and return the result.
Get the HTML content of the current page in the embedded WebView.
Get information about the embedded WebView (URL, title, etc.).
Navigate the embedded WebView to a URL.
No output schemas documented for any tool. LLMs cannot predict return structure, forcing them to guess field names and types. This violates pattern:tool and pattern:response-shaper.
run_script tool accepts arbitrary script execution with no validation, permission gates, or confirmation step. Violates pattern:permission-gate and pattern:confirmation-request. High security risk for agent misuse.
list_apps and get_notifications lack pagination (limit/offset) and result caps. Large result sets will blow context windows. Violates pattern:paginated-result.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Capture a screenshot of the embedded WebView.
Set a cookie in the embedded WebView.
Clear text from the currently focused text field.
Find nodes in the current UI tree by text, resource ID, or class name.
Get metadata about the active window without a full tree snapshot. Returns package name, activity class, and window title.
Get the current clipboard content.
Get recent notifications captured by the accessibility service.
Capture a screenshot of the current screen.
Snapshot the on-screen UI as a tree of nodes. By default walks ALL interactive windows (app, status bar, IME, dock, system overlays) under a synthetic 'AllWindows' root. Must be called before tap_node to populate the node registry. IDs are valid until the next get_ui_tree call.
Perform a global action: back, home, recents, notifications, quick_settings, power_dialog.
Launch an application by package name.
List all installed applications on the device.
Long press a node by its registry ID. Prefers ACTION_LONG_CLICK when available, falls back to gesture long press.
Open a URL in the default browser.
Paste clipboard content into the currently focused text field.
Probe the device for current state and capabilities.
Run a custom script or command on the device.
Scroll within a scrollable node to find and reveal text.
Send an Android intent to launch an activity or service.
Send key events to the device.
Set the clipboard content.
Swipe from one point to another on the screen.
Tap at specific screen coordinates.
Tap a node by its registry ID from the last get_ui_tree call. Prefers ACTION_CLICK when node is clickable, falls back to gesture tap on node center.
Type text into the currently focused text field.
Wait for the accessibility service to report idle (no events for a period).
Wait for a node matching criteria to appear in the UI tree.
Wait for a window with specific package name or title to become active.
Parameter descriptions are generic and lack format/range constraints. E.g., 'Node ID from get_ui_tree' does not specify integer type or valid range. Violates pattern:constrained-input.
Error responses lack recovery guidance. serviceError() returns generic 'Accessibility service not connected' without suggesting next steps. Violates pattern:recovery-guide.