DeepADB
DeepADB is a comprehensive Model Context Protocol (MCP) server providing AI agents with extensive Android Debug Bridge (ADB) integration across 204 tools, 5 resources, and 4 prompts.
Device Management
List connected devices, retrieve detailed properties (model, OS, SDK, ABI, security patch), and run health checks.
Shell & Command Execution
Execute arbitrary shell commands or root commands (
su) on the device.
App/Package Management
Install/uninstall APKs, list packages, inspect package info, clear app data/cache, grant/revoke permissions, force-stop/launch apps, and discover activities, services, and receivers.
File System Operations
Push/pull files, read/write text files, list directories, search by name or content (grep), find-and-replace, compute checksums, manage permissions (chmod/chown), copy/move/delete files with safety checks.
Logging & Diagnostics
Capture logcat snapshots, crash/ANR logs, bug reports, heap dumps, tombstones, performance metrics (CPU, memory, frame stats), battery/network/telephony state, and
dumpsysoutput.
UI & Screen Interaction
Take plain or annotated screenshots, dump UI hierarchy (text/TSV/XML), send tap/swipe/text/keyevent input, start activities, search UI elements, record screen, and get focused activity/window stack.
Device Control
Toggle airplane mode, WiFi, mobile data, location mode, screen state (wake/sleep/lock/unlock with PIN), read/write system settings, and reboot (normal/recovery/bootloader).
Wireless & Port Forwarding
Pair/connect/disconnect devices over WiFi, switch USB to TCP/IP, set up and manage port forwards and reverse forwards.
Emulator & Virtualization
Manage AVD emulators (list/launch/stop) and QEMU/KVM VMs (boot, stop, manage disk images, connect guest ADB) for on-device virtualization.
Multi-Device Orchestration
Execute commands, install APKs, and compare outputs across multiple devices in parallel.
Test Sessions & CI/CD
Structure multi-step test workflows with screenshots and logcat captures, wait for boot, check device readiness, and run instrumented tests.
Network & Packet Capture
Start/stop tcpdump, list active network connections, and scan the local network for ADB devices.
Advanced & Specialized Tools
Baseband/modem inspection and raw AT commands, SELinux/permission auditing, thermal and power profiling, accessibility (WCAG) auditing, visual regression (screenshot baseline diffing), JSON-defined workflow orchestration, device mirroring via scrcpy, hardware sensor reads, and a plugin/registry system.
Transports
Supports stdio, HTTP/SSE, WebSocket, and an optional GraphQL API.
Allows booting and testing Alpine Linux virtual machines on Android devices via QEMU, including KVM acceleration, CPU topology detection, and guest ADB connectivity.
Provides comprehensive Android Debug Bridge (ADB) integration, enabling AI agents to interact with Android devices for inspecting state, running commands, managing apps, capturing logs, controlling settings, analyzing UI, recording screens, managing emulators, running tests, orchestrating multi-device operations, capturing network traffic, and more.
Enables privilege escalation on rooted devices via Magisk's su, allowing execution of privileged commands and bypassing scoped storage restrictions for enhanced ADB functionality.
Provides emulator management capabilities, including creating, booting, and managing QEMU virtual machines on Android devices, with support for Alpine Linux and ARM64 images.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DeepADBlist connected Android devices"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DeepADB
MCP (Model Context Protocol) server for AI agents that need to inspect, control, test, and diagnose Android devices through ADB—or directly on-device through Termux.
209 tools, 5 resources, and 4 prompts across 49 modules—from UI automation and application management to logs, network capture, baseband, firmware, security, and hardware diagnostics.
Get started
DeepADB runs as a local MCP server. It uses ADB by default and automatically switches to direct execution when it detects Termux on an Android device.
git clone https://github.com/fullread/DeepADB.git
cd DeepADB
npm ci
npm run build
npm startAdd build/index.js to your MCP client configuration, then begin with these workflows:
Goal | Start with |
Confirm the toolchain and connected device |
|
Inspect the current Android UI |
|
Diagnose a device or app |
|
For a guided local connection, see Claude Code Configuration. Read SECURITY.md before exposing HTTP, WebSocket, or GraphQL transports beyond loopback.
Related MCP server: android-mcp-server
Architecture
┌──────────────────────────────────────────────────┐
│ MCP Client │
│ (Claude Code / claude.ai) │
└──────────────────────┬───────────────────────────┘
│ stdio (JSON-RPC) or HTTP/SSE or WebSocket
┌──────────────────────▼───────────────────────────┐
│ DeepADB Server │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Tool Modules (49) │ │
│ │ device │ shell │ packages │ files │ logs │ │
│ │ diagnostics │ ui │ build │ health │ │
│ │ wireless │ control │ logcat-watch │ │
│ │ forwarding │ screen-record │ emulator │ │
│ │ testing │ multi-device │ snapshot │ │
│ │ network-capture │ ci │ plugins │ baseband │ │
│ │ accessibility │ regression │ │
│ │ device-farm │ registry │ at-commands │ │
│ │ screenshot-diff │ workflow │ sensors │ │
│ │ split-apk │ mirroring │ test-gen │ │
│ │ ota-monitor │ ril-intercept │ │
│ │ device-profiles │ firmware-analysis │ │
│ │ workflow-market │ selinux-audit │ │
│ │ thermal-power │ network-discovery │ │
│ │ input-gestures │ wireless-firmware │ │
│ │ app-network │ database-inspector │ │
│ │ runtime-audit │ wear │ │
│ ├─────────────────────────────────────────────┤ │
│ │ Resources (5) │ Prompts (4) │ │
│ └───────────────────┬─────────────────────────┘ │
│ │ │
│ ┌───────────────────▼─────────────────────────┐ │
│ │ ToolContext (unified DI) │ │
│ │ server │ bridge │ deviceManager │ │
│ │ logger │ security │ config │ │
│ └───────────────────┬─────────────────────────┘ │
│ │ │
│ ┌───────────────────▼─────────────────────────┐ │
│ │ Middleware Layer │ │
│ │ OutputProcessor │ SecurityMiddleware │ │
│ │ InputSanitizer │ Logger (stderr-safe) │ │
│ └───────────────────┬─────────────────────────┘ │
│ │ │
│ ┌───────────────────▼─────────────────────────┐ │
│ │ Bridge Layer (auto-detect) │ │
│ │ │ │
│ │ ┌─────────────┐ ┌────────────────────┐ │ │
│ │ │ ADB Bridge │ OR │ Local Bridge │ │ │
│ │ │ (PC mode) │ │ (on-device mode) │ │ │
│ │ │ via adb.exe │ │ via sh/su direct │ │ │
│ │ └──────┬───────┘ └────────┬───────────┘ │ │
│ │ │ │ │ │
│ │ Retry │ Timeout │ Cache │ Serial routing │ │
│ └─────────┼─────────────────────┼─────────────┘ │
└────────────┼─────────────────────┼───────────────┘
│ │
┌───────▼───────┐ ┌───────▼───────┐
│ ADB Binary │ │ sh / su │
│ (USB/WiFi) │ │ (local) │
└───────┬───────┘ └───────┬───────┘
│ │
┌─────▼────────────────────▼─────┐
│ Android Device │
└────────────────────────────────┘Dual-Mode Architecture
DeepADB operates in two modes, auto-detected at startup:
ADB Mode (default) — PC-side bridge
AI Agent (PC) ←→ MCP ←→ DeepADB (PC) ←→ ADB (USB) ←→ Android DeviceStandard mode: DeepADB runs on a PC/Mac/Linux host and communicates with the device over USB via ADB. The complete 209-tool surface is registered through the ADB bridge with automatic retry on transient failures; environment-specific tools report their capability requirements when a host cannot run them.
On-Device Mode — direct local execution
AI Agent (Termux) ←→ MCP (stdio/HTTP) ←→ DeepADB (Termux) ←→ sh/su (local)When DeepADB runs directly on the Android device (e.g., inside Termux), it auto-detects the environment and switches to LocalBridge. Commands execute directly via sh/su — no ADB server, no USB, no serialization overhead. The same 209-tool MCP surface is registered, with capability-aware guidance when an optional on-device binary such as sqlite3 is unavailable.
v1.1.4 host hardware validation: the full Pixel 6a / Android 16 regression completed with 604 passed, 0 failed, and 17 expected environment-specific skips (621 total). This includes live AT/OK validation on /dev/umts_router, a guarded read-only SQLite schema snapshot with cleanup, the unified runtime audit, per-app route context, and the single-device Wear preflight. The skips are the five on-device-only QEMU checks plus twelve Windows-host or unavailable-tcpdump security checks.
v1.1.3 hardware baseline: validated on a Pixel 6a (Android 16, Termux + Magisk + QEMU 10.2.1) across a four-cell test matrix — host (ADB) and on-device (LocalBridge), each with and without a device PIN — with 0 failures in every cell. The v1.1.3 suite contained 577 tests in the host/ADB configuration and 613 on-device; the difference is the QEMU virtualization and Alpine VM-boot suites, which run only on-device:
ADB mode, no PIN: 556 passed / 0 failed / 21 skipped (577 total). Skips: 5 QEMU (on-device only), 7 gracefulKill unit tests (require POSIX signals, skipped on the Windows host), 3 tcpdump sanitization (tcpdump is root-only and unreachable over a non-root ADB shell), 2 host-shell round-trips (require a POSIX /bin/sh), 4 screen-state (require DA_TEST_PIN).
ADB mode, with PIN: 560 passed / 0 failed / 17 skipped (577 total). The 4 screen-state tests unlock and run.
On-device mode, no PIN: 606 passed / 0 failed / 7 skipped (613 total). All QEMU tests run, including Alpine Linux VM boot with KVM acceleration, big.LITTLE CPU topology detection, guest ADB connectivity error handling, and clean VM shutdown; the tcpdump and gracefulKill suites also run here (root + POSIX). Skips: 3 QEMU setup steps that no-op when the Alpine kernel/initrd/disk are already cached, 4 screen-state (require PIN).
On-device mode, with PIN: 610 passed / 0 failed / 3 skipped (613 total). Every test enabled by the environment runs; the 3 skips are the cached-VM setup steps.
Privilege escalation: In ADB mode, all shell commands run as uid=2000 (the shell user) which has system-level permissions. In Termux, commands run as a regular app user. LocalBridge automatically elevates privileged commands through su when root (Magisk) is available:
Command allowlist: 16 system commands (
settings,dumpsys,am,input,screencap,screenrecord,uiautomator,app_process,getenforce,setenforce,cmd,pm,wm,svc,ip,ifconfig) are routed throughsu -cto match ADB-mode behavior.Path-based elevation: Commands referencing
/sdcard,/storage, or/system/paths are elevated to bypass Android scoped storage restrictions.Root detection: Cached after a single
su -c idprobe at first use. Graceful degradation when root is unavailable.The elevation allowlist is frozen (
ReadonlySet+Object.freeze) — not configurable via environment variables or runtime API.
Auto-detection: Checks for /system/build.prop (present on all Android devices, never on hosts). Override with DA_LOCAL=true or DA_LOCAL=false.
On-device setup (Termux):
pkg install nodejs-lts git
git clone <deepadb-repo> && cd deepadb
npm install && npm run build
npm start # stdio — for local AI agents (Claude Code, OpenCode)
DA_HTTP_PORT=3000 npm start # HTTP/SSE — for remote AI access over WiFiClaude Code Configuration
{
"mcpServers": {
"deepadb": {
"command": "node",
"args": ["/path/to/DeepADB/build/index.js"]
}
}
}Available Tools (209)
Start with the capability area that matches your task; the complete reference remains below.
Area | Includes |
Device, packages, files, logs, diagnostics, runtime audit, and SQLite | |
Wireless debugging, port forwarding, per-app routing, Wear preflight, multi-device orchestration, and CI/CD | |
Network capture, baseband, firmware, SELinux, and sensors | |
Plugins, workflow orchestration, device profiles, and result handles |
Complete tool reference
Health (1 tool)
adb_health_check— Comprehensive toolchain validation: ADB binary, server, device connection, authorization, root access, and storage writability
Runtime Audit (1 tool)
adb_runtime_audit— Unified read-only readiness audit for transport, Android userspace, root, SELinux, storage, command capabilities, UI/network diagnostics, SQLite, modem nodes, and Wear prerequisites
Device (3 tools)
adb_devices— List all connected devices with state, model, and product infoadb_device_info— Detailed device properties (model, OS, SDK, build, security patch, ABI)adb_getprop— Read a specific system property or dump all properties
Shell (2 tools)
adb_shell— Execute arbitrary shell commands with configurable timeout (security-checked)adb_root_shell— Execute commands as root via su (requires rooted device, security-checked)
Packages (12 tools)
adb_install— Install APK with replace/downgrade optionsadb_uninstall— Remove package with optional data retentionadb_list_packages— List packages filtered by name or type (all/system/third-party)adb_package_info— Detailed package info (version, permissions, paths)adb_clear_data— Clear all app data and cacheadb_grant_permission— Grant a runtime permission to a packageadb_revoke_permission— Revoke a runtime permission from a package (reset permission state for testing denial flows)adb_list_permissions— List all declared and granted permissions for a package, filterable by granted/deniedadb_force_stop— Force-stop an app immediatelyadb_start_app— Launch an app by package name (resolves launcher activity)adb_restart_app— Force-stop then re-launch in one call (configurable delay)adb_resolve_intents— Discover registered activities, services, and receivers with intent filters
Room & SQLite Inspection (1 tool)
adb_sqlite_inspect— Package-scoped database listing, schema inspection, and validated read-only SQL with hard row/output caps. Prefersrun-as, falls back to root, rejects symbolic-link database/WAL files, uses devicesqlite3when present, and otherwise deletes a private, bounded host-side snapshot after inspection
Files (18 tools)
adb_push— Push local file to device (hard-blocked kernel paths, fs-type awareness, storage reporting)adb_pull— Pull file from device to local filesystemadb_ls— List device directory contents (simple or detailed)adb_cat— Read text file from device with optional line limitadb_file_write— Create or overwrite text files via heredoc (buffer limit warning, fs-aware, post-verify)adb_find— Search for files by name/pattern with depth control and result cappingadb_file_stat— File metadata: size, permissions, timestamps, ownership, SELinux contextadb_file_checksum— SHA-256/SHA-1/MD5 hash with size-based timeout estimationadb_mkdir— Create directories with parent creation (-p), hard-blocked kernel pathsadb_rm— Delete files/directories with depth-based recursive protection and symlink resolutionadb_file_move— Move/rename with source depth protection and post-verifyadb_file_copy— Copy with pre-flight size+space check and post-verify size matchadb_file_chmod— Change permissions (Zod-validated octal mode, depth-based recursive protection)adb_file_touch— Create empty files or update timestamps (explicit timestamp support)adb_file_fsinfo— Filesystem report: type, mount, capacity, capabilities, SELinux, limitationsadb_file_chown— Change ownership (root required, depth-based recursive protection)adb_grep— Search file contents with fixed-string default, recursive depth control, result cappingadb_file_replace— Find/replace text in files (sed-backed, proper escaping, backup option)
Logs — Snapshots (3 tools)
adb_logcat— Filtered logcat snapshot with tag, priority, grep, and buffer selectionadb_logcat_clear— Clear all logcat buffersadb_logcat_crash— Crash buffer log snapshot
Logs — Persistent Watchers (4 tools)
adb_logcat_start— Start a background logcat watcher with ring buffer accumulationadb_logcat_poll— Retrieve new lines since last poll from a running watcheradb_logcat_stop— Stop a watcher session (or all sessions)adb_logcat_sessions— List all active watcher sessions with stats
Diagnostics (9 tools)
adb_dumpsys— Run dumpsys for any service (or list all services)adb_telephony— Cell info, signal strength, and network registration (parallel query)adb_battery— Battery status, level, temperature, and charging infoadb_network— WiFi, cellular, and IP connectivity (parallel query)adb_top— CPU and memory usage snapshotadb_perf_snapshot— Parallel memory, frame stats, and CPU profiling for a packageadb_bugreport— Full bug report zip capture (device state, logs, system info)adb_crash_logs— ANR traces and tombstone crash dumps from /data/anr/ and /data/tombstones/adb_heap_dump— Capture heap dump (.hprof) from a running process for memory analysis
Per-App Route Context (1 tool)
adb_app_route_context— Resolve an installed package to its UID and correlate its effectiveip ruleranges, route tables, network policy, VPN, and default-network state without changing routes or policy
UI (10 tools)
adb_screencap— Take screenshot with filename sanitization, saves locallyadb_screencap_annotated— Screenshot with UI element bounding boxes and numbered labels composited onto the PNG. Returns annotated image path plus a text legend. Ideal for LLM workflows that reference elements by numberadb_current_activity— Get focused activity and top window stackadb_input— Send tap, swipe, text, or keyevent inputadb_start_activity— Launch activities by intent or component nameadb_ui_dump— Dump full UI hierarchy. Supports three output formats:text(default, human-readable),tsv(compact tab-separated for token-efficient automation loops),xml(raw uiautomator XML)adb_ui_find— Search UI hierarchy by text, resource-id, or content-description (returns tap coordinates)adb_screen_state— Combined screen state in one call: foreground activity, screen dimensions and density, orientation, battery level, and a TSV list of interactive elements. Replaces 3–4 separate tool callsadb_screenrecord_start— Start recording the device screen (1-180s, stored on device)adb_screenrecord_stop— Stop recording and pull the mp4 video file locally
Device Control (9 tools)
adb_airplane_mode— Toggle airplane mode with broadcast and verificationadb_airplane_cycle— Cycle airplane mode on/off to force cellular re-registrationadb_wifi— Enable or disable WiFiadb_mobile_data— Enable or disable mobile dataadb_location— Set location mode (off/sensors/battery/high)adb_screen— Wake, sleep, toggle, lock, or unlock the screen. Lock verifies keyguard state viadumpsys window. Unlock useswm dismiss-keyguard(works for swipe keyguards); supplypinto perform the full PIN entry sequence: wakes screen, swipes up to reveal keypad, types PIN, confirms, and verifies the keyguard sleep token was releasedadb_settings_get— Read any Android setting from system/secure/global namespaceadb_settings_put— Write any Android setting with read-back verificationadb_reboot— Reboot device (normal, recovery, or bootloader mode)
Wireless Debugging (4 tools)
adb_pair— Pair with device over WiFi using pairing codeadb_connect— Connect to device over WiFi/TCPadb_disconnect— Disconnect wireless device(s)adb_tcpip— Switch USB device to TCP/IP mode (auto-detects device IP)
Port Forwarding (8 tools)
adb_forward— Forward a local port to a device port (host → device)adb_reverse— Reverse-forward a device port to the host (device → host)adb_forward_list— List all active forward and reverse port mappingsadb_forward_remove— Remove a port forward or all forwardsadb_reverse_remove— Remove a reverse forward or all reverse forwardsadb_tunnel_open— Open a managed tunnel with opaque ID. Auto-picks a free host port for forward direction when omitted; registers cleanup so the tunnel is removed on server exitadb_tunnel_list— List active managed tunnels (those opened via adb_tunnel_open). Optional device filter; shows ID, direction, endpoints, and ageadb_tunnel_close— Close a managed tunnel by ID, or close all at once with id="all"
Emulator Management (3 tools)
adb_avd_list— List available AVDs (PC mode) or detect KVM/QEMU virtualization capabilities (on-device mode)adb_emulator_start— Launch an AVD with headless, cold boot, and GPU options (PC mode) or report QEMU alternative (on-device mode)adb_emulator_stop— Gracefully shut down a running emulator
QEMU/KVM Virtualization (8 tools)
adb_qemu_setup— Check and install QEMU for on-device virtualization. Verifies KVM, reports host CPU/RAM, installs via Termux pkgadb_qemu_images— Manage VM disk images: list, create (qcow2/raw), delete. Path containment verification prevents traversaladb_qemu_start— Boot a KVM-accelerated VM with dynamic resource allocation. Auto-detects optimal CPUs (total minus 1, reserving one for host) and memory (65% of physical RAM). Supports kernel/initrd/append for Android boot, ADB port forwardingadb_qemu_stop— Stop a running VM (graceful SIGTERM or force SIGKILL). Auto-disconnects guest ADB before killing. Reports running VMs if no name givenadb_qemu_status— Full status: KVM/QEMU availability, host resource budget, running VMs with PID/resources/uptime/ports/ADB connection state, image inventoryadb_qemu_connect— Connect to a running VM's guest ADB service. Restricted to localhost only — port derived from running VM state, never user input. Enables multi-device tools to operate on guest VMsadb_qemu_disconnect— Disconnect from a guest VM's ADB service. Clears connection state and removes guest from device listadb_qemu_guest_shell— Execute shell commands on a guest VM via ADB. Subject to security middleware. Guest serial derived internally — no user-supplied host/IP reaches the ADB binary
Test Sessions (3 tools)
adb_test_session_start— Start a named test session with organized output directoryadb_test_step— Capture a numbered step with screenshot and logcat into the sessionadb_test_session_end— End session, write summary manifest, return directory path
Multi-Device Orchestration (4 tools)
adb_multi_shell— Execute a command on all/selected devices in parallel (security-checked)adb_multi_install— Install an APK across multiple devices simultaneouslyadb_multi_compare— Run a command on all devices and highlight output differencesadb_multi_test— Comparative test workflow: run predefined diagnostic profiles (firmware/security/network/identity/full) or custom command lists across all devices including QEMU guests, compare per-check, report matches and differences
Wear Data Layer (1 tool)
adb_wear_datalayer_preflight— Read-only phone/watch role, Google Play services, Bluetooth, optional package, companion-association, and Data Layer service preflight; pairing identifiers are intentionally omitted
Input Gestures & UI Automation (15 tools)
adb_input_drag— Drag from point A to point B (usesdraganddropwith swipe fallback for older Android)adb_input_fling— High-velocity fling gesture for momentum-scrolling through lists and paged views (configurable duration 20-200ms)adb_input_long_press— Long press at coordinates with configurable hold durationadb_input_double_tap— Double tap with configurable interval between tapsadb_input_text— Dedicated text input with space/special character handlingadb_open_url— Open a URL on the device via VIEW intentadb_orientation— Get or set screen orientation (auto/portrait/landscape/reverse)adb_clipboard— Read or write device clipboardadb_input_pinch— Multi-touch pinch (zoom out) or spread (zoom in) gesture. Two fingers move symmetrically around a center point. Layered injection: parallelinput swipe(universal, no root) or rawsendeventMT Type B protocol (true multi-touch, root required). Auto-detects touchscreen device and capabilities viagetevent -p. Configurable center, radius, duration, angle, and interpolation stepsadb_tap_element— Find element by text/resource-id/content-description and tap its centeradb_wait_element— Poll UI hierarchy until an element appears or disappears (configurable timeout/poll interval)adb_wait_stable— Poll until consecutive UI dumps match (screen stabilization after transitions)adb_scroll_until— Scroll repeatedly until a target element is found, with optional auto-tapadb_screenshot_compressed— Capture screenshot with size/quality metadata for token-efficient workflowsadb_batch_actions— Execute multiple input actions (tap/swipe/fling/long_press/double_tap/keyevent/text/drag/pinch/back/home/sleep) in a single tool call with security validation
Device Awareness (3 tools)
adb_screen_size— Screen resolution, display density (DPI), aspect ratio, and DP width in one calladb_device_state— Combined snapshot: battery level/status/temp, network type, WiFi state, screen on/off, orientation, foreground activityadb_notifications— Parse active notifications with package, title, text, importance, channel, flags, and timestamp (filterable by package)
Snapshot/Restore (3 tools)
adb_snapshot_capture— Save comprehensive device state (packages, settings, properties) to JSONadb_snapshot_compare— Diff current state against a saved snapshot (added/removed packages, changed settings)adb_snapshot_restore_settings— Restore global/secure settings from a saved snapshot
Network Capture (3 tools)
adb_tcpdump_start— Start background packet capture via tcpdump (requires root)adb_tcpdump_stop— Stop capture and pull pcap file locally for Wireshark analysisadb_network_connections— Show active TCP/UDP connections (ss/netstat with /proc/net fallback)
CI/CD Integration (3 tools)
adb_ci_wait_boot— Wait for device/emulator to fully boot with configurable timeoutadb_ci_device_ready— Structured pass/fail readiness check (boot, PM, screen, network, disk)adb_ci_run_tests— Run instrumented tests viaam instrumentwith parsed pass/fail results
Baseband/Modem (6 tools)
adb_baseband_info— Modem firmware, RIL implementation, chipset, SIM configuration (dual SIM detection with per-slot state), network registration. IMEI retrieval is opt-in only (includeImei=true)adb_cell_identity— Cell ID (CID), TAC/LAC, EARFCN, PCI, PLMN from dumpsys phone for cellular network analysisadb_signal_detail— RSRP, RSRQ, SINR, RSSI, timing advance — raw radio measurements for signal analysisadb_neighboring_cells— All visible LTE/5G/WCDMA/GSM cells with identities and signal strengthsadb_carrier_config— Carrier configuration dump, carrier ID, preferred APNadb_modem_logs— RIL radio buffer, telephony framework, RILJ/RILC, kernel dmesg (root) modem logs
Accessibility Auditing (3 tools)
adb_a11y_audit— Automated WCAG audit: missing labels, undersized touch targets (<48dp), duplicate descriptions, unfocusable clickablesadb_a11y_touch_targets— List all interactive elements with touch target dimensions in dp, flag undersizedadb_a11y_tree— Accessibility-focused UI tree showing only screen-reader-relevant elements with roles, labels, and states
Regression Detection (3 tools)
adb_regression_baseline— Capture performance baseline (memory, CPU, frame stats, battery, network) to JSONadb_regression_check— Compare current performance against a saved baseline with configurable regression thresholdsadb_regression_history— List all saved baselines with trends, optionally filtered by package
Device Farm (3 tools)
adb_farm_run— Run instrumented tests on Firebase Test Lab across multiple device models and API levelsadb_farm_results— Retrieve results from a Test Lab run or list recent test matricesadb_farm_matrix— List available device models and Android versions on Firebase Test Lab
Plugin Registry (3 tools)
adb_registry_search— Search the community plugin registry, shows install status and available updatesadb_registry_install— Download and install a plugin from the registry by nameadb_registry_installed— List locally installed plugins with version and update availability
Plugins (2 tools)
adb_plugin_list— List all loaded plugins with paths and load timesadb_plugin_info— Plugin system documentation and example plugin format
Build (2 tools)
adb_gradle— Run any Gradle task in a project directoryadb_build_and_install— Build debug APK and install via ANDROID_SERIAL targeting
AT Commands (6 tools)
adb_shannon_session— Check Shannon/Exynos chipset detection, root, character-device modem ports, and a benignAT/OKhandshake together; supports Google Tensor's/dev/umts_router, re-arms bounded CPIF reads until a terminal result, optionally sends read-onlyATI, and never sends a modem configuration commandadb_at_detect— Auto-detect modem AT command device node by chipset family (Shannon, Qualcomm, MediaTek, Unisoc, generic). Probes known paths and returns the first responding nodeadb_at_send— Send a single AT command to the modem with response capture. Auto-detects port or accepts manual override. Dangerous command blocklist with force overrideadb_at_batch— Send multiple AT commands sequentially with per-command results. Configurable inter-command delayadb_at_probe— Run a standard diagnostic probe: modem ID, signal quality, network registration, SIM status, operator, functionality modeadb_at_cross_validate— Cross-validate baseband firmware by comparing AT command responses (ATI, AT+CGMR, AT+CGMM) against system properties. Flags discrepancies as potential firmware tampering, incomplete OTA, or property spoofing. Shannon-specific AT+DEVCONINFO support. Requires root
Screenshot Diffing (3 tools)
adb_screenshot_baseline— Capture and save a named screenshot baseline with metadata (dimensions, SHA-256, timestamp)adb_screenshot_diff— Compare current screen against a saved baseline using pixel-level PNG decoding. Reports changed pixel count/percentage, bounding box of changed region, and supports a tolerance threshold for absorbing dynamic elements like clocksadb_screenshot_history— List all saved screenshot baselines with metadata
Workflow Orchestration (3 tools)
adb_workflow_run— Execute a JSON-defined workflow: sequential device operations with variable substitution, conditional steps, loops, and result capture. Actions: shell, root_shell, install, screenshot, logcat, getprop, sleepadb_workflow_validate— Validate workflow structure without executing. Shows execution planadb_workflow_list— List saved workflow files in the workflows directory
Split APK Management (4 tools)
adb_install_bundle— Install split APKs (app bundles) viainstall-multiplewith replace and downgrade optionsadb_list_splits— Show all APK split paths for a package with classification (base, config.density, config.language, etc.) and total sizeadb_extract_apks— Pull all splits for a package to a local directory for analysis or backupadb_apex_list— List installed APEX modules with version info
Device Mirroring (3 tools)
adb_mirror_start— Start live screen mirroring via scrcpy. Supports windowed and headless modes, recording, bitrate/FPS/resolution control, stay-awake, and screen-offadb_mirror_stop— Stop mirroring for a device or all devicesadb_mirror_status— Check scrcpy availability and list active mirroring sessions
Automated Test Generation (3 tools)
adb_test_gen_from_ui— Analyze the current screen's interactive elements and generate a workflow that taps each one, screenshots, and checks for crashesadb_test_gen_from_intents— Analyze a package's registered activities and generate a workflow that launches each exported activity with crash detectionadb_test_gen_save— Save a generated workflow JSON to the workflows directory for later execution
OTA Update Monitoring (3 tools)
adb_ota_fingerprint— Capture system fingerprint: build ID, Android version, security patch, bootloader, baseband firmware, kernel, A/B slotadb_ota_check— Compare current system state against a saved fingerprint to detect OTA updates. Identifies changed fields and recommends re-baseliningadb_ota_history— List all saved fingerprints for a device with version progression over time
RIL Message Interception (3 tools)
adb_ril_start— Start capturing RIL messages from the radio logcat buffer. Categorizes registration, cell info, signal, network, security, handover, and NAS eventsadb_ril_poll— Retrieve captured RIL messages with optional category filtering. Shows category distributionadb_ril_stop— Stop a RIL capture session with category summary
Device Profiles (3 tools)
adb_profile_detect— Auto-detect and build a device profile: hardware ID, chipset family, modem nodes, root status, 5G support, dual SIM configuration. Matches against built-in library for known quirksadb_profile_save— Save a device profile to the profiles libraryadb_profile_list— List built-in and user-saved device profiles
Modem Firmware Analysis (3 tools)
adb_firmware_probe— Comprehensive firmware identification: parses baseband (Shannon/Qualcomm/MediaTek/Unisoc/HiSilicon/Intel), bootloader, and RIL implementation into structured components. Reports kernel, security patch, A/B slot, verified boot state, VBMeta, hypervisor, and OTA partition inventoryadb_firmware_diff— Compare all firmware components (baseband, bootloader, kernel, security patch, build ID, Android version, RIL) between saved fingerprints or live device. Deep parsed diffs for baseband and bootloader when changes detectedadb_firmware_history— Track firmware progression across all saved OTA fingerprints with multi-component change detection (baseband, bootloader, kernel, security patch, build ID, Android version) and parsed baseband diffs
Wireless Firmware (4 tools)
adb_wifi_firmware— WiFi chipset and firmware identification: driver version, firmware version, supported bands (2.4/5/6 GHz), WiFi standard detection (5/6/6E/7), current connection info. MAC address opt-in onlyadb_bluetooth_firmware— Bluetooth firmware and chipset identification: firmware version, BT version (4.0–5.4 from LMP), adapter state, LE capabilities (2M PHY, Coded PHY, extended advertising), active profiles (A2DP/HFP/HID/LE Audio), bonded device count. MAC/name opt-in onlyadb_nfc_firmware— NFC controller firmware: controller type (NXP/Broadcom/Samsung/ST), firmware version, supported technologies (NFC-A/B/F/V, MIFARE), secure element (eSE/UICC), HCE supportadb_gps_firmware— GNSS/GPS chipset and firmware identification: hardware model (manufacturer, chip, firmware), supported constellations (GPS/GLONASS/Galileo/BeiDou/QZSS/NavIC/SBAS), signal types with frequencies, dual-frequency (L1+L5) detection, raw GNSS measurement capabilities, A-GPS modes (MSB/MSA), SUPL server configuration, carrier phase measurements
Workflow Marketplace (3 tools)
adb_market_search— Search the workflow marketplace for community-shared workflow definitions with keyword and tag filtering. Shows install statusadb_market_install— Download, validate (JSON structure + SHA-256 integrity), and install a marketplace workflow for immediate use with adb_workflow_runadb_market_export— Package a local workflow with marketplace metadata (author, version, tags, SHA-256) and generate a registry manifest entry for sharing
SELinux & Permission Auditing (3 tools)
adb_selinux_status— SELinux enforcement mode, policy version, shell context, recent AVC denial count. Root provides kernel dmesg denial statsadb_selinux_denials— List recent AVC denial messages with parsed source/target contexts, permission classes, and denied operations. Supports process filteringadb_permission_audit— Audit runtime permission grants for a package grouped by dangerous permission category (Camera, Location, Phone, SMS, etc.). Flags high-sensitivity grants
Thermal & Power Profiling (3 tools)
adb_thermal_snapshot— Capture all thermal zone temperatures, per-CPU frequencies/governors, cooling device states, battery temperature/current/voltage/power draw. Optional save as JSON baselineadb_thermal_compare— Compare current thermal state against a saved baseline with per-zone temperature deltas and battery current changesadb_battery_drain— Measure battery drain rate over a configurable duration (3-60s). Reports average mA, mW, estimated %/hour. Optional package-specific batterystats
Network Discovery (3 tools)
adb_network_scan— Scan the local network for ADB-enabled devices via ARP table and optional IP range sweep. Probes ports 5555-5558 with batched parallel TCP probesadb_network_device_ip— Get the WiFi IP of a connected device via multiple methods. Shows ADB TCP status and wireless connection instructionsadb_network_auto_connect— One-step discover + connect: scans for ADB devices and automatically runs adb connect on each found listener
Hardware Sensor Access (2 tools)
adb_sensor_read— Read current hardware sensor values via dumpsys sensorservice. Enumerates all sensors with vendor, type, mode, rate range, and wake capability. Returns last-known readings with timestamps and axis-labeled formatting. Category filter (13 categories) and listOnly discovery mode. No root requiredadb_iio_read— Read raw hardware data from the Linux IIO subsystem. Auto-discovers IIO devices, classifies by kernel driver. On Tensor/Exynos: exposes per-rail ODPM power monitors showing real-time power consumption per SoC subsystem. Generic IIO path handles raw channels with calibrated scale+offset. Root required
Result Handles (3 tools)
adb_result_list— List active result handles in the tempdir-backed cache. Shows tool, name, size, age, and remaining TTL for each handleadb_result_get— Retrieve the content of a stored handle by tool + name. Returns the original content blocks as the source tool produced them; updates last-accessed time. For URI-based retrieval, use theresult://{tool}/{name}MCP Resource insteadadb_result_drop— Delete a stored result handle, or clear all handles in the current namespace. Pass bothtoolandnameto drop one specific handle, orall: trueto drop everything. Useful before changing DA_AUTH_TOKEN (which would otherwise leave orphans under the old token-hash directory)
MCP Resources (5)
Read-only device state surfaces accessible by MCP clients:
device://list— List of all connected devices with state and model infodevice://info/{serial}— Device properties (model, OS, build, ABI)device://battery/{serial}— Parsed battery status (level, charging, temperature, voltage)device://telephony/{serial}— Telephony registry state for cellular analysisresult://{tool}/{name}— Stored tool result handle. Resolve by URI; created by tools that opt into result-handle storage via theresult_handleparameter. Listed by adb_result_list
MCP Prompts (4)
Pre-built workflow templates for common multi-step debugging tasks:
debug-crash— Clear logcat → restart app → wait for reproduction → capture crash buffer → analyzedeploy-and-test— Build → install → clear logcat → start watcher → launch → screenshot → reporttelephony-snapshot— Capture telephony state, SIM/network operator, network type → summarize anomaliesairplane-cycle-test— Start watcher → baseline telephony → cycle airplane mode → compare pre/post state
Key Features
Device Caching
Device discovery results are cached with a configurable TTL (default 5s), eliminating redundant adb devices subprocess calls during rapid tool sequences. Cache auto-invalidates on connection errors and after wireless connect/disconnect/pair operations.
Transient Failure Retry
The ADB bridge automatically retries on transient failures (device offline, connection reset, protocol fault) with configurable retry count and exponential backoff. Diagnostic commands skip retries to surface real issues immediately.
Output Protection
All ADB output passes through the OutputProcessor which normalizes line endings, enforces configurable character limits, and provides contextual truncation at logical boundaries (line breaks, section separators) rather than cutting mid-line. Includes structured parsers for battery, meminfo, and getprop output.
Persistent Logcat Streaming
Background logcat watchers run as spawned processes with ring buffer accumulation. Each poll returns only new lines since the last read. Supports multiple concurrent sessions (up to 10) with independent filters. Process cleanup handlers prevent orphaned adb logcat processes on server exit.
UI Hierarchy Analysis
Full view tree capture via uiautomator dump with parsed XML extraction. Returns structured element data including text, resource-id, content-description, class names, bounds coordinates with tap-ready center points, and interaction flags. Pre-compiled regex attribute extraction for efficient parsing.
Security Middleware
Multi-layered security activated via DA_SECURITY=true. Provides command blocklist/allowlist filtering, rate limiting (commands per minute), and audit logging with automatic credential redaction. Security checks are integrated into adb_shell, adb_root_shell, adb_multi_shell, adb_multi_compare, adb_input, adb_batch_actions, and adb_start_activity. Configurable via environment variables for different deployment scenarios.
Input Sanitization
All tools that interpolate user-supplied parameters into shell command strings validate inputs against shell metacharacters before execution. Package names, property keys, service names, setting keys, test identifiers, network interface names, and tcpdump filters are all validated through a centralized validateShellArg() function that rejects ;, |, &, $, backticks, parentheses, and other injection vectors. File paths use single-quoted shell escaping to prevent $() command substitution. The adb_input tool applies type-specific validation: tap/swipe accept only numeric coordinates, keyevent accepts only alphanumeric keycodes, and text is shell-escaped for literal delivery. The adb_batch_actions tool enforces the same per-action-type validation (digits-only for coordinates, alphanumeric for keycodes, shell-escape for text) and routes every assembled command through the security middleware. Deserialized JSON from snapshot files is validated before shell interpolation. Every z.number() parameter across all 209 tools has explicit .min()/.max() Zod bounds to prevent resource exhaustion from extreme values. The LocalBridge has explicit handlers for every ADB subcommand used by tool modules, preventing unquoted fallthrough to the default shell handler. In on-device mode, privilege escalation uses a frozen 16-command allowlist and restricted-path regex — the elevation set is ReadonlySet + Object.freeze, not configurable at runtime. The HTTP/SSE transport denies cross-origin requests by default (configurable via DA_HTTP_CORS_ORIGIN), the plugin registry verifies SHA-256 integrity hashes and prevents path traversal via directory containment checks, and the workflow engine enforces step count (200), sleep duration (5 min), and repeat iteration (100) limits. Fetch helpers enforce a 5 MB response body limit. Getprop output parsing handles Windows \r\n line endings via .trim() before regex matching, and dual SIM slot counts are capped at 4 to prevent resource exhaustion from corrupted device properties.
Multi-Device Orchestration
Run commands, install APKs, and compare outputs across multiple connected devices in parallel. Essential for comparative testing across Android versions and device models.
Snapshot/Restore
Capture comprehensive device state snapshots (packages, settings across all namespaces, system properties) to JSON files. Compare current state against saved snapshots to detect drift. Restore settings from snapshots for reproducible test environments.
Network Traffic Capture
On-device packet capture via tcpdump with pcap file pull for Wireshark analysis. Includes active connection listing via ss/netstat with /proc/net fallback for devices without those tools.
CI/CD Integration
Purpose-built tools for automated pipelines: wait for device boot with polling, structured readiness checks, and instrumented test execution with parsed pass/fail results.
Plugin Architecture
Dynamic tool module loading from a configurable plugins directory. Plugins are standard JavaScript ESM modules that export a register(ctx) function receiving the full ToolContext. Loaded at server startup, enabling community contributions without modifying core code.
Community Plugin Registry
Search, install, and manage plugins from a configurable registry URL. Shows install status, version comparison, and available updates. Downloads plugin files with companion metadata into the plugins directory for loading on next restart. Security features include SHA-256 integrity verification (when provided by the registry manifest), path traversal protection, and register() export sanity checking.
Baseband/Modem Integration
Deep cellular radio inspection tools for advanced Android development and research. Extracts modem firmware identification, cell identity parameters (CID, TAC, EARFCN, PCI), raw signal measurements (RSRP, RSRQ, SINR), neighboring cell surveys, carrier configuration, and multi-source modem logs (RIL radio buffer, telephony framework, kernel dmesg). Supports Shannon/Exynos, Qualcomm, MediaTek, and Unisoc chipset families via standard Android telephony APIs. Includes Google Tensor SoC detection (gs101/gs201/zuma/zumapro) for automatic Shannon modem path routing on Pixel 6–9 devices. Dual SIM detection reports per-slot SIM state, operator, network type, and country for DSDS, DSDA, and TSTS configurations.
Accessibility Auditing
Automated WCAG accessibility checks on the live UI hierarchy. Detects missing labels on interactive elements, undersized touch targets below the 48dp guideline (density-aware), images without content-descriptions, clickable elements missing focusability, and duplicate content-descriptions. Generates structured reports with severity levels. Includes a dedicated accessibility tree view for screen reader debugging.
Regression Detection
Capture performance baselines (memory, CPU, frame stats, battery, network state) and compare subsequent runs against them. Configurable regression thresholds for memory (+20%), CPU (+50%), and jank rate (+25%). Maintains a history of baselines for trend analysis across releases.
Device Farm Integration
Cloud-based test execution via Firebase Test Lab through the gcloud CLI. Run instrumented tests across multiple device models and API levels, retrieve structured results, and list available test matrix configurations. Graceful fallback with setup instructions if gcloud is unavailable.
HTTP/SSE Transport
Alternative to stdio for browser-based MCP clients. Set DA_HTTP_PORT to start an HTTP server with SSE streaming. Provides /sse (client subscription), /message (JSON-RPC), and /health endpoints. Cross-origin requests are denied by default — set DA_HTTP_CORS_ORIGIN to explicitly allow a specific origin.
Test Session Management
Structured test workflows with numbered steps. Each step captures a screenshot and logcat snapshot into an organized directory with a Markdown manifest. Designed for reproducible test documentation.
AT Command Interface
Direct AT command passthrough to the modem via root access, enabling raw interrogation beyond the Android telephony framework. Multi-chipset support auto-detects device nodes for Samsung Shannon/Exynos, Qualcomm Snapdragon, MediaTek, Unisoc/Spreadtrum, and generic USB modems. Input validation rejects shell metacharacters from both AT command strings and device node paths before root shell interpolation. A safety blocklist prevents accidental execution of dangerous commands (AT+CFUN=0, AT+EGMR, etc.) with an explicit force override.
Screenshot Diffing
True pixel-level visual regression detection. Captures named screenshot baselines and compares the current screen state by decoding PNG pixel data (IHDR parsing, IDAT decompression, all 5 PNG filter types) and comparing actual RGB values. Reports changed pixel count and percentage, bounding box of the changed region with vertical screen position, and dimension/size deltas. Supports a tolerancePercent parameter (0–100) that absorbs minor dynamic changes like clock displays or notification badges — a 1% tolerance reliably absorbs nav bar clock changes (~0.5% of pixels) while catching any real UI regression. SHA-256 fast-path for exact matches. Zero external dependencies.
Workflow Orchestration
Declarative JSON workflow engine for repeatable multi-step device operations. Supports variable substitution ({{pkg}}), conditional steps (if expressions with ==, !=, contains), loops (repeat, capped at 100 iterations), and result capture into variables for downstream steps. Actions map directly to ADB bridge operations with full security middleware enforcement. Workflow validation enforces a 200-step maximum and 5-minute sleep cap per step to prevent resource exhaustion from malicious or malformed workflow definitions.
Split APK Management
Support for modern Android delivery formats. Install app bundles via install-multiple, inspect split APK structure (base + config splits for language, density, ABI), extract all splits locally for analysis, and list APEX modules.
Device Mirroring
Live screen mirroring via scrcpy integration. Supports windowed mode for visual feedback and headless mode for recording-only workflows. Per-device session tracking enables simultaneous mirroring of multiple connected devices. Process cleanup handlers prevent orphaned scrcpy processes.
Automated Test Generation
Analyzes live UI hierarchy and package intent registrations to auto-generate test workflow JSON compatible with the workflow orchestration engine. UI-based generation taps each interactive element, screenshots, and checks for crashes. Intent-based generation launches each exported activity with crash detection.
OTA Update Monitoring
Tracks comprehensive system fingerprint (build ID, Android version, security patch, bootloader, baseband firmware, kernel version, A/B partition slot) across sessions. Compares current state against saved fingerprints to detect OTA updates. Identifies exactly which fields changed and recommends re-baselining performance metrics and screenshots after updates.
RIL Message Interception
Persistent Radio Interface Layer message capture from the Android radio logcat buffer. Spawns a background process that accumulates and categorizes RIL messages into: registration, cell_info, signal, network, security, handover, data, radio_state, sms, and NAS events. Poll-based retrieval with category filtering. Useful for passive monitoring of baseband-framework communication for radio diagnostics and cellular network research. Session limit (5) and process cleanup handlers prevent resource exhaustion.
Device Profile Library
Device-specific knowledge base containing hardware identification, chipset family, known modem device nodes, AT command compatibility, root requirements, dual SIM slot count, and quirks. Auto-detects profiles from connected devices and matches against a built-in library of known devices. Saved profiles persist across sessions and improve auto-detection accuracy for tools like adb_at_detect. Community-extensible through saved profile files.
WebSocket Transport
Alternative to stdio and HTTP/SSE for MCP clients that benefit from true bidirectional streaming. Lower latency than SSE polling with better web framework compatibility. Requires the ws npm package as an optional peer dependency. Set DA_WS_PORT to enable.
Modem Firmware Analysis
Comprehensive multi-component firmware identification, diffing, and history tracking. Parses baseband version strings for 6 chipset families: Shannon/Exynos (including Google Pixel/Tensor g5123b-* format and classic Samsung S5123AP_CL* format), Qualcomm MPSS branch/version/build, MediaTek MOLY branch/release/milestone, Unisoc/Spreadtrum SoC model/version, HiSilicon/Kirin model/carrier code, and Intel XMM model/branch. Also parses bootloader versions (Pixel codename/version/build, Samsung model/carrier/revision) and RIL implementation strings (Samsung S.LSI vendor/id/API/build date, Qualcomm, MediaTek). The firmware probe reports 8 sections: baseband, bootloader, RIL, kernel, security/build, partition/boot (A/B slot, secure boot, verified boot, flash lock), VBMeta integrity, and OTA partition inventory. The diff tool compares all firmware components between saved fingerprints or live device state, with deep parsed sub-diffs for baseband and bootloader. The history tool tracks multi-component firmware progression across OTA fingerprints.
Workflow Marketplace
Community sharing layer for the workflow orchestration engine. Search a registry of community-contributed test workflows, diagnostic sequences, and audit procedures. Download and install workflows directly for immediate execution with adb_workflow_run. Export local workflows with marketplace metadata and auto-generated registry manifest entries for submission. SHA-256 integrity verification on download.
GraphQL API
Optional HTTP endpoint serving a GraphQL API for composed device queries. Enables clients to fetch device info, battery, network, and arbitrary properties in a single request instead of multiple MCP tool calls. POST body size limited to 1 MB. Device properties are pre-fetched once per resolution to minimize subprocess calls. Requires the graphql npm package as an optional peer dependency. Set DA_GRAPHQL_PORT to enable.
SELinux & Permission Auditing
Inspects SELinux enforcement mode, queries AVC denials from logcat and kernel audit logs, and audits runtime permission grants per package. Groups granted permissions by dangerous category (Camera, Location, Phone, SMS, etc.) and flags high-sensitivity grants like background location and manage-external-storage. Extends the security auditing surface to the OS permission layer.
Thermal & Power Profiling
Captures thermal zone temperatures from sysfs, per-CPU frequency scaling states and governors, cooling device activity, and battery drain rates. Complements regression detection with thermal/power baselines for issues that manifest as heat or battery drain rather than frame drops. Includes timed drain measurement with mA/mW/estimated-%per-hour calculations.
Network Device Discovery
Scans the local network for ADB-enabled devices via ARP table queries and optional IP range sweeps. Probes common ADB ports (5555-5558) with batched parallel TCP connection attempts. Extracts device WiFi IPs via multiple methods. Auto-connect mode discovers and connects to devices in one step. Streamlines wireless debugging workflows.
QEMU/KVM Virtualization
On-device virtual machine management using QEMU with KVM hardware acceleration. Enables running guest Android VMs directly on the physical device — a capability unique to DeepADB. Dynamic resource allocation auto-detects host CPU cores and physical RAM, reserving 1 core and 35% of memory for the host OS to prevent starvation. Multi-VM support tracks resource consumption across concurrent VMs, refusing new VMs when the pool is exhausted rather than degrading host performance. Disk image management with qcow2 (sparse, snapshot-capable) and raw formats. ADB port forwarding to guest VMs enables DeepADB's full tool suite to target both host and guest devices simultaneously. Process lifecycle tracked via the centralized cleanup registry with SIGTERM/SIGKILL shutdown. Path containment verification on all image operations prevents directory traversal.
ToolContext Architecture
All 49 tool modules receive a unified ToolContext dependency bundle containing server, bridge, deviceManager, logger, security, and config. Adding new cross-cutting dependencies requires no module signature changes.
Environment Variables
Variable | Default | Description |
| Auto-detect | Force on-device mode ( |
| Auto-detect | Path to ADB binary (ignored in on-device mode) |
|
| Default command timeout in milliseconds |
|
| Max output characters before truncation |
|
| Max logcat lines per snapshot |
| (auto) | Default device serial (auto-selects if single device) |
| OS temp | Temp directory for screenshots, pulled files, bug reports, test sessions, snapshots |
|
| Device list cache TTL in milliseconds (0 = disabled) |
|
| Number of retries for transient ADB failures |
|
| Base retry delay in ms (doubles each attempt) |
|
| Log level: debug, info, warn, error |
| (auto-detect) | Set to |
|
| MCP Resource cache TTL in ms. Set to a positive value to cache resource reads (device://info, device://battery, etc.) for that duration. |
|
| Storage root for tempdir-backed tool result handles. Override to relocate the store off the default temp directory. |
|
| Per-handle TTL in seconds. Handles older than this are evicted on startup sweep and during periodic eviction. Bounded to [60, 7 days]. |
|
| Per-handle size cap. Tools attempting to store a content block larger than this fail with an error. |
|
| Total result-handle store size cap across all handles. Triggers LRU eviction when exceeded. |
|
| Maximum number of active handles. Triggers LRU eviction when exceeded. |
|
| Enable security middleware (command filtering, rate limiting) |
| (none) | Comma-separated list of blocked shell command substrings |
| (none) | Comma-separated allowlist (if set, only matching commands run) |
|
| Max commands per minute (0 = unlimited) |
|
| Network reachability target used by |
|
| Log all executed commands for audit trail (set to |
|
| Directory to scan for plugin .js modules at startup |
| GitHub default | URL of the community plugin registry JSON manifest |
| (disabled) | Set to a port number to enable HTTP/SSE transport mode |
|
| Bind address for HTTP/SSE, WebSocket, and GraphQL servers |
| (none — open) | Bearer token for network transports. When set, all HTTP/SSE/WS/GraphQL requests require |
| (none — deny) | Allowed CORS origin for HTTP/SSE |
| (disabled) | Set to a port number to enable WebSocket transport mode (requires |
| (none — deny) | Allowed CORS origin for WebSocket health endpoint |
| (disabled) | Set to a port number to enable the GraphQL API endpoint (requires |
| (none — deny) | Allowed CORS origin for GraphQL API |
| (derived from DA_REGISTRY_URL) | URL of the workflow marketplace JSON manifest |
| (none) | Numeric PIN used by |
Project Structure
DeepADB/
├── src/
│ ├── index.ts # Entry point — stdio, HTTP/SSE, WebSocket, or GraphQL transport
│ ├── server.ts # MCP server wiring, config, module registration (exports CreateServerResult)
│ ├── http-transport.ts # HTTP/SSE transport server for browser clients
│ ├── ws-transport.ts # WebSocket transport (optional `ws` peer dependency)
│ ├── graphql-api.ts # GraphQL API endpoint (optional `graphql` peer dependency)
│ ├── tool-context.ts # Unified dependency bundle (ToolContext interface)
│ ├── bridge/
│ │ ├── adb-bridge.ts # Core ADB subprocess wrapper, retry logic, error types
│ │ ├── local-bridge.ts # On-device direct execution bridge with privilege escalation (Termux/local mode)
│ │ └── device-manager.ts # Device discovery, TTL cache, serial routing
│ ├── tools/
│ │ ├── health.ts # Toolchain health check (1 tool)
│ │ ├── runtime-audit.ts # Unified read-only runtime readiness audit (1 tool)
│ │ ├── device.ts # Device info and properties (3 tools)
│ │ ├── shell.ts # Shell and root command execution (2 tools)
│ │ ├── packages.ts # App lifecycle, install, permissions, intents (12 tools)
│ │ ├── database-inspector.ts # Package-scoped read-only Room/SQLite inspection (1 tool)
│ │ ├── files.ts # File operations — push, pull, write, find, grep, replace, stat, checksum, chmod, chown, touch, fsinfo (18 tools)
│ │ ├── logs.ts # Logcat snapshots — filtered (3 tools)
│ │ ├── logcat-watch.ts # Persistent logcat with ring buffer and poll (4 tools)
│ │ ├── diagnostics.ts # dumpsys, telephony, battery, network, perf, bugreport, crash logs, heap dump (9 tools)
│ │ ├── ui.ts # Screenshots, input, activity, UI hierarchy, annotated screencap, screen state (8 tools)
│ │ ├── input-gestures.ts # Drag, long press, double tap, text, URL, orientation, clipboard, tap-element, wait-element, wait-stable, scroll-until, compressed screenshot, batch actions, fling, pinch, screen size, device state, notifications (18 tools)
│ │ ├── screen-record.ts # Screen video recording start/stop (2 tools)
│ │ ├── control.ts # Airplane, WiFi, data, location, screen, settings, reboot (9 tools)
│ │ ├── wireless.ts # WiFi pairing, connect, disconnect, TCP/IP (4 tools)
│ │ ├── forwarding.ts # Port forwarding — forward, reverse, list, remove, managed tunnels with auto-port-pick (8 tools)
│ │ ├── emulator.ts # AVD list, start, stop with on-device KVM/QEMU detection (3 tools)
│ │ ├── qemu.ts # QEMU/KVM VM management — setup, images, start, stop, status, guest ADB connect/disconnect/shell (8 tools)
│ │ ├── testing.ts # Structured test sessions with numbered steps (3 tools)
│ │ ├── multi-device.ts # Multi-device shell, install, compare, comparative testing (4 tools)
│ │ ├── snapshot.ts # Device state capture, compare, restore (3 tools)
│ │ ├── network-capture.ts # tcpdump start/stop, network connections (3 tools)
│ │ ├── ci.ts # CI wait-boot, device-ready, run-tests (3 tools)
│ │ ├── plugins.ts # Plugin loader, info, and dynamic tool loading (2 tools)
│ │ ├── baseband.ts # Modem/baseband inspection and radio diagnostics (6 tools)
│ │ ├── accessibility.ts # Automated WCAG accessibility auditing (3 tools)
│ │ ├── regression.ts # Performance baseline and regression detection (3 tools)
│ │ ├── device-farm.ts # Firebase Test Lab integration via gcloud (3 tools)
│ │ ├── registry.ts # Community plugin registry search/install (3 tools)
│ │ ├── at-commands.ts # AT command modem interface, Shannon session, cross-validation (6 tools)
│ │ ├── screenshot-diff.ts # Visual regression — screenshot baseline/diff (3 tools)
│ │ ├── workflow.ts # Declarative workflow orchestration engine (3 tools)
│ │ ├── split-apk.ts # App bundles, split APKs, APEX modules (4 tools)
│ │ ├── mirroring.ts # Live screen mirroring via scrcpy (3 tools)
│ │ ├── test-gen.ts # Automated test workflow generation (3 tools)
│ │ ├── ota-monitor.ts # OTA update monitoring and fingerprinting (3 tools)
│ │ ├── ril-intercept.ts # RIL message interception from radio buffer (3 tools)
│ │ ├── device-profiles.ts # Device profile library with built-in entries (3 tools)
│ │ ├── firmware-analysis.ts # Modem firmware version parsing and diffing (3 tools)
│ │ ├── workflow-market.ts # Workflow marketplace — search, install, export (3 tools)
│ │ ├── selinux-audit.ts # SELinux status, AVC denials, permission auditing (3 tools)
│ │ ├── thermal-power.ts # Thermal zones, CPU frequency, battery drain (3 tools)
│ │ ├── network-discovery.ts # ADB-over-network scanning and auto-connect (3 tools)
│ │ ├── app-network.ts # Per-app UID routing and network-policy context (1 tool)
│ │ ├── wear.ts # Wear OS Data Layer phone/watch preflight (1 tool)
│ │ ├── sensors.ts # Hardware sensor enumeration, IIO power monitor reading (2 tools)
│ │ ├── result-handles.ts # Tempdir-backed result handle store — list, drop, drop-all (3 tools) + the result://{tool}/{name} resource
│ │ ├── wireless-firmware.ts # WiFi, Bluetooth, NFC, GPS firmware identification (4 tools)
│ │ ├── build.ts # Gradle build and install (2 tools)
│ │ ├── resources.ts # MCP Resources — 4 device-state surfaces: device://info|battery|telephony|list (5th, result://, lives in result-handles.ts)
│ │ └── prompts.ts # MCP Prompts — workflow templates (4 prompts)
│ ├── middleware/
│ │ ├── auth.ts # Bearer token authentication for network transports (DA_AUTH_TOKEN)
│ │ ├── output-processor.ts # Contextual truncation, structured parsers, settledValue helper
│ │ ├── security.ts # Command filtering, rate limiting, audit logging with redaction
│ │ ├── sanitize.ts # Shell injection prevention — validateShellArg/validateShellArgs/shellEscape
│ │ ├── chipset.ts # Shared chipset family detection, modem path mapping, SIM config detection
│ │ ├── fetch-utils.ts # Shared HTTP helpers with 5 MB streaming response size limit
│ │ ├── png-utils.ts # Zero-dependency PNG decode/encode/draw primitives for screenshot annotation and diffing
│ │ ├── ui-dump.ts # Shared uiautomator XML capture with concurrent-safe paths, on-device /data/local/tmp routing, and cleanup
│ │ ├── cleanup.ts # Centralized process cleanup registry for SIGINT/SIGTERM/exit
│ │ ├── logger.ts # stderr-safe logging (MCP-compliant)
│ │ ├── fs-utils.ts # Filename sanitization, atomic write, private-dir helpers, within-dir containment check
│ │ ├── parse-utils.ts # Shared parseIntSafe for env-var numeric parsing (single source of truth)
│ │ └── result-handle.ts # Tempdir-backed tool result content cache with TTL, LRU, and token-hash isolation
│ └── config/
│ └── config.ts # Configuration, env vars, startup validation
├── package.json
├── tsconfig.json
├── server.json # MCP Registry metadata (io.github.fullread/deepadb)
├── .gitignore
├── README.md
├── SECURITY.md # Threat model, security architecture, deployment hardening, vulnerability reporting
├── CHANGELOG.md # Version history from v0.1.0 to current
├── LICENSE # Apache 2.0 license
└── tests/
├── run-all.mjs # Run all test suites sequentially with summary (tracks skipped counts)
├── test-hw.mjs # Hardware core: health, identity, baseband, thermal, profiles, wireless firmware, crash analysis (34 tests)
├── test-shell-files.mjs # Shell, filesystem, packages, diagnostics (24 tests)
├── test-ui-control.mjs # UI hierarchy, screenshots, settings, input gestures, UI automation, device awareness, accessibility, screen lock/unlock, multi-touch (46 tests)
├── test-monitoring.mjs # Logcat watchers, snapshots, OTA, regression, workflows (43 tests)
├── test-security.mjs # Input sanitization, shell injection, AT command safety, QEMU shell escaping, heap-dump validation (116 on-device, 105 host)
├── test-lifecycle.mjs # App lifecycle, file push/pull, input, port forwarding, screen recording, test sessions (24 tests)
├── test-analysis.mjs # Thermal/snapshot/regression comparison, firmware diff, screenshot diff, test gen, RIL intercept, AT cross-validation, permission management (23 tests)
├── test-boundaries.mjs # Zod bounds enforcement, input injection, error paths, sensitive data protection, wireless ADB coverage, multi-device basics, tunnel automation, device-free coverage boundaries (78 tests)
├── test-sensors.mjs # HAL sensors, IIO power monitors, category filters, formatting, wake-up, rate display (30 tests)
├── test-files-extended.mjs # File tool coverage — write, find, stat, checksum, mkdir, rm, move, copy, chmod, touch, fsinfo, chown, grep, replace; push safety; sed-escape regression (95 tests)
├── test-result-handles.mjs # Result handle store — listing, retrieval, drop, isolation, eviction (19 tests)
├── test-qemu.mjs # QEMU/KVM setup, image management, VM status, guest connectivity errors (13 on-device tests)
├── test-qemu-boot.mjs # QEMU Alpine VM boot with auto-fetch of kernel/initrd, KVM acceleration, topology detection, guest ADB connectivity (17 on-device tests)
├── test-supply-chain.mjs # Supply-chain hardening checks for fetch and network paths (24 tests)
├── test-sanitize-fuzz.mjs # Property-based fuzzing of shell sanitizers — shellQuote/shellEscape round-trip, validateShellArg rejection (19 tests)
├── test-transports.mjs # Transport smoke — HTTP/SSE + WebSocket MCP round-trip, GraphQL health query (8 tests)
└── lib/
└── harness.mjs # Shared test harness (stdio JSON-RPC transport, assertion primitives)Tech Stack
Runtime: Node.js ≥22 (ES2024, ESM; Node 22.12+ for coverage)
Language: TypeScript 6.0 (strict mode, NodeNext module resolution)
MCP SDK:
@modelcontextprotocol/sdk^1.24.0 (currently resolves to 1.30.0)Validation: Zod ^4.4.3
Transport: stdio (JSON-RPC), HTTP/SSE, WebSocket (optional
ws), GraphQL API (optionalgraphql)
License
Apache License 2.0 — see LICENSE and NOTICE. The v1.1.2 release migrated from MIT to Apache 2.0 for the explicit patent grant and contributor attribution requirements; existing forks/installs remain valid under the prior MIT terms.
Available Tools
204 toolsadb_a11y_auditA
Run an automated accessibility audit on the current screen. Checks for: missing labels on interactive elements, undersized touch targets (<48dp), images without content-descriptions, clickable elements missing focusability, and duplicate descriptions. Returns a structured report with severity and rule violations.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the audit scope (specific checks) and output format (structured report with severity and rule violations), which is adequate for a non-mutating diagnostic tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states the purpose concisely, second lists the checks and output. No redundant or irrelevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity, the description covers checks and output (structured report) adequately. No output schema exists, but the description mentions severity and rule violations, which is sufficient for a diagnostic audit tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter (device) has 100% schema coverage with a description. The tool description adds no further semantics beyond what the schema provides, earning baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs an automated accessibility audit on the current screen and lists specific checks (labels, touch targets, content-descriptions, focusability, duplicate descriptions), distinguishing it from sibling tools like adb_a11y_touch_targets and adb_a11y_tree.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for accessibility auditing but does not explicitly state when to use this tool versus alternatives like adb_a11y_touch_targets (which may focus on touch targets), nor does it provide when-not-to-use or prerequisite conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_a11y_touch_targetsA
List all interactive elements with their touch target dimensions in dp. Highlights elements below the 48dp minimum. Useful for quickly identifying cramped UI layouts.
| Name | Required | Description | Default |
|---|---|---|---|
| belowMinOnly | No | Only show elements below the 48dp minimum | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description does not disclose technical details like how the list is obtained, permissions, or any side effects. It covers the basic behavior but could be more transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy, front-loaded with main action, effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple list tool; describes output (touch target dimensions) and use case. Lacks return format details since no output schema, but sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description adds minimal context beyond the schema, e.g., relating belowMinOnly to the 48dp minimum but not specifying parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists interactive elements with touch target dimensions and highlights those below 48dp, distinguishing it from siblings like adb_a11y_audit and adb_a11y_tree.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use case is implied for identifying cramped layouts, but no explicit when-not-to-use or alternative tools mentioned. Adequate given sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_a11y_treeA
Dump the accessibility-focused view of the UI hierarchy. Shows only elements relevant to screen readers: their roles, labels, states, and navigation order. Filters out decorative/layout containers.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It reveals the tool outputs only accessibility-relevant elements and filters decorative containers, but does not disclose side effects, required permissions, the need for an accessibility service, output format, or whether it is a purely read operation. Agents may not know if auth or special settings are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, no redundant information, and every word adds value. It is well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (single optional parameter, no nested objects, no output schema), the description provides sufficient context for basic invocation. It explains what the tool does and what it filters. However, it lacks details on output format or prerequisites, which would be helpful for agent completeness but not critical for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, as the single optional parameter 'device' is described as 'Device serial' in the schema. The tool description adds no further meaning or constraints beyond that, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool dumps the accessibility-focused view of the UI hierarchy, showing only screen-reader-relevant elements (roles, labels, states, navigation order) and filtering out decorative/layout containers. It distinguishes itself from siblings like adb_a11y_audit and adb_a11y_touch_targets by focusing on the raw tree rather than auditing or touch target sizing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it should be used for inspecting accessibility elements, but does not explicitly state when to use or when not to use it compared to alternatives. It lacks direct guidance on preferring this tool over adb_ui_dump or adb_a11y_audit, relying on implicit differentiation through the filtering detail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_airplane_cycleA
Cycle airplane mode on then off after a delay. Forces cellular re-registration — useful for radio diagnostics and network testing.
| Name | Required | Description | Default |
|---|---|---|---|
| delaySeconds | No | Seconds to keep airplane mode on (1-60, default 3) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description explains the behavioral effect (forces cellular re-registration). With no annotations, it carries the full burden. Could mention any prerequisites or side effects, but the core behavior is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences. First sentence states the action, second provides context and purpose. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple toggle tool with no output schema, the description is fairly complete. It explains the delay and the purpose. Could mention what happens on failure, but not essential given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage for both parameters (delaySeconds with default, device with serial). The description does not add additional meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action ('Cycle airplane mode on then off after a delay') and the purpose ('Forces cellular re-registration — useful for radio diagnostics and network testing'). Distinct from sibling tools like adb_airplane_mode which likely sets mode statically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly specifies use cases (radio diagnostics, network testing). Does not provide explicit when-not-to-use or alternatives, but the context implies it's for temporary cycling rather than setting a fixed mode.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_airplane_modeA
Toggle airplane mode on/off. Useful for resetting cellular registration during radio testing.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | true = enable airplane mode, false = disable | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only says 'toggle on/off' without detailing side effects (e.g., disconnecting all radios, possible delays) or required permissions. This is insufficient for a mutation operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no extraneous text. The first sentence states the action, the second provides a use case. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two parameters and no output schema, the description covers the core purpose and a practical use case. It could mention potential impact on ongoing operations, but overall it is sufficiently complete for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both parameters adequately described. The description adds no new information beyond the schema; 'toggle' aligns with the boolean parameter but doesn't clarify that it's a set action, not a true toggle.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'toggle' and the resource 'airplane mode', making the tool's purpose immediately obvious. It also provides a specific use case (resetting cellular registration during radio testing), which distinguishes it from siblings like `adb_airplane_cycle`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a concrete use case (radio testing) but does not explicitly state when not to use this tool or mention alternatives like `adb_airplane_cycle`. The guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_apex_listA
List installed APEX modules on the device. APEX (Android Pony EXpress) modules deliver updatable system components. Shows module name, version, and active/staged status.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions the output includes module name, version, and status, but does not specify side effects, permissions, or whether the information is a snapshot. This is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences with no extraneous information. It is front-loaded with the action and immediately provides context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately conveys what the output includes (module name, version, active/staged status). It could mention if the list is real-time or cached, but overall sufficient for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one optional parameter 'device' having a brief description. The description does not add additional meaning beyond the schema, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists installed APEX modules and provides context on what APEX is. It uses a specific verb (List) and resource (APEX modules), distinguishing it from other adb list tools like adb_list_packages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks explicit guidance on when to use this tool versus alternatives. It does not mention when not to use it or suggest other tools for similar tasks. The context is implied but not articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_at_batchA
Send multiple AT commands sequentially and capture all responses. Useful for running a diagnostic sequence. Requires root.
| Name | Required | Description | Default |
|---|---|---|---|
| commands | Yes | Array of AT commands to send in order (max 50) | |
| port | No | Modem device node (auto-detects if omitted) | |
| timeout | No | Timeout per command in ms | |
| delayMs | No | Delay between commands in ms (0-10000, default 500) | |
| force | No | Bypass dangerous command safety checks | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must cover behavior. It states 'requires root' and sequential execution, but does not disclose risks like potential device impact, response format, or error handling. The existence of a 'force' parameter hints at danger but is not explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences stating the core action and a key prerequisite (root). No filler, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite parameter richness and no output schema, the description lacks details on return format, error behavior, or step-by-step usage. A diagnostic tool would benefit from more context on expected outcomes or failure scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the baseline is 3. The description adds no additional parameter meaning beyond the schema descriptors. No extra context on parameter interactions or usage tips.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends multiple AT commands sequentially and captures responses. The phrase 'Useful for running a diagnostic sequence' provides context and differentiates it from single-command siblings like adb_at_send.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it's useful for diagnostic sequences and requires root, giving clear context. However, it does not explicitly exclude single-command use or mention alternatives, though the batch nature implies when to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_at_cross_validateA
Cross-validate baseband firmware by comparing AT command responses (direct modem interrogation) against Android system properties (getprop). Discrepancies may indicate firmware tampering, incomplete OTA updates, or property spoofing. Sends ATI (identification), AT+CGMR (firmware revision), and AT+CGMM (model) to the modem and compares with gsm.version.baseband, ro.hardware.chipname, and related properties. Requires root.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | Modem device node (auto-detects if omitted) | |
| timeout | No | Response timeout per command in ms | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently describes the AT commands sent and the properties compared, and notes the root requirement. It does not detail the output format or error handling, but the core behavior is well explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: the first sentence states the purpose, the second adds motivational context, and the third lists specifics. Every sentence adds value, and there is no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main functionality and prerequisites, but it does not specify the output format or return behavior. Since there is no output schema, more information about what the agent can expect (e.g., list of mismatches, exit code) would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds some context by listing the specific AT commands and properties, which implicitly relates to the parameters, but does not directly enhance the parameter descriptions beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: cross-validate baseband firmware by comparing AT command responses with Android system properties. It specifies exact commands (ATI, AT+CGMR, AT+CGMM) and properties (gsm.version.baseband, ro.hardware.chipname), and explains the implications of discrepancies. This distinguishes it from sibling AT tools like adb_at_send or adb_baseband_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for when to use the tool ('discrepancies may indicate firmware tampering') and explicitly states a prerequisite ('Requires root'). However, it does not explicitly mention alternatives or when not to use, though the unique cross-validation purpose is clear from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_at_detectA
Auto-detect the modem AT command device node. Identifies the chipset family (Shannon, Qualcomm, MediaTek, Unisoc) and probes known device node paths. Requires root. Returns the first responding node.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses root requirement but fails to describe what probing entails (e.g., if it modifies state, potential failures). Without annotations, description should provide more detail on behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences covering action, identification, requirement, and return. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately covers key aspects for a simple detect tool. Could mention possible return format or error cases, but not critical for functionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Parameter 'device' is described in schema, and description adds no extra meaning. Schema coverage is 100%, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states auto-detect, identifies chipset families, probes paths, requires root, and returns first responding node. Distinguishes from siblings like adb_at_probe by focusing on detection vs. probing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies when to use (need to detect AT node) but lacks explicit when-not-to-use or alternatives. Does not compare with adb_at_probe or other related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_at_probeA
Run a standard AT diagnostic probe: modem identification, signal quality, network registration, SIM status, and supported bands. Requires root.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | Modem device node (auto-detects if omitted) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. Only discloses root requirement. Does not mention whether the probe modifies modem state, is read-only, or triggers side effects. Lacks details on auth, rate limits, or destructive potential.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences, first providing core purpose and specifics, second adding critical root requirement. No wasted words, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lists covered diagnostic areas but lacks output schema description. Agent knows what kind of data to expect (modem status, signal quality, etc.) but not the format or structure. For a probe tool, more detail on return format would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and description does not add value beyond schema descriptions. For port, schema already states 'auto-detects if omitted'. Device parameter is not elaborated. Overall, description does not enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool runs a standard AT diagnostic probe and enumerates specific checks (modem identification, signal quality, network registration, SIM status, supported bands). Distinguishes from sibling AT tools like adb_at_send or adb_at_batch by being a composite 'probe'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions 'standard' probe, implying routine diagnostic use, but does not explicitly state when to use this vs other AT tools or alternatives. No exclusion criteria or contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_at_sendA
Send a single AT command to the modem and capture the response. Requires root. Use adb_at_detect to find the correct port, or specify it manually.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | AT command to send (e.g., 'AT+CSQ', 'ATI', 'AT+COPS?') | |
| port | No | Modem device node (e.g., '/dev/umts_router0'). If omitted, auto-detects. | |
| timeout | No | Response timeout in ms (1000-30000, default 5000) | |
| force | No | Bypass dangerous command safety check | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description adds value by stating root requirement and response capture. However, it lacks details on potential side effects, error behavior, or rate limits, leaving gaps in transparency for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the core action and requirement, followed by actionable guidance. No filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides essential context (root, port detection, response capture) but lacks details on response format, error handling, or safety checks. Given the tool's simplicity and many siblings, it's mostly complete but could be improved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all 5 parameters with descriptions. The description adds minimal extra context (e.g., port auto-detection, timeout ranges). Given 100% schema coverage, baseline is 3, and the description is adequate but not enhanced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Send a single AT command to the modem and capture the response', specifying the verb, resource, and output. It distinguishes itself from siblings like adb_at_batch for batch commands and adb_at_detect for port detection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions 'Requires root' and suggests using adb_at_detect for finding the correct port or specifying manually. This provides clear context on prerequisites and a recommended alternative, though it doesn't explicitly cover when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_avd_listA
List all available Android Virtual Devices (AVDs) that can be started.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavior. It correctly implies a read-only listing with no side effects, but could add details like output format or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words, concise and front-loaded with the action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple parameterless list tool with no output schema, the description is complete enough. It could mention that it only shows AVDs on the local machine, but that is implied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the description inherently adds no parameter information beyond the empty schema. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' on a clearly defined resource 'available Android Virtual Devices (AVDs) that can be started', distinguishing it from siblings like adb_emulator_start or adb_devices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as adb_emulator_start or adb_devices, nor does it mention prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_baseband_infoA
Get comprehensive modem/baseband identification: firmware version, RIL implementation, chipset, IMEI, SIM state, and radio capabilities.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial | |
| includeImei | No | Include IMEI in output (sensitive permanent device identifier — opt-in only) | |
| result_handle | No | Optional. If provided, store this tool's result under `result://<tool>/<name>` for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. Existing handles with the same tool+name are overwritten. Use adb_result_list to see active handles, adb_result_get or the MCP Resource URI to retrieve. | |
| result_handle_ttl | No | Optional. TTL in seconds for the result handle (60 to 604800). Default 43200 (12 hours). Ignored if result_handle is not provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the types of information retrieved (e.g., IMEI, SIM state) but does not mention any behavioral traits such as whether the operation is read-only, requires specific permissions, or has side effects. For a read tool, this is minimally adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core purpose ('Get comprehensive modem/baseband identification') and then enumerates key data categories efficiently. Every word adds value, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks context about the output format and does not emphasize that IMEI retrieval is opt-in (handled by the includeImei parameter). Given the sensitivity of IMEI data, this omission could lead to misuse. However, the list of covered categories provides moderate completeness for a straightforward read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter is already documented. The description does not add meaning beyond what the schema provides; it only lists output categories. Therefore, it meets the baseline for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get comprehensive modem/baseband identification' and lists specific categories such as firmware version, RIL implementation, chipset, IMEI, SIM state, and radio capabilities. This distinguishes it from siblings like adb_device_info or adb_telephony, as it focuses specifically on baseband/modem details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. For example, it does not mention situations where adb_device_info or adb_telephony might be more appropriate. The agent must infer the scope from the listed output fields, but no explicit contextual advice is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_batch_actionsA
Execute multiple input actions in a single tool call. Reduces ADB round-trips for multi-step UI interactions. Each action runs sequentially with an optional delay between them. Supported action types: tap, swipe, fling, long_press, double_tap, keyevent, text, drag, pinch, back, home, sleep.
| Name | Required | Description | Default |
|---|---|---|---|
| actions | Yes | Array of actions to execute (1-50) | |
| delayMs | No | Delay between actions in ms (0-5000, default 100) | |
| stopOnError | No | Stop execution if any action fails (default true) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description discloses sequential execution, optional delay, and supported action types. However, it does not mention error handling (like stopOnError behavior) or partial execution outcomes, which are relevant for a batch tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus a list, efficiently conveying purpose, benefit, and supported actions. Front-loaded and concise, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, execution model, and action types, but lacks details on return value, per-action results, and error behavior beyond the stopOnError parameter. Without an output schema, more context would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The description adds minimal new meaning beyond the schema, mainly reiterating sequential execution and delay. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes multiple input actions in a single call, reducing ADB round-trips for multi-step UI interactions. It is specific and distinguishes from individual action siblings by emphasizing batch execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for multi-step interactions to reduce round-trips, but does not explicitly state when not to use it or mention alternative individual action tools. Usage context is implied but not fully guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_batteryB
Get battery status, level, temperature, and charging info
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral traits beyond the basic function. It fails to indicate that the operation is read-only, requires no special permissions, or any potential side effects. With no annotations, the description carries the burden but offers minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the tool's purpose. It is front-loaded and contains no filler. A slight improvement would be to list the specific data points more succinctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with no output schema, the description is adequate but lacks detail such as the return format (e.g., JSON), potential errors (e.g., device disconnected), or that it may require a device serial. More context would improve usability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% as the parameter 'device' has a description 'Device serial'. The tool description adds no additional meaning beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb "Get" and the resource "battery status, level, temperature, and charging info", making the tool's purpose immediately obvious. It distinguishes itself from sibling tools like adb_battery_drain by specifying a read operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as adb_device_info or adb_battery_drain. The description lacks context about prerequisites (e.g., device must be connected) or scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_battery_drainB
Measure battery drain rate over a specified duration. Takes initial and final readings and calculates mA draw, mW power consumption, and estimated percentage per hour. Useful for profiling power impact of specific operations.
| Name | Required | Description | Default |
|---|---|---|---|
| durationMs | No | Measurement duration in ms (3s-60s, default 10s) | |
| packageName | No | If specified, show battery stats for this package (requires root for detailed stats) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions taking initial and final readings and calculations but omits whether it modifies system state, requires extra permissions (except per-package via schema), or how it affects battery stats. A mutating tool like this should state if battery stats are reset or if the device remains awake.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and outputs. Every sentence is relevant and no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description should be more thorough. It does not specify output format, duration of measurement process, required device state (e.g., screen on), error conditions, or limitations (e.g., needing steady battery). This leaves gaps for the AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (all three parameters have descriptions). The tool description adds only a high-level context ('over a specified duration') but does not elaborate on parameter details beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose ('Measure battery drain rate over a specified duration') and lists specific outputs (mA draw, mW, percentage per hour). It distinguishes from sibling tool 'adb_battery' by emphasizing rate calculation over a duration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a typical use case ('power impact of specific operations') but lacks explicit guidance on when or when not to use, or alternatives. No exclusion criteria are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_bluetooth_firmwareA
Bluetooth firmware and chipset identification. Reports firmware version, BT version (4.x/5.x), chipset model, adapter state, supported profiles, LE capabilities, and bonded device count. MAC address and device name are opt-in only (permanent identifiers).
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial | |
| includeIdentifiers | No | Include Bluetooth MAC address and device name (permanent identifiers — opt-in only) | |
| maxLines | No | Lines of dumpsys output to inspect (50-2000, default 300). Raise for verbose vendor builds. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that MAC/name are opt-in (permanent identifiers) and lists reported data. However, it does not mention if Bluetooth must be enabled or any error conditions, which are relevant for a hardware identification tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. First sentence states purpose, second lists output fields and identifier note. Efficiently structured and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers the main return types (firmware version, BT version, chipset, etc.) and identifier policy. Missing details like output format or error handling, but still provides solid context for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline is 3. The description adds value for includeIdentifiers (emphasizing opt-in for permanent identifiers) and maxLines (advising to raise for verbose vendor builds), enhancing understanding beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it identifies Bluetooth firmware and chipset, listing specific data reported (firmware version, BT version, chipset model, etc.). It distinguishes from other firmware tools by specifying Bluetooth-specific information, and clarifies that MAC/device name are opt-in.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for Bluetooth firmware info but does not explicitly differentiate from sibling tools like adb_firmware_probe or adb_wifi_firmware. It provides no guidance on when to use this over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_bugreportB
Capture a full bug report zip (device state, logs, dumpsys, system info). Returns the local file path.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description omits important behavioral details such as potential side effects, file size, time to complete, or whether it is a read-only operation. The agent has no insight into the impact of calling this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. Front-loaded with purpose and includes output information. Efficiently communicates the tool's core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no output schema), the description is minimally viable. However, it lacks context about typical use cases, file handling, or performance considerations, which would be helpful for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter 'device' described as 'Device serial'. The description does not add any extra meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool captures a full bug report including device state, logs, dumpsys, system info, and returns a file path. Distinguishes from sibling tools like adb_dumpsys and adb_logcat.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. Does not mention prerequisites, limitations, or contexts where a different tool (e.g., adb_dumpsys or adb_logcat) would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_build_and_installA
Build a debug APK and install it on the connected device (convenience wrapper)
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the Android project root | |
| device | No | Device serial | |
| timeout | No | Build+install timeout in milliseconds (30s-30min, default 5min). V5 fix. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states the high-level action and mentions 'debug APK', but omits important details such as whether it overwrites existing APKs, cleans previous builds, or error handling (e.g., if device is not connected).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the main action and adds relevant context (debug APK, convenience wrapper) without unnecessary verbiage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no output schema and no annotations, the description provides the overall purpose but lacks details on return values, error conditions, and prerequisites (e.g., Android SDK setup, device connection). It is adequate but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and parameter descriptions are already clear in the schema (e.g., 'Path to the Android project root', 'Device serial', timeout with defaults and range). The description adds no additional parameter-level semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool builds a debug APK and installs it on the connected device, with the added context that it is a convenience wrapper. This distinguishes it from separate build and install tools among the siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you want to combine build and install in one step, but it does not explicitly state when to use this tool versus using separate tools like adb_gradle and adb_install, nor does it mention any prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_carrier_configA
Dump carrier configuration values. Useful for verifying carrier settings, detecting configuration anomalies, and inspecting APN configurations.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It correctly indicates the tool is read-only ('dump'), which is the primary behavioral trait. However, it does not detail the output format, potential permissions required, or any side effects. The basic read nature is conveyed, but more depth would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences. The first sentence delivers the primary action, and the second lists practical use cases. Every word earns its place with no redundancy or fluff. Front-loaded with the core verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description covers the essential purpose and use cases. It could be slightly more specific (e.g., what exactly is dumped for the default device), but it provides enough context for an agent to decide to use it for carrier configuration tasks. The lack of output schema is compensated by the clear purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for the single parameter 'device', described as 'Device serial'. The description does not add any additional semantics beyond what the schema already provides. Baseline is 3, and no extra value is added by the description for parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'dump' and the resource 'carrier configuration values', and immediately follows with specific use cases: verifying carrier settings, detecting anomalies, and inspecting APN configurations. It distinguishes itself from sibling tools by focusing exclusively on carrier configuration, which is unique among the listed adb commands.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when dealing with carrier settings by listing concrete use cases like verification and anomaly detection. However, it does not explicitly mention when not to use this tool or provide alternatives, though the sibling list suggests many other diagnostic tools. The context is clear but lacks exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_catB
Read a text file from the device
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path on device | |
| device | No | Device serial | |
| maxLines | No | Maximum lines to return (1-10000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states 'read a text file' but doesn't mention error handling, encoding, file size limits, or whether it modifies anything. Minimal transparency for a file read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence of 6 words, no fluff, front-loads the purpose. Highly concise and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is present. The description does not explain return format (lines concatenated or list?), error handling for missing files, or encoding assumptions. With no annotations and many sibling tools, the description is incomplete for an agent to use reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (all 3 parameters have descriptions). The tool description adds 'text file' context, but that is already implied by the tool name. The description does not provide additional semantic value beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Read a text file from the device' uses a specific verb ('read') and resource ('text file') with context ('from device'), clearly distinguishing it from sibling tools like adb_ls or adb_find.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Many sibling tools for file operations exist (e.g., adb_ls, adb_find, adb_pull, adb_push), and the description fails to mention appropriate contexts or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_cell_identityB
Extract detailed cell identity information: Cell ID (CID), TAC/LAC, EARFCN/ARFCN, Physical Cell ID (PCI), PLMN, and network type. Parses structured data from dumpsys for cellular network analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description only states it parses dumpsys data but does not disclose behavioral traits like required permissions, side effects, or whether it is read-only. With no annotations, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, concise and front-loaded with key information. No redundant phrases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lists extracted fields but omits important context such as Android version requirements, output format, or whether it works on emulators. Given the simplicity of the tool (single required param, no output schema), it is minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the only parameter 'device' has a description). The tool description does not add any additional meaning beyond what the schema provides. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'extracts detailed cell identity information' with specific fields (CID, TAC/LAC, EARFCN/ARFCN, PCI, PLMN, network type). It also mentions parsing from dumpsys, which distinguishes it from siblings like adb_neighboring_cells that focus on neighbor cells.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'cellular network analysis' but provides no guidance on when to use this tool versus alternatives (e.g., adb_signal_detail, adb_neighboring_cells). No when-not-to-use or prerequisite information is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_ci_device_readyA
Comprehensive CI readiness check. Verifies: device online, booted, package manager ready, screen unlocked, network available. Returns structured pass/fail results.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It mentions returns structured pass/fail results but does not state if it is read-only or has side effects. The list of checks adds some transparency but lacks explicit safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise single sentence with a list of checks. Front-loaded with purpose. Could be slightly more structured but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool with one parameter and no output schema, the description adequately explains what is checked and the result format. Lacks details on result interpretation but sufficient for its role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with description for the device parameter. The tool description does not add additional meaning beyond the schema's parameter description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it's a comprehensive CI readiness check with specific verifications (device online, booted, package manager ready, screen unlocked, network available). This distinguishes it from sibling tools like adb_ci_wait_boot which is more specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage as a readiness check but no explicit guidance on when to use this tool vs alternatives. Does not mention when not to use it or provide comparisons to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_ci_run_testsC
Run Android instrumented tests (androidTest) via am instrument and capture results. Returns structured pass/fail output.
| Name | Required | Description | Default |
|---|---|---|---|
| testPackage | Yes | Test package (e.g., 'com.example.app.test') | |
| runner | No | Test runner class (default: AndroidX JUnit runner) | androidx.test.runner.AndroidJUnitRunner |
| testClass | No | Specific test class to run (optional) | |
| testMethod | No | Specific test method (requires testClass) | |
| device | No | Device serial | |
| timeout | No | Timeout in ms (10s-10min, default 5 min) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavioral traits. It states the tool runs tests and returns results, but it does not explain side effects (e.g., does it modify device state?), dependencies (e.g., does it require the APK to be installed?), error handling, or the exact format of the structured output. The minimal description leaves significant gaps for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two sentences that efficiently convey the core purpose. It front-loads the action ('Run Android instrumented tests') and includes key details about the method and output. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 parameters, no output schema, no annotations), the description is incomplete. It does not explain the relationship to CI, the installation step, or the exact structure of the return value. An agent may lack sufficient information to correctly invoke the tool and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning each parameter already has a description. The tool description does not add extra meaning beyond what the schema provides. As per guidelines, baseline 3 is appropriate since the tool description does not enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Run', the resource 'Android instrumented tests (androidTest)', and the method 'am instrument'. It also mentions capturing results and returning structured pass/fail output. However, it does not explicitly differentiate from sibling tools that may also run tests, such as adb_multi_test or adb_permission_audit, and the CI context implied by the name is not elaborated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites, such as device readiness or APK installation. There is no explicit when-not or context for usage, leaving the agent to infer the appropriate scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_ci_wait_bootA
Wait for a device or emulator to fully boot. Polls sys.boot_completed and waits for the launcher to be ready. Essential for CI pipelines.
| Name | Required | Description | Default |
|---|---|---|---|
| timeoutSeconds | No | Maximum time to wait for boot in seconds (default 120) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the polling behavior (sys.boot_completed and launcher readiness) which gives insight into how the tool operates, without mentioning side effects or destructive actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Front-loaded with main purpose, then specifics on behavior and context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple waiting tool, description is complete. No output schema, but return behavior is implied (success/timeout). Adequate for an agent to understand the tool's function and parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description does not add meaning beyond schema for timeoutSeconds and device. The mention of polling hints at how timeout is used, but not explicitly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'wait for a device or emulator to fully boot' and specifies the resource. It distinguishes the tool's purpose from siblings like adb_ci_device_ready by mentioning polling sys.boot_completed and launcher readiness.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description says 'Essential for CI pipelines' which implies when to use, but does not explicitly state when not to use or mention alternatives. Among siblings, there is adb_ci_device_ready, but no differentiation is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_clear_dataA
Clear all data for a package (equivalent to clearing storage in settings). DESTRUCTIVE — irreversibly wipes all app data, cache, databases, shared preferences, and login state. AP5 fix: requires confirm: <packageName> to proceed.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Package name (e.g., 'com.example.app') | |
| confirm | No | Must equal packageName to confirm the destructive operation. AP5 fix: prevents accidental data loss from misclicks/mistyped invocations. | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description fully discloses behavioral traits: destructive nature, irreversibility, and specific data wiped (app data, cache, databases, shared preferences, login state). Since no annotations are provided, the description carries the full burden and meets it comprehensively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three sentences) and front-loaded with the primary action. Every sentence adds essential information: what it does, behavioral impact, and input requirements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a destructive tool with no output schema. It explains the effects, required confirmation, and operational context, leaving no significant gaps for an AI agent to misuse.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers all parameters with descriptions (100% coverage). The description adds meaning by explaining the confirm parameter's purpose and the AP5 fix to prevent accidental data loss, which goes beyond the schema's 'must equal packageName' constraint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Clear all data for a package') with a specific verb and resource, and provides a familiar analogy ('equivalent to clearing storage in settings'). It uniquely identifies this tool among numerous sibling tools focused on ADB operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description hints at when to use (to clear app data) but does not explicitly compare with alternatives like adb_force_stop or adb_uninstall. The mention of 'DESTRUCTIVE' and the confirm requirement provides some usage context, but lacks guidance on when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_clipboardA
Read or write the device clipboard. Write mode sets the clipboard content; read mode retrieves it. Clipboard access requires Android 10+ and may need the app to be in foreground on Android 12+.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | 'read' to get clipboard, 'write' to set it | |
| text | No | Text to write to clipboard (required when action='write') | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses key behavioral traits: the two modes of operation and platform version requirements. It doesn't detail return format or error conditions, but for a simple clipboard tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the core purpose, no redundant information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Fairly complete for a simple tool with 3 parameters and no output schema. Covers function, modes, and platform restrictions. Missing potential error states but acceptable given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions already present. The description adds a brief explanation of the action modes but does not significantly expand beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Read or write the device clipboard' with a specific verb and resource. It explicitly defines two distinct modes (read/write), distinguishing it from all sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides actionable context: 'Clipboard access requires Android 10+ and may need the app to be in foreground on Android 12+.' While no explicit alternatives are needed since no sibling tool targets clipboard, the prerequisites are well communicated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_connectA
Connect to a device over WiFi/TCP. Device must be paired first or have TCP/IP enabled.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Device IP and port (e.g., '192.168.1.100:5555' or '192.168.1.100:41567') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It discloses the network type and prerequisite but lacks details on error handling, timeouts, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, no wasted words. Efficient and direct.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should explain return values or success/failure behavior. It covers prerequisites but omits what happens after connection (e.g., output, error states). Gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter is fully described in the schema (pattern and description). The description adds no additional meaning beyond the schema, meeting the baseline for 100% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Connect' and the resource 'device over WiFi/TCP'. It distinguishes from siblings like adb_pair (pairing) and adb_tcpip (enabling TCP/IP).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a prerequisite: device must be paired or have TCP/IP enabled, providing context for when to use. However, it does not explicitly state when not to use or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_crash_logsA
Read ANR (Application Not Responding) traces and tombstone crash dumps from the device. Requires root access for /data/anr/ and /data/tombstones/. Returns the most recent entries.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Type of crash data to retrieve (default: both) | both |
| maxEntries | No | Maximum entries to return per type (1-20, default 5) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses root access requirement and returns most recent entries, but does not mention potential errors or if data is modified. The read-only nature is implied, not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with essential information: purpose, prerequisite, and behavior. It is front-loaded and contains no redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description covers purpose, requirements, and basic behavior. However, it does not describe the format of returned entries (e.g., timestamps, stack traces), leaving some gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with clear descriptions for type, maxEntries, and device. The description adds context about file paths but does not significantly enhance parameter understanding beyond schema defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reads ANR traces and tombstone crash dumps, specifying the resource (device crash logs). It distinguishes from sibling tools like adb_logcat or adb_heap_dump by targeting specific crash file types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions root access requirement but does not explicitly compare to alternatives like adb_logcat for general logging. No when-not-to-use guidance is provided, but the purpose implies when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_current_activityC
Get the currently focused activity and window stack
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose behavioral traits such as whether the tool is read-only, requires a specific device state, or has side effects. The description carries the full burden but provides minimal behavioral context beyond the basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the key information. It is efficient without fluff, though it could be slightly expanded to include more utility without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description partially explains the return value ('focused activity and window stack') but does not specify format or structure. For a simple getter, this is moderately complete, but an agent may need more detail for reliable parsing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'device' is fully covered in the schema with description 'Device serial'. The description adds no additional meaning beyond the schema, resulting in a baseline score of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the 'currently focused activity and window stack', specifying the verb 'Get' and the resource. It is distinguishable from siblings like adb_ui_dump (full UI tree) and adb_start_activity (starts an activity), though it does not explicitly differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as adb_ui_dump or adb_start_app. The description lacks context about prerequisites or typical use cases, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_device_infoB
Get detailed properties for a connected device (model, OS version, build, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial (auto-selects if only one connected) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It only states the tool returns device properties but does not disclose behavior beyond that: no mention of authentication, connectivity requirements, read-only nature, or whether it triggers any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence efficiently conveys the tool's purpose with examples. No filler or redundant information. Slightly lower score because it could split into two sentences for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 1-parameter tool without output schema, the description is adequate. It explains the input and output scope. However, it could mention the return format (JSON) or that it works on connected devices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the 'device' parameter has a clear description). The tool description adds no extra meaning beyond the schema, resulting in a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'detailed properties for a connected device', with concrete examples (model, OS version, build). This distinguishes it from sibling tools like adb_devices (list devices) and adb_getprop (single property).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., adb_getprop for a single property, adb_battery for battery info). No mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_devicesA
List all connected Android devices with their state, model, and product info
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. While 'List' implies a read operation, the description does not explicitly state that it is safe and idempotent. It also doesn't mention potential requirements like ADB connection or device authorization, but given the simplicity of listing devices, this is minimally adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately states the purpose. Every word is meaningful, and there is no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no parameters and no output schema, the description sufficiently conveys the basic function and output content. However, it could improve by mentioning behavior when no devices are found or the connection state required. Overall, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters (100% schema coverage by default), so the description cannot add parameter documentation. Per the baseline for 0 parameters, a score of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' and clearly identifies the resource as 'all connected Android devices'. It also specifies the returned information fields (state, model, product info), which distinguishes this tool from siblings like adb_device_info that likely focus on a single device.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any prerequisites, context, or exclusions, leaving the agent without any directional cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_device_stateA
Get a combined device state snapshot in one call: battery level/status, network connectivity, screen on/off, foreground activity, and orientation. Useful as a pre-check before UI automation or as a quick device health summary.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the tool as a read-only snapshot with no side effects mentioned. However, it does not disclose potential performance considerations, required permissions, or any subtle behaviors beyond the stated purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences that front-load the purpose and quickly add usage context. Every sentence is necessary and no words are wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description sufficiently covers the returned components (battery, network, screen, activity, orientation). It is complete enough for an agent to understand what the tool returns, though it could be more detailed about the format or possible values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage for the single parameter 'device' (serial). The description does not add any additional meaning beyond the schema, which is adequate but not improved upon.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides a combined device state snapshot including battery, network, screen, activity, and orientation. This specific verb+resource definition distinguishes it from individual sibling tools like adb_battery, adb_network, and adb_current_activity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description suggests using it as a pre-check before UI automation or a quick health summary, but does not specify when not to use it or mention alternatives. It provides context but lacks explicit exclusions or comparisons to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_disconnectA
Disconnect from a wireless device, or all wireless devices if no host specified
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Device IP:port to disconnect (omit for all) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only states that disconnection occurs, but lacks details on side effects (e.g., whether it affects adb server, requires prior connection, handles errors gracefully). This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise, front-loaded with the action, and contains no superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 optional parameter, no output schema), the description is fairly complete. It explains the primary function and parameter effect. It could mention being the inverse of 'adb_connect' for additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage and documents the 'host' parameter with pattern and description. The description adds value by explaining that omitting the parameter disconnects all devices, which is not explicitly in the schema but aligns with the optional nature.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'disconnect' and the resource 'wireless device', and distinguishes between disconnecting a specific device (when host is provided) or all devices (when no host is specified). This contrasts well with sibling tools like 'adb_connect'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use: to disconnect from a wireless device or all devices. It doesn't explicitly state when not to use or name alternatives, but the context of sibling tools (e.g., adb_connect) provides sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_dumpsysB
Run dumpsys for a specific service. Use 'list' as the service to see all available services.
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes | Service name (e.g., 'battery', 'telephony.registry', 'activity') or 'list' | |
| args | No | Additional arguments passed to dumpsys | |
| device | No | Device serial | |
| result_handle | No | Optional. If provided, store this tool's result under `result://<tool>/<name>` for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. Existing handles with the same tool+name are overwritten. Use adb_result_list to see active handles, adb_result_get or the MCP Resource URI to retrieve. | |
| result_handle_ttl | No | Optional. TTL in seconds for the result handle (60 to 604800). Default 43200 (12 hours). Ignored if result_handle is not provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must compensate. It only states the basic action without disclosing behavioral traits like potential output size, performance impact, or that dumpsys is generally read-only. The agent lacks transparency on what happens when running the command.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences and no fluff. It front-loads the primary purpose and includes a key tip. However, it could benefit from a brief mention of output format or typical use cases without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description fails to explain what the tool returns (likely text). It also lacks context among many sibling tools, such as when to use dumpsys over other info-gathering tools. The parameter descriptions are complete, but overall context is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minimal value by reiterating the 'list' usage, but it does not explain the other parameters (args, device, result_handle, result_handle_ttl) beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs dumpsys for a specific service, with a verb ('run') and resource ('dumpsys for a service'). It distinguishes from siblings by being the dedicated dumpsys tool, though it could be more specific about the purpose (dumping system service state).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a guideline: using 'list' to see all services. However, it does not discuss when to use this tool versus siblings like adb_battery or adb_device_info, nor does it mention prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_emulator_startB
Launch an Android Virtual Device (AVD) emulator. Returns once the emulator process has started.
| Name | Required | Description | Default |
|---|---|---|---|
| avdName | Yes | AVD name (from adb_avd_list) | |
| headless | No | Run without GUI window (-no-window) | |
| coldBoot | No | Force cold boot (-no-snapshot-load) | |
| gpuMode | No | GPU acceleration mode | auto |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description must fully disclose behavior. It only says 'returns once started', but omits return type, whether it blocks, timeout behavior, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words, but could benefit from additional essential details without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing critical context: no indication of output format, no warning about emulator boot time, no mention of required AVD existence. Despite good schema, description is insufficient for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 4 parameters. Description adds no extra meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it launches an AVD emulator and returns when started. Unique verb+resource, easily distinguished from siblings like adb_avd_list and adb_emulator_stop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives, no prerequisites mentioned (e.g., needing avdName from adb_avd_list), and no context on when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_emulator_stopA
Stop a running emulator. Uses 'adb emu kill' for graceful shutdown.
| Name | Required | Description | Default |
|---|---|---|---|
| avdName | No | AVD name to stop. If omitted, lists running emulators. | |
| device | No | Emulator device serial (e.g., 'emulator-5554') — alternative to avdName |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the graceful shutdown method ('adb emu kill'), implying a safe operation. However, without annotations, it doesn't detail side effects (e.g., data loss if unsaved), required permissions, or behavior if emulator not running. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. Action verb and method are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks the nuance that omitting parameters lists running emulators instead of stopping. Without an output schema, the behavior for edge cases (e.g., nonexistent emulator) is missing. Adequate for a simple tool but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters with descriptions. The tool description adds no additional meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Stop'), the resource ('a running emulator'), and the method ('adb emu kill' for graceful shutdown). It distinguishes from siblings like adb_emulator_start.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs. alternatives (e.g., adb_disconnect or force stop). No prerequisites, exclusions, or when-not-to-use mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_extract_apksA
Pull all APK splits for a package from the device to a local directory. Useful for analysis, backup, or transfer to another device.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Package name to extract | |
| outputDir | No | Local output directory (default: temp dir) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only states the basic operation without details on side effects (e.g., directory creation, overwrite behavior, permissions) or output format. For a non-trivial action, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first defines the action, the second lists use cases. No redundancy, perfectly front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple extraction tool, but lacks behavioral details (e.g., directory creation, error handling) and has no output schema. Given the complexity and numerous sibling tools, more context would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds contextual use-case information but no additional parameter semantics beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: pull APK splits from device to local directory. It mentions specific use cases (analysis, backup, transfer), distinguishing it from general file pull or install tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (analysis, backup, transfer), but does not explicitly state when not to use it or name alternatives. It is adequate for most scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_farm_matrixA
List available device models and API levels on Firebase Test Lab. Use to plan test matrices.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | List available device models or Android API versions | models |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes a read-only listing operation, which is inherently safe, but it does not explicitly state behavioral traits like being read-only, requiring authentication, or making network calls. For a simple tool, this is minimally adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. Purpose and usage are front-loaded. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional param, no output schema), the description is complete. It tells what it lists and why to use it. No missing information for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'type', which is well-described in the schema with enum values. The description adds context about Firebase Test Lab and usage intent, but does not add parameter-specific semantics beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists available device models and API levels on Firebase Test Lab, using specific verb 'list' and resource 'device models and API levels'. It distinguishes from siblings like adb_farm_results and adb_farm_run, which handle results and running tests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes 'Use to plan test matrices', providing clear context for when to use this tool. It does not explicitly state when not to use it or mention alternatives, but the context is sufficient for a simple tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_farm_resultsA
Retrieve results from the most recent Firebase Test Lab run, or a specific test matrix ID. Shows pass/fail status, device results, and links to logs and artifacts.
| Name | Required | Description | Default |
|---|---|---|---|
| matrixId | No | Test matrix ID (from adb_farm_run output). Omit to list recent matrices. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It describes retrieving results (implied read-only) but does not explicitly state it is a read-only operation or disclose any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, 24 words, front-loaded with action. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simple tool (1 optional param, no output schema), description covers purpose and output. Could mention result format but not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%. Description reinforces the parameter's purpose but adds no extra meaning beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Retrieve', the resource 'results from Firebase Test Lab run', and distinguishes between retrieving most recent or specific matrix ID. It differentiates from sibling tools like adb_farm_run and adb_farm_matrix.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explains when to use (after a test run, to get results) and the two modes (omit or provide matrixId). However, it lacks explicit guidance on when not to use or comparison to alternatives like adb_farm_matrix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_farm_runC
Run tests on Firebase Test Lab. Uploads an APK and test APK, executes instrumented tests across specified device models and API levels. Requires gcloud CLI authenticated with a Firebase project.
| Name | Required | Description | Default |
|---|---|---|---|
| appApk | Yes | Path to the app APK file | |
| testApk | Yes | Path to the test/instrumentation APK file | |
| devices | No | Device specs as 'model=DEVICE,version=API' (e.g., 'model=bluejay,version=33'). Omit for default device. | |
| testTargets | No | Specific test class or method (e.g., 'class com.example.MyTest') | |
| timeout | No | Test timeout passed to gcloud --timeout (e.g., '300s', '10m'). This is the LAB-side timeout. | 300s |
| resultsBucket | No | GCS bucket for results (omit for default) | |
| execTimeoutMs | No | Local execFile timeout for the gcloud invocation in ms (1min-60min, default 10min). Y4 fix: bigger device matrices or larger APKs can plausibly exceed the previous hardcoded 10min. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description bears full responsibility. It describes the upload and execution behavior but omits important details such as potential costs, destructive actions, whether results are stored, or impact on Firebase project. The prerequisite is noted but broader behavioral context is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences covering purpose, behavior, and requirements. It is front-loaded and efficient, though it could be more structured by separating action from prerequisites.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (Firebase Test Lab test runner, 7 params, no output schema), the description provides adequate purpose and basic behavior but lacks detail on output (e.g., result location), blocking behavior, cost implications, or long runtime considerations. Additional context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add significant meaning beyond the schema parameter descriptions; it merely reiterates the overall purpose. No additional context for parameters like resultsBucket or execTimeoutMs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs tests on Firebase Test Lab with APK upload and execution across devices. It effectively communicates the primary action and resource, but does not explicitly distinguish from sibling tools like adb_farm_results or adb_farm_matrix.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the prerequisite of authenticated gcloud CLI with a Firebase project, but provides no guidance on when to use this tool versus alternatives, nor when not to use it. No comparative context with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_file_checksumA
Compute SHA-256 hash of a file on the device. Critical for firmware integrity verification, tamper detection, and comparing files across devices. Read-only operation. Reports file size alongside the hash.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path on device | |
| algorithm | No | Hash algorithm (default: sha256) | sha256 |
| root | No | Use root shell for protected paths | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly labels the operation as 'Read-only operation,' which is a clear behavioral trait. It also mentions reporting file size alongside the hash. However, it does not disclose that the 'root' parameter can be used for protected paths, nor does it explain error behavior or permission requirements, but given no annotations, this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, each providing valuable information: the action, use cases, and output. It is well-structured and front-loaded with the core purpose, though the second sentence could be seen as slightly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description specifies the output (hash and file size), it lacks details on possible error conditions (e.g., file not found, permission denied) and the role of the 'device' and 'root' parameters. The tool has no output schema, so the description carries full burden for output, but it partially fulfills it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all four parameters with concise descriptions (100% coverage). The description itself does not add new information about parameters beyond what is in the schema, so it meets the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool computes SHA-256 hash of a file on the device, with specific use cases for firmware integrity and tamper detection. However, it only mentions SHA-256, while the schema allows sha1 and md5, which could mislead an agent relying solely on the description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides relevant use cases (firmware integrity, tamper detection, file comparison) but does not explicitly state when to use this tool versus sibling file tools like adb_file_stat or adb_file_fsinfo. No exclusion criteria or alternative suggestions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_file_chmodA
Change file permissions on the device. Mode must be a valid octal string (e.g., '755', '644', '600'). Recursive mode uses depth-based protection: refuses at depth ≤ 2 from root. Note: sdcardfs/FUSE ignores Unix permissions — file access on /sdcard is controlled by Android's package ownership model.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File or directory path | |
| mode | Yes | Octal permission mode (e.g., '755', '644', '0600') | |
| recursive | No | Apply recursively to directory contents. Depth-protected. | |
| root | No | Use root shell (typically required for chmod) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description carries full burden. Discloses key behaviors: mode must be valid octal, recursive depth protection, and the sdcardfs/FUSE behavior. Adds value beyond schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences plus a critical note. Front-loaded with purpose, no unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 5-parameter tool with no output schema, the description fully covers usage, format, recursion behavior, and platform limitations. Agent has sufficient information to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage. Description adds meaning with mode format examples, recursive depth protection, and important sdcardfs note. This extra context aids correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action 'Change file permissions on the device' with specific verb and resource. Differentiates from sibling file tools like adb_file_chown (change owner) and adb_file_stat (view attributes).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context on valid mode format and recursive depth protection. Mentions important limitation about /sdcard. However, does not explicitly state when to use this tool versus alternatives like adb_file_chown or adb_file_touch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_file_chownA
Change file ownership on the device. Requires root. Supports both numeric UID:GID (e.g., '10150:10150') and symbolic user:group (e.g., 'system:system'). Recursive mode uses depth-based protection: refuses at depth ≤ 2 from root. Note: sdcardfs/FAT32 ignore ownership changes.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File or directory path | |
| owner | Yes | Owner in user:group format (e.g., '0:0', 'system:system', '10150:10150') | |
| recursive | No | Apply recursively to directory contents. Depth-protected. | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses root requirement, recursive depth protection, and sdcardfs/FAT32 limitations. However, it does not mention error handling or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, no filler. Every sentence adds meaningful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description covers root requirement, owner format, recursive constraints, and filesystem note. Could mention expected return behavior for success/failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining owner format with examples and recursive depth protection, going beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Change file ownership on the device,' which is a clear verb+resource. However, it does not explicitly differentiate from sibling tools like adb_file_chmod, though the purpose is specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions root requirement, owner format options (numeric and symbolic), recursive depth protection, and filesystem limitation. It provides good context but lacks explicit when-not conditions or comparison with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_file_copyA
Copy a file or directory on the device. Pre-flight checks source size against destination available space. Post-verifies the copy by comparing file sizes. For recursive directory copies, use -r flag.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Source file or directory path | |
| destination | Yes | Destination path | |
| recursive | No | Copy directories recursively (-r) | |
| root | No | Use root shell for protected paths | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses pre-flight source size vs destination space check and post-verification by comparing file sizes. It also mentions the root flag for protected paths. These are helpful behavioral details beyond the basic copy operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no wasted words. First sentence states purpose, second adds behavioral details, third gives a usage hint. Perfectly sized and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but the tool is straightforward (file copy). The description covers purpose, key behaviors, and one flag. It could mention overwrite behavior or return value, but for a simple operation this is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds only that the -r flag is for recursive directory copies, which is already evident from the schema description. No additional semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Copy' and the resource 'file or directory on the device'. This distinguishes it from sibling tools like adb_file_move (which moves rather than copies) and adb_push/pull (which transfer between device and host). It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context (pre-flight space check, post-verification, -r flag for recursion), but it does not explicitly state when to use this tool over alternatives like adb_file_move, adb_push, or adb_pull. No guidance on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_file_fsinfoA
Report filesystem details for any path: filesystem type, mount point, mount options, capacity, usage, read-only status, permission support, symlink support, max file size, timestamp resolution, encryption status, and SELinux context. Essential for understanding what operations are possible before attempting them.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File or directory path to inspect | |
| root | No | Use root shell for system paths | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It describes output but does not explicitly state that the operation is read-only or non-destructive. While 'report' implies read-only, it could be more explicit about safety and permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence listing many attributes followed by a second sentence highlighting importance. It is concise but could be more structured (e.g., bullet points). It front-loads the key purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description comprehensively lists the filesystem properties returned (type, mount point, capacity, etc.), providing a good understanding of what the tool provides. It lacks details on return format or how to interpret values, but covers the essentials.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains the parameters (path, root, device). The description does not add additional meaning or context beyond what the schema provides, earning a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reports filesystem details for any path, listing specific attributes like mount point, capacity, read-only status, etc. It distinguishes itself from sibling tools like adb_file_stat by focusing on filesystem-level info rather than file-level metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by calling it 'essential for understanding what operations are possible before attempting them,' implying use before file operations. However, it does not explicitly state when not to use it or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_file_moveA
Move or rename a file/directory on the device. Moving FROM a system path is destructive — source depth protection refuses if source is at depth ≤ 1 from root. Symlinks resolved before checks. Cross-filesystem moves (e.g., /data → /sdcard) do a copy+delete internally and can be slow for large files.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Source file or directory path | |
| destination | Yes | Destination path | |
| root | No | Use root shell for protected paths | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses destructive behavior for system paths (depth ≤1), symlink resolution, and internal copy+delete for cross-filesystem moves. No annotations, so description carries full burden. Could mention permission requirements or error handling, but overall transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose. No redundancy. Could combine second and third sentences, but acceptable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers key behaviors but omits return value or output. Given no output schema, description should mention what the tool returns (e.g., success/failure, new path). Also missing device connectivity prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description adds no extra parameter information beyond what is in the schema. Parameters are clearly described in schema, but description does not enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Move or rename a file/directory on the device.' Distinguishes from siblings like adb_file_copy (copy) and adb_file_rm (delete). Mentions destructive nature for system paths, reinforcing the move semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides implicit guidance (e.g., cross-filesystem moves are slow) and mentions destructive behavior, but lacks explicit when-to-use vs alternatives. No mention of when to prefer adb_file_copy or adb_file_replace.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_file_replaceA
Find and replace text in a file on the device. Uses sed internally with proper escaping — exposes a safe interface without requiring sed syntax knowledge. Supports global replacement, line-targeted edits, and optional backup creation. Reports match count.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path on device | |
| find | Yes | Text to find (literal string, not regex) | |
| replace | Yes | Replacement text | |
| global | No | Replace all occurrences (default: true). Set false for first-only. | |
| lineNumber | No | Restrict replacement to a specific line number | |
| backup | No | Create a .bak backup before modifying | |
| root | No | Use root shell for protected paths | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry behavioral info. It discloses internal mechanism (sed with escaping), reports match count, and mentions root flag for protected paths. Could add that file modification is destructive without backup, but sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences. Front-loaded with the tool's purpose. No redundant information. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, no output schema, and no annotations, the description covers major behaviors (find/replace, global, line-targeted, backup, root). Could mention that it works on text files only. Overall, fairly complete for a focused tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions. Description adds context: 'Supports global replacement, line-targeted edits, and optional backup creation' mapping to global, lineNumber, backup. Also mentions match count reporting, a behavior not in schema. Credit for adding beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Find and replace text in a file on the device.' It specifies the verb (find and replace) and resource (file on device). It distinguishes from siblings like adb_grep (search only) and adb_file_write (overwrite entire file).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It mentions using sed internally with proper escaping, providing a safe interface without requiring sed syntax knowledge. It describes options: global replacement, line-targeted edits, backup creation. Could explicitly state when not to use it (e.g., binary files) and alternatives, but overall clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_file_statA
Get detailed file metadata: size, permissions, ownership, timestamps (access/modify/change), SELinux security context, and file type. Read-only operation.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File or directory path on device | |
| root | No | Use root shell for protected paths | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'Read-only operation' and lists returned metadata, which is helpful. However, it does not mention potential errors, permissions requirements, or behavior on different paths.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently lists the tool's capabilities. No unnecessary words. Highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters, no output schema), the description lists the returned metadata fields, which is valuable. It could be more complete by noting the return format or potential errors, but it is sufficient for a file stat operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all three parameters. The tool description does not add additional parameter-level context beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'detailed file metadata', and lists specific attributes (size, permissions, ownership, timestamps, SELinux context, file type). It is distinct from siblings like adb_ls which likely lists directory contents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says it is read-only, which implies a safe operation, but does not explicitly state when to use this tool vs alternatives like adb_ls or adb_file_fsinfo. Usage context is implied but not explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_file_touchA
Create an empty file or update timestamps. Three modes: create (touch non-existent path), update (set atime/mtime to now), or set explicit timestamp. On FAT32, timestamps have 2-second resolution. On tmpfs, timestamps are volatile.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path on device | |
| timestamp | No | Explicit timestamp in 'YYYY-MM-DD HH:MM:SS' format. Omit to use current time. | |
| root | No | Use root shell for protected paths | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses important behavioral traits: FAT32 timestamp resolution (2-second) and tmpfs volatility. It also hints at the need for root access via the protected paths mention. However, it does not discuss return values, error handling, or whether the operation is destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences that front-load the core action and modes. Every sentence adds value: first sentence defines purpose, second details modes, third provides filesystem context. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters (100% coverage) and no output schema, the description covers the core purpose, modes, and key behavioral aspects (filesystem quirks). It lacks details on error handling, prerequisites (e.g., file existence for update), and precise timestamp behavior for new files, but is adequate for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds only marginal value beyond the schema (e.g., 'Omit to use current time' for timestamp). It does not elaborate on path format, device selection, or root usage nuances beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Create an empty file or update timestamps' and distinguishes three modes (create, update, set explicit timestamp). It differentiates from sibling file tools by focusing on timestamps and creation rather than content writing or permissions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description outlines three modes but does not explicitly state when to use this tool versus alternatives like adb_file_write (which creates files with content) or other file manipulation tools. No 'when not to use' guidance is provided, leaving the agent to infer usage from the purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_file_writeA
Create or overwrite a text file on the device. Content is delivered via shell heredoc — suitable for config files, scripts, test fixtures, and small data files. For large or binary files, use adb_push instead. Shell buffer limits content to approximately 128KB.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Destination file path on device | |
| content | Yes | File content to write | |
| append | No | Append to existing file instead of overwriting | |
| root | No | Use root shell for protected paths | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that content is delivered via shell heredoc, has a size limit of ~128KB, and supports appending. With no annotations provided, the description carries full burden and does so effectively, providing key behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with 4 sentences, front-loaded with the primary action, and efficiently covers purpose, mechanism, limits, and alternative. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, 100% schema coverage, no output schema, and no annotations, the description provides essential context (limits, suitable uses, alternative). It is fairly complete, though it could mention success/failure behavior or directory creation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the shell heredoc mechanism and the 128KB limit, which provides context beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Create or overwrite a text file on the device.' It specifies the mechanism (shell heredoc) and distinguishes from sibling tool adb_push for large or binary files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to use adb_push for large or binary files and notes shell buffer limit (~128KB). This provides clear when-to-use and when-not-to-use guidance, effectively helping the agent select the correct tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_findA
Search for files on the device by name or pattern. Uses the find command with glob matching. Results are capped at maxResults to prevent unbounded output. Reports whether results were truncated.
| Name | Required | Description | Default |
|---|---|---|---|
| searchPath | No | Starting directory for search | /sdcard |
| name | Yes | Filename pattern (glob: *.apk, config.*, *test*) | |
| type | No | Filter by type: file, directory, or any | any |
| maxDepth | No | Maximum directory depth to search (1-50, default 10) | |
| maxResults | No | Maximum results to return (1-10000, default 500) | |
| root | No | Use root shell for system paths | |
| device | No | Device serial | |
| result_handle | No | Optional. If provided, store this tool's result under `result://<tool>/<name>` for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. Existing handles with the same tool+name are overwritten. Use adb_result_list to see active handles, adb_result_get or the MCP Resource URI to retrieve. | |
| result_handle_ttl | No | Optional. TTL in seconds for the result handle (60 to 604800). Default 43200 (12 hours). Ignored if result_handle is not provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses result capping and truncation reporting, which are useful behavioral traits. However, it does not cover error handling, performance implications, or permissions for root searches, which are relevant given the root parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each serving a purpose: purpose, method, and behavior. Front-loaded with core purpose. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should specify the return format (e.g., list of absolute paths). It only mentions truncated reporting, leaving the exact return structure unclear. Also lacks information on error handling or performance warnings. Incomplete for a tool with 9 parameters and no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Parameter schema coverage is 100%, and the schema descriptions are detailed. The description adds only that name uses glob patterns and results are capped, which is already partially covered by schema defaults and descriptions. Thus, minimal added value beyond schema, baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for files by name/pattern using glob matching, which is a specific verb+resource. It distinguishes from siblings like adb_grep (content search) and adb_ls (directory listing) by focusing on file name pattern matching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for file name searches but does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives. The context is clear but lacks exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_firmware_diffA
Compare all firmware components between two saved OTA fingerprints, or between the current device state and a saved fingerprint. Compares baseband (with chipset-specific parsed component diffs), bootloader, kernel, security patch, build ID, and Android version.
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Path to 'from' fingerprint JSON (or 'current' to use live device state). Defaults to the second-most-recent fingerprint. | |
| to | No | Path to 'to' fingerprint JSON (or 'current' to use live device state). Defaults to the most recent fingerprint. | |
| device | No | Device serial (used when 'from' or 'to' is 'current', or for auto-selecting fingerprints) | |
| result_handle | No | Optional. If provided, store this tool's result under `result://<tool>/<name>` for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. Existing handles with the same tool+name are overwritten. Use adb_result_list to see active handles, adb_result_get or the MCP Resource URI to retrieve. | |
| result_handle_ttl | No | Optional. TTL in seconds for the result handle (60 to 604800). Default 43200 (12 hours). Ignored if result_handle is not provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It uses 'compare' implying read-only, but does not explicitly state lack of side effects or authentication needs. It mentions chipset-specific parsing, adding some behavioral detail, but could be more explicit about its non-destructive nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences that cover the action, scope, and list of components. No unnecessary words, and the main purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity and lack of output schema, the description outlines the comparison and components. It implies the need for saved fingerprints but does not explain how to obtain them (e.g., via adb_firmware_probe). The output format is hinted but not fully detailed, making it slightly incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining defaults (second-most-recent for 'from', most-recent for 'to') and the use of 'current' for live device state. This goes beyond the schema's descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compares firmware components between two saved OTA fingerprints or current device vs saved fingerprint. It lists specific components (baseband, bootloader, kernel, etc.) and distinguishes from siblings like adb_firmware_probe and adb_firmware_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells when to use the tool (for comparing firmware components between saved fingerprints or current state). It implies prerequisites (saved fingerprints), but does not explicitly exclude scenarios or mention alternatives like adb_firmware_probe for capturing fingerprints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_firmware_historyA
Show firmware version progression across all saved OTA fingerprints for a device. Tracks baseband, bootloader, kernel, security patch, and build ID changes between consecutive snapshots with parsed component diffs.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial (filters fingerprints to this device) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It describes what data is shown but does not explicitly state it is read-only or disclose any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences, front-loaded with the main purpose, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the key aspects but lacks details on return format. Given no output schema, mentioning the structured diffs partially compensates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter description is clear. The tool description adds no additional meaning beyond 'Device serial' and 'filters fingerprints' already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it shows firmware version progression across saved OTA fingerprints for a device, specifying tracked components (baseband, bootloader, etc.) and distinguishing from sibling tools like adb_firmware_diff.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for historical progression but does not explicitly state when to use this tool versus alternatives like adb_firmware_diff or adb_firmware_probe.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_firmware_probeB
Comprehensive firmware identification for the connected device. Reports all firmware components: baseband (parsed by chipset family — Shannon, Qualcomm, MediaTek, Unisoc, HiSilicon, Intel), bootloader, RIL implementation, kernel, security patch, A/B slot, verified boot state, and OTA-updatable partitions.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description implies a read-only operation but does not explicitly state safety or permission requirements. It describes what is reported but not behavioral constraints like device state prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then details components. Slightly lengthy but each sentence adds information. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all reported firmware components but lacks details on output format, which is critical since no output schema exists. Agent may not know what structure the report takes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description simply lists firmware components without adding meaning to the 'device' parameter beyond the schema's 'Device serial'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'comprehensive firmware identification for the connected device' and enumerates all reported components (baseband by chipset family, bootloader, etc.), distinguishing it from siblings like adb_baseband_info or adb_firmware_diff.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., adb_firmware_diff, adb_firmware_history). No prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_force_stopA
Force-stop an app immediately. The most common debugging action.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Package name (e.g., 'com.example.app') | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'Force-stop an app immediately,' which indicates a destructive action, but it does not elaborate on side effects (e.g., data loss, impact on background services) or any prerequisites. Given no annotations, the description partially covers behavioral traits but lacks detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with two short sentences, no redundancy. It could be slightly more informative without violating conciseness, but it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one required parameter and no output schema, the description is minimally adequate but lacks context about return behavior, potential errors, or prerequisites (e.g., app must be installed). It does not leverage the opportunity to add value beyond the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (packageName, device) are fully described in the input schema with example and serial meaning. The description adds no further semantic value beyond the schema, and coverage is 100%, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool force-stops an app immediately, and it distinguishes itself from sibling tools like adb_start_app, adb_restart_app, and adb_clear_data by specifying the action and its common use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'The most common debugging action' implies frequent usage but does not provide explicit guidance on when to use vs. alternatives or when not to use it. No exclusion criteria are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_forwardA
Forward a local port to a port on the device (host → device). Use for connecting to services running on the device.
| Name | Required | Description | Default |
|---|---|---|---|
| local | Yes | Local (host) spec, e.g., 'tcp:8080'. AF2 fix: format-validated. | |
| remote | Yes | Remote (device) spec, e.g., 'tcp:8080' or 'localabstract:app_socket'. AF2 fix: format-validated. | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. Discloses direction and use case but omits details like persistence, connection requirement, or how to remove the forward.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise, front-loaded sentences with no unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple tool; covers direction and use case. No output schema exists, but missing details like requirement of device serial (though not required) are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with regex patterns and examples in the parameter descriptions, so the description adds minimal additional value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Forward a local port to a port on the device (host → device)' with a clear verb and resource, and distinguishes from sibling 'adb_reverse' by specifying direction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use for connecting to services running on the device' providing clear when-to-use, though no explicit when-not-to-use or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_forward_listB
List all active port forwards and reverse forwards
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial (omit for all devices) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must convey behavior. It states 'List all active...' implying non-destructive read, but lacks details on side effects, prerequisites, or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, clear sentence. Efficient and focused, though could benefit from slightly more context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with one optional parameter and no output schema, the description is borderline sufficient. However, it does not specify the output format or the scope of 'active' forwards, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single optional parameter 'device', which already has a description. The tool description adds no additional semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all active port forwards and reverse forwards' clearly states the verb (list) and resource (active port forwards and reverse forwards), distinguishing it from siblings like adb_forward and adb_forward_remove.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., adb_forward or adb_forward_remove). The purpose is clear but usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_forward_removeA
Remove a port forward (host → device), or all forwards. Use after testing to clean up.
| Name | Required | Description | Default |
|---|---|---|---|
| local | No | Local spec to remove (e.g., 'tcp:8080'). Omit to remove all forwards. AF2 fix: format-validated. | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It states the tool removes forwards, which is a destructive action, but does not disclose potential failure modes or permission requirements. The description is adequate for a simple removal tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two short, clear sentences that immediately convey the tool's purpose and recommended usage. Every word is necessary; no verbosity or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 optional parameters, no output schema, and no annotations, the description covers the essential aspects: what it does, when to use it, and the key parameter behavior. It does not elaborate on error cases or success indicators, but for a cleanup tool this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for both parameters (local and device) with 100% coverage. The description adds extra meaning by explaining that omitting 'local' removes all forwards and mentions an 'AF2 fix: format-validated', which adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (remove) and the resource (port forward), specifying the direction (host → device) and the option to remove all forwards. This distinguishes it from sibling tools like adb_forward (add) and adb_forward_list (list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use the tool ('Use after testing to clean up'), but does not explicitly mention when not to use it or compare with alternatives like adb_reverse_remove. Nonetheless, the guidance is clear for its intended cleanup scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_getpropA
Get a specific Android system property, or all properties if no key given
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Property key (e.g., 'ro.build.version.sdk'). Omit for all. | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It details the key behavior (specific vs all) but does not disclose other traits like read-only nature, error handling, or performance. Minimal but acceptable for a simple read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, concise, and front-loaded with the verb and resource. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema, no annotations), the description covers the core functionality. Could mention read-only guarantee but not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description reiterates the schema info about omitting key for all properties but adds no new meaning beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'Android system property', and the condition 'specific or all if no key'. It effectively distinguishes itself from sibling tools that focus on other Android subsystems.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While it implies usage for getting system properties, it lacks explicit guidance on when to use this tool over alternatives like adb_settings_get or adb_device_info. No when-not or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_gps_firmwareA
GNSS/GPS chipset and firmware identification. Reports GNSS hardware model (manufacturer, chip, firmware version), supported constellations (GPS, GLONASS, Galileo, BeiDou, QZSS, NavIC, SBAS), signal types with frequencies, dual-frequency (L1+L5) support, raw measurement capabilities (pseudorange access for spoofing detection), A-GPS modes (MSB/MSA — cellular-routed assisted GPS relevant to IMSI catcher research), carrier phase measurements, navigation message decoding, and SUPL server configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It discloses many behavioral aspects: what is reported (hardware, constellations, signals, raw measurements, A-GPS modes, etc.), including advanced capabilities like spoofing detection support. It lacks explicit statements about side effects or permissions, but the read-only nature is implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph that packs all necessary information without excess words. Every sentence adds value, covering all key aspects of the tool's output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and lack of output schema, the description thoroughly covers all reported data: hardware, constellations, signal types, dual-frequency, raw measurements, A-GPS modes, carrier phase, navigation message, and SUPL. No obvious gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides full parameter coverage with a description for 'device' ('Device serial'). The tool description does not add extra meaning beyond that. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'GNSS/GPS chipset and firmware identification' and enumerates specific aspects (hardware model, constellations, signal types, dual-frequency, raw measurements, etc.), clearly indicating what the tool does. It distinguishes itself from sibling tools by its specialized focus on GPS/GNSS firmware.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives is provided. While the description implies usage for GPS/GNSS hardware and firmware analysis, it does not mention when not to use it or suggest alternative tools for other scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_gradleB
Run a Gradle task in an Android project directory
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the Android project root (containing gradlew) | |
| task | Yes | Gradle task (e.g., 'assembleDebug', 'installDebug', 'clean') | |
| args | No | Additional Gradle arguments as an array of strings (e.g., ['-Pversion=1.0', '--info']). Use an array — not a space-separated string — so arguments containing quoted values are preserved as single tokens. | |
| timeout | No | Build timeout in milliseconds (30s-30min, default 5min). V5 fix: large multi-module Android projects (60+ modules) routinely exceed the default; raise this for clean builds of bigger projects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description does not disclose behavioral traits such as destructiveness (e.g., 'clean' can delete outputs), side effects, required permissions, or that it can modify the project. For a potentially dangerous mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. However, it is so minimal that it could be improved by adding essential details without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks information about output/return values, error handling, prerequisites (e.g., Android SDK, gradlew existence), and typical use cases. Given the tool's complexity (4 params, no output schema), this is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 4 parameters with descriptions (100% coverage). The tool description adds no extra meaning beyond what the schema already provides, so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Run'), the resource ('a Gradle task'), and the context ('in an Android project directory'). It is specific and distinguishable from sibling tools, which are largely focused on ADB commands rather than build system tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like adb_build_and_install or adb_install. There is no mention of prerequisites, preferred scenarios, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_grant_permissionB
Grant a runtime permission to a package
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Package name (e.g., 'com.example.app') | |
| permission | Yes | Full permission string (e.g., 'android.permission.READ_PHONE_STATE') | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states 'grant' which implies a mutation, but it does not explain side effects, success/failure conditions, or what happens if the permission is already granted. This is insufficient for a tool that modifies system state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no unnecessary words. While it could benefit from more detail, it is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of Android runtime permissions (e.g., handling already granted permissions, missing declarations), the description is incomplete. It does not address common scenarios or error conditions, and there is no output schema to clarify return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with descriptions for all three parameters. The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'grant' and clearly identifies the resource as 'runtime permission' and the target as a 'package'. This distinguishes it from the sibling tool 'adb_revoke_permission', which performs the opposite operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool, such as prerequisites (e.g., app must be installed, permission must be declared in the manifest) or alternatives. It lacks any context about appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_grepA
Search file contents on the device by text pattern. Uses fixed-string matching by default (no regex injection risk). Supports recursive directory search with depth control and result capping. For filename searches, use adb_find instead.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | Text pattern to search for | |
| path | Yes | File or directory path to search | |
| recursive | No | Search directories recursively | |
| fixedString | No | Use fixed-string matching (default: true, safer). Set false for regex. | |
| ignoreCase | No | Case-insensitive search (default: true) | |
| maxResults | No | Maximum matching lines to return (1-10000, default 500) | |
| maxDepth | No | Maximum directory depth for recursive search (1-50, default 10) | |
| filesWithMatches | No | Show only filenames that contain matches, not the matching lines | |
| root | No | Use root shell for protected paths | |
| device | No | Device serial | |
| result_handle | No | Optional. If provided, store this tool's result under `result://<tool>/<name>` for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. Existing handles with the same tool+name are overwritten. Use adb_result_list to see active handles, adb_result_get or the MCP Resource URI to retrieve. | |
| result_handle_ttl | No | Optional. TTL in seconds for the result handle (60 to 604800). Default 43200 (12 hours). Ignored if result_handle is not provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors: default fixed-string matching (no regex injection), recursive search with depth control, result capping, root option, case-insensitivity, filesWithMatches, and result handle storage. Lacks mention of return format or performance implications, but adequate given no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences plus one directing to sibling. Front-loaded with purpose and key defaults. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main behaviors and constraints, but lacks explanation of return format (lines of text) and potential performance for large files. Acceptable for a search tool with 12 parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions. The description adds value by highlighting safety (no regex injection default) and summarizing capabilities (recursive, depth, capped).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Search file contents on the device by text pattern' with verb ('search'), resource ('file contents'), and method ('by text pattern'). Distinguishes from sibling adb_find for filename searches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides guidance on default fixed-string matching (safer), supports recursion, depth control, and result capping. Explicitly directs to adb_find for filename searches, helping choose the right tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_health_checkA
Run a comprehensive health check of the ADB toolchain. Validates: ADB binary, server, device connection, authorization, and root access.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial to check (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full weight. It lists what is validated but does not disclose side effects, output behavior, or whether it is read-only. For a health check tool, it is adequate but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose and followed by details. No fluff, every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple optional parameter, no output schema, and no annotations, the description fairly covers what the tool does. It could mention return behavior but is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter (device) is described in the schema with 'Device serial to check (optional)'. Description adds no extra semantic value beyond schema. Schema coverage is 100%, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs a comprehensive health check and lists the components validated (ADB binary, server, device connection, authorization, root access). This is specific and distinguishes from siblings like adb_device_info (which provides device info).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for health checking but does not specify when to use it versus alternatives like adb_devices or adb_device_state. No explicit when-not or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_heap_dumpA
Capture a heap dump from a running process for memory analysis. Triggers am dumpheap and pulls the resulting .hprof file. Requires the target process PID or package name.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Process PID (number) or package name (e.g., com.example.app) | |
| filename | No | Output filename (default: heap_<target>_<timestamp>.hprof) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It reveals the command triggered and the resulting file, but does not disclose potential side effects like performance impact or permissions needed. It is factually accurate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The purpose is front-loaded, and the command mechanism is concisely stated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description could mention the return value (e.g., saved file path). However, for a simple dump tool, the description is largely complete. No critical omissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 3 parameters with descriptions. The tool description restates that `target` accepts PID or package name, which is already in schema. No additional value beyond the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures a heap dump for memory analysis, names the specific command (`am dumpheap`) and file type (.hprof). It uniquely identifies this tool among many adb siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the prerequisite (target PID or package name) but provides no guidance on when to use this tool over alternatives, nor any exclusion criteria. Usage context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_iio_readA
Read raw hardware data from the Linux IIO (Industrial I/O) subsystem. Discovers all IIO devices and reads their current values. On Tensor/Exynos devices, this exposes per-rail power monitors (ODPM) showing real-time power consumption per SoC subsystem (CPU clusters, GPU, display, memory, TPU, GPS, etc.) — data not available through the Android sensor HAL. On other devices, may expose raw accelerometer, gyroscope, magnetometer, or ADC channels. Root required.
| Name | Required | Description | Default |
|---|---|---|---|
| listOnly | No | If true, list available IIO devices without reading values | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses that the tool reads data, discovers all IIO devices, and requires root. Notes device-specific behavior (power monitors vs. raw sensors). Does not mention rate limits or potential side effects, but as a read operation this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph of three sentences, each conveying essential information: purpose, device-specific behavior, and root requirement. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately hints at output (power monitors on Tensor/Exynos, raw sensors on others) and mentions root requirement. Could specify that output format varies, but overall provides sufficient context for a read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described in the input schema. The description does not add additional meaning beyond the schema for the parameters; it focuses on output context. Baseline score of 3 is appropriate since schema already documents parameters adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it reads raw hardware data from Linux IIO subsystem, discovers devices, and reads values. Differentiates from Android sensor HAL and mentions specific use on Tensor/Exynos devices for power monitors. 'Root required' is a key requirement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context on when to use: on Tensor/Exynos for per-rail power data not available via sensor HAL, and on other devices for raw sensor data. Implies root requirement as a precondition. Does not explicitly list alternatives but the sibling list includes adb_sensor_read which covers sensor HAL, aiding differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_inputC
Send input events to the device (tap, swipe, text, keyevent)
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Input type — one of: tap (single touch), swipe (drag between two points), text (literal string entry), keyevent (Android key code like KEYCODE_HOME). The args field documents the expected argument format per type. | |
| args | Yes | Arguments: tap='x y', swipe='x1 y1 x2 y2 [duration_ms]', text='string', keyevent='KEYCODE_HOME' | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only lists input types without disclosing side effects, failure behavior, or that it directly interacts with the device. Minimal behavioral info beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise and front-loaded, but could be more informative without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (multiple input types, many sibling tools, no annotations), the description is too sparse. Lacks context on return values, error handling, and relationship to specialized tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already describes parameters well (type enum with examples, args format). The description adds no additional meaning beyond what schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends input events (tap, swipe, text, keyevent), specifying the verb 'send' and the resource 'input events'. However, it does not differentiate from specialized sibling tools like adb_input_text or adb_input_double_tap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this general tool versus the more specific adb_input_* tools. No context about prerequisites or preferred use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_input_double_tapA
Double tap at a point on screen. Triggers zoom, text selection, or double-tap gestures. Two rapid taps with a configurable interval.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X coordinate | |
| y | Yes | Y coordinate | |
| intervalMs | No | Interval between taps in ms (20-500, default 80) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral disclosure. It explains that the tool triggers zoom, text selection, or other double-tap gestures, and that the interval is configurable. However, it does not mention potential side effects (e.g., no action if no listener), error conditions, or whether the tool returns any result. This is adequate but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that immediately convey the action, effect, and key parameter (interval). No redundant information. It is front-loaded with the most important information for tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple action and four parameters, all documented. The description adequately explains what the tool does and its effect. However, it does not discuss return values (no output schema) or error conditions, and with many sibling tools, additional context for selection would be beneficial. It meets minimum viability but has room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for all four parameters (100% coverage), so the baseline is 3. The description adds no new information about parameters beyond what is in the schema; it merely reinforces the interval concept. It does not elaborate on device or coordinate semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (double tap), the target (point on screen), and the purpose (triggers zoom, text selection, or double-tap gestures). It distinguishes this tool from sibling tools like adb_input_long_press (long press) and adb_tap_element (single tap) by explicitly mentioning 'double tap' and 'two rapid taps'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (to perform a double-tap gesture) and mentions configurable interval, but does not explicitly exclude alternatives like single tap or long press. In a large sibling set, explicit guidance on when not to use it would improve clarity, but the current text is sufficient for a single-purpose tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_input_dragA
Drag from one point to another on screen. Uses Android's draganddrop input command. Useful for drag-and-drop UI elements, sliders, map panning, and reorder operations.
| Name | Required | Description | Default |
|---|---|---|---|
| x1 | Yes | Start X coordinate | |
| y1 | Yes | Start Y coordinate | |
| x2 | Yes | End X coordinate | |
| y2 | Yes | End Y coordinate | |
| durationMs | No | Drag duration in ms (100-10000, default 1000) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions using Android's draganddrop command but does not disclose behavioral details such as whether drag is continuous, intermediate events, lift behavior, permissions, or completion semantics. Insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action then use cases. No unnecessary words. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description covers basic purpose and use cases but lacks behavioral details (e.g., coordinate bounds, lift behavior, return value) and does not explain how it differs from similar gestures like fling. Adequate for simple use but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% parameter descriptions, so description does not add new meaning. Baseline of 3 is appropriate as schema already documents each parameter adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Drag from one point to another on screen' with specific verb and resource, and lists use cases (drag-and-drop, sliders, map panning, reorder). Distinguishes from sibling tools like adb_input_fling or adb_input_pinch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit positive use cases ('useful for...'), giving context on when to use the tool. However, lacks negative guidance or explicit comparison to alternatives like fling or scroll, which could improve differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_input_flingA
Perform a high-velocity fling gesture. Like swipe but with a short duration to create scroll momentum on lists, launchers, and paged views. Useful for fast-scrolling through long lists, dismissing notifications, or triggering velocity-sensitive behaviors.
| Name | Required | Description | Default |
|---|---|---|---|
| x1 | Yes | Start X coordinate | |
| y1 | Yes | Start Y coordinate | |
| x2 | Yes | End X coordinate | |
| y2 | Yes | End Y coordinate | |
| durationMs | No | Fling duration in ms (20-200, default 50). Shorter = more velocity | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It mentions creating scroll momentum and high velocity, which are key behaviors. However, it does not address required conditions (e.g., screen on, unlocked) or potential side effects like triggering animations. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences deliver the purpose, key differentiation (vs swipe), and usage scenarios without any filler. Perfectly front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 6 parameters, no output schema, and no annotations. The description explains the concept of a fling, its typical use, and the role of duration. For a simple gesture tool, this is nearly complete. Minor omission: it could note that the gesture simulates a touch swipe, but that is implied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. The description adds context about duration affecting velocity but does not meaningfully extend beyond what the schema already provides. Baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly defines the tool as performing a high-velocity fling gesture, contrasting it with swipe and listing specific use cases like fast-scrolling and dismissing notifications. Verb and resource are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description compares fling to swipe by noting shorter duration for velocity, and lists concrete scenarios (fast-scrolling lists, dismiss notifications, velocity-sensitive behaviors). It provides clear context but stops short of explicitly stating when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_input_long_pressA
Long press at a point on screen. Triggers context menus, selection mode, drag handles, and other long-press behaviors. Implemented as a zero-distance swipe with configurable hold duration.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X coordinate | |
| y | Yes | Y coordinate | |
| durationMs | No | Hold duration in ms (300-10000, default 1500) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description adds implementation details (zero-distance swipe with configurable hold duration) and expected outcomes (triggers context menus, etc.), going beyond a simple 'long press' label and providing useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and key behavioral traits. Every sentence serves a purpose with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple input tool with no output schema, the description explains the action, implementation, and effects. It does not cover out-of-bounds behavior or default device handling, but the constraints in the schema mitigate this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and includes descriptions for each parameter (x, y, durationMs, device). The description adds no per-parameter details beyond what the schema already provides, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a 'long press at a point on screen' and lists specific behaviors (context menus, selection mode, drag handles), distinguishing it from sibling input tools like drag, fling, or pinch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for long-press actions but does not explicitly state when to use this tool versus alternatives like adb_input_drag or adb_input_fling. No direct comparison or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_input_pinchA
Perform a multi-touch pinch (zoom out) or spread (zoom in) gesture. Two fingers move symmetrically toward or away from a center point. Uses parallel swipe injection by default (universal, no root); when root is available, can use raw sendevent for true multi-touch MT protocol injection. The 'auto' method selects the best available approach.
| Name | Required | Description | Default |
|---|---|---|---|
| cx | Yes | Center X coordinate of the pinch gesture | |
| cy | Yes | Center Y coordinate of the pinch gesture | |
| startRadius | Yes | Starting distance (px) from center to each finger | |
| endRadius | Yes | Ending distance (px) from center to each finger. Smaller than startRadius = pinch/zoom-out, larger = spread/zoom-in | |
| durationMs | No | Gesture duration in ms (100-5000, default 500) | |
| angle | No | Angle in degrees for the pinch axis (0=horizontal, 90=vertical, default 90) | |
| steps | No | Interpolation steps for sendevent method (5-60, default 20). More steps = smoother gesture | |
| method | No | Injection method: 'auto' (sendevent if root, else swipe), 'swipe' (parallel swipes, universal), 'sendevent' (raw MT protocol, requires root) | auto |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must cover behavioral traits. It mentions method prerequisites (root for sendevent) and that swipe is universal. However, it omits potential limitations like device compatibility or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: three sentences covering purpose and method options. Front-loaded with the gesture type, it efficiently conveys the core functionality without unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters and no output schema, the description provides the gesture concept but lacks information on return values, error handling, or expected outcomes. It is adequate but not fully complete for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The description adds no extra parameter meaning beyond explaining the gesture and method selection, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs a multi-touch pinch or spread gesture, specifying symmetrical finger movement. It distinguishes from sibling input tools like adb_input (general input) or adb_input_drag by focusing on a specific multi-touch gesture.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use swipe vs sendevent methods and that 'auto' selects the best approach. It doesn't explicitly state when not to use this tool (e.g., for single-touch gestures), but the specificity makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_input_textA
Type text on the device. Handles special characters by converting spaces to %s and escaping shell metacharacters. For multi-line or complex text, consider using the clipboard tool instead.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to type on the device | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses special character handling (converting spaces to %s, escaping shell metacharacters). However, it does not mention prerequisites (e.g., device unlocked) or side effects, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise, front-loaded sentences that deliver essential information without redundancy. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two parameters and no output schema, the description covers the main purpose and key behavioral nuance (special characters). It is sufficiently complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds value by explaining how the 'text' parameter is processed (special character handling). The 'device' parameter is adequately described in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Type text on the device') and specifies handling of special characters, distinguishing it from sibling tools like adb_input (gestures) and adb_clipboard (multi-line text).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear when-not-to-use: 'For multi-line or complex text, consider using the clipboard tool instead.' This gives an alternative, though it lacks explicit guidance on when to prefer this over other input sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_installB
Install an APK on the device. Provide the full local path to the APK file.
| Name | Required | Description | Default |
|---|---|---|---|
| apkPath | Yes | Local filesystem path to the APK file | |
| device | No | Device serial | |
| replace | No | Replace existing app (-r flag) | |
| downgrade | No | Allow version downgrade (-d flag) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It only states the action 'Install' without detailing side effects, permissions required, behavior on existing app, or error states. The flag parameters (replace, downgrade) are mentioned only in schema, not in description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. Purpose is front-loaded in the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 parameters, no output schema, and no annotations, the description leaves gaps: it doesn't explain how to specify device, what the output indicates, or defaults for optional flags. Essential for correct usage but missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds minimal extra value beyond the schema. 'Provide the full local path' reinforces the apkPath parameter but adds no new meaning for device or flags.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Install' and the resource 'APK on the device', and specifies the key requirement 'Provide the full local path'. It effectively distinguishes from siblings like adb_install_bundle and adb_build_and_install.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool over alternatives (e.g., adb_install_bundle for split APKs, or adb_build_and_install for building). No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_install_bundleA
Install multiple APK splits (app bundle) on the device using install-multiple. Provide all split APK files — base APK plus config splits (language, density, ABI).
| Name | Required | Description | Default |
|---|---|---|---|
| apkPaths | Yes | Array of local paths to split APK files (base + config splits) | |
| device | No | Device serial | |
| replace | No | Replace existing app (-r) | |
| allowDowngrade | No | Allow version downgrade (-d) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only states the action without detailing side effects, prerequisites, or failure modes. For example, it does not mention that `replace` defaults to true or what happens on version mismatch. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy, and front-loaded with the core action. Every word contributes to clarity without excess. Ideal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers the main purpose but omits details about the `device`, `replace`, and `allowDowngrade` parameters. While schema documents them, the description could provide context (e.g., when to set `replace` to false). The description is adequate for a simple install tool but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining that `apkPaths` should include base APK plus config splits (language, density, ABI), which clarifies the expected input beyond the schema. This enriches parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool installs multiple APK splits (app bundle) using `install-multiple`, implicitly distinguishing it from sibling tools like adb_install (single APK) and adb_multi_install (likely multiple separate APKs). The verb 'install' and resource 'multiple APK splits' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use the tool: when you have split APK files (base + config splits). While it does not explicitly list alternatives or exclusions, the context is clear for an agent familiar with APK installation. The mention of 'app bundle' directly ties to common use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_list_packagesB
List installed packages. Supports filtering by name.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filter packages containing this string | |
| device | No | Device serial | |
| type | No | Show all, system-only, or third-party-only packages | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the burden. It discloses basic behavior (listing installed packages) but does not mention potential side effects, permissions needed, or that it is a read-only operation. The behavior is simple enough that a score of 3 is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that convey the core functionality. It is front-loaded with the main action, though it could be slightly more informative without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool (list packages with optional filters), the description is adequate. However, it lacks details about output format or ordering, which would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description merely echoes the filter parameter's purpose ('Supports filtering by name'). It adds no additional meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists installed packages and supports filtering by name. It uses a specific verb and resource, but does not differentiate from sibling tools like adb_package_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like adb_package_info or adb_list_permissions. The description lacks explicit when-to-use or when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_list_permissionsA
List permissions declared and granted for a package. Parses the package dump to show install-time and runtime permissions with their current grant state. Useful for auditing permission state before and after grant/revoke operations.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Package name (e.g., 'com.example.app') | |
| filter | No | Show all permissions, only granted, or only denied (default: all) | all |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains the tool parses the package dump to show permissions, but does not disclose potential side effects, required permissions, or limitations. The description is accurate for a read-only operation but lacks depth beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, front-loaded with the core action and resource, and includes a usage hint. Every sentence conveys essential information without redundancy, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and lack of output schema, the description adequately conveys the purpose and general output. It specifies that the tool shows install-time and runtime permissions with grant state, which is sufficient for an agent to understand the return value. However, it does not describe the exact format or structure of the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with all parameters documented. The description adds value by explaining that the tool shows install-time and runtime permissions with grant state, which provides context for the filter parameter, but does not add detailed semantics beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists permissions for a package, specifying both declared and granted, and mentions install-time and runtime permissions with their grant state. It uses a specific verb ('list') and resource package permissions, and hints at its utility in auditing before/after grant/revoke operations, which distinguishes it from siblings like adb_grant_permission or adb_revoke_permission.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly suggests using the tool for auditing permission state before and after grant/revoke operations, providing direct context. However, it does not explicitly state when not to use it or list alternatives, though the sibling tools suggest similar functionality like adb_permission_audit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_list_splitsB
List all APK split paths installed for a package. Shows the base APK and any configuration splits (language, screen density, ABI).
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Package name (e.g., 'com.example.app') | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only states it lists/shows paths, implying read-only, but no details on permissions, performance, or output format. Minimal behavioral context beyond name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with purpose, no wasted words. Efficiently conveys key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple list tool. Covers purpose and output contents. Lacks mention of path format or device parameter usage, but not critical given low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. Description adds no extra meaning beyond what the schema provides, so baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists APK split paths for a package, specifying it shows base APK and configuration splits (language, screen density, ABI). This distinguishes it from siblings like adb_list_packages and adb_extract_apks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Does not mention when not to use it or compare to similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_locationC
Enable or disable location services
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Location mode: off, sensors (GPS only), battery (network only), high (GPS + network) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only says 'enable or disable' with no disclosure of behavioral traits like required permissions, persistence, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no waste. Could be improved with structured info but remains concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema; description omits effect details, permissions, and result info. Incomplete for a tool that modifies system state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. Description adds 'enable or disable' but does not expand on mode semantics beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Enable or disable location services', a specific verb and resource. However, it does not differentiate from siblings or mention modes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like adb_battery or adb_network. No when-not or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_logcatC
Capture a logcat snapshot. Supports tag filtering, priority levels, and grep patterns.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | No | Number of recent lines to capture (1-10000) | |
| tag | No | Filter by tag (e.g., 'ActivityManager' or 'MyApp') | |
| priority | No | Minimum priority: V(erbose), D(ebug), I(nfo), W(arn), E(rror), F(atal) | |
| grep | No | Grep filter applied to output (literal string match, case-insensitive) | |
| device | No | Device serial | |
| buffer | No | Logcat buffer to read from | main |
| result_handle | No | Optional. If provided, store this tool's result under `result://<tool>/<name>` for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. Existing handles with the same tool+name are overwritten. Use adb_result_list to see active handles, adb_result_get or the MCP Resource URI to retrieve. | |
| result_handle_ttl | No | Optional. TTL in seconds for the result handle (60 to 604800). Default 43200 (12 hours). Ignored if result_handle is not provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It mentions filtering but does not disclose side effects (e.g., buffer consumption, impact on other sessions) or safety traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the core action, no wasted words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters and no output schema, the description is too minimal. It omits return format, details on buffer/device parameters, and the result_handle mechanism, leaving significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The tool description summarizes three filter types (tag, priority, grep) but adds no meaning beyond schema to lines, device, buffer, or the complex result_handle mechanism.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it captures a logcat snapshot with tag, priority, and grep filtering. The word 'snapshot' implies one-time capture, but it doesn't explicitly differentiate from continuous logcat tools like adb_logcat_poll or adb_logcat_start/stop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings like adb_logcat_poll (streaming), adb_logcat_start/stop (session), or adb_logcat_clear (clearing). Lacks exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_logcat_clearA
Clear all logcat buffers on the device
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. 'Clear' adequately implies destruction of existing log data, but it does not explicitly state that the operation is irreversible or mention any side effects on other logcat sessions. It is moderately transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words. Every word adds value: verb, object, scope. It is front-loaded and efficiently communicates the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple clear operation, the description is functional but lacks completeness. It does not mention that the action cannot be undone or that it may affect other tools reading logcat. While adequate for basic use, it could be more informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description adds no additional meaning beyond the schema. The lone parameter 'device' is already documented in the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Clear' and the resource 'logcat buffers', and the context 'on the device' specifies the scope. It effectively distinguishes from sibling tools like adb_logcat (read) and adb_logcat_start (start session).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. For instance, no indication of scenarios where clearing is beneficial or prerequisites like ensuring logcat is not actively used for debugging. The description is purely functional.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_logcat_crashB
Get recent crash logs from the crash buffer
| Name | Required | Description | Default |
|---|---|---|---|
| lines | No | Number of lines (1-10000) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral traits. It does not state whether the tool is read-only, requires a connected device, or any side effects. The acronym 'crash buffer' is not explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, making it concise, but it lacks important details for a complete understanding. It is not verbose but could be more informative without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, and the description does not explain return format or behavior. For a tool with two optional parameters and no annotations, the description is too minimal to fully guide an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with both parameters described. The description adds no extra meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets recent crash logs from the crash buffer, with a specific verb and resource. It distinguishes itself from sibling tools like adb_logcat (general logs) and adb_logcat_clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Sibling tools include many logcat variants, but the description does not explain when crash buffer is preferred over regular logcat or other filters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_logcat_pollA
Retrieve new logcat lines since the last poll from a running watcher session.
| Name | Required | Description | Default |
|---|---|---|---|
| session | Yes | Session ID from adb_logcat_start (e.g., 'watch_1') | |
| maxLines | No | Max lines to return per poll (1-10000) | |
| result_handle | No | Optional. If provided, store this tool's result under `result://<tool>/<name>` for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. Existing handles with the same tool+name are overwritten. Use adb_result_list to see active handles, adb_result_get or the MCP Resource URI to retrieve. | |
| result_handle_ttl | No | Optional. TTL in seconds for the result handle (60 to 604800). Default 43200 (12 hours). Ignored if result_handle is not provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It reveals it is a polling operation on a running session, but omits behavior if no session exists, session expiry, or side effects of result_handle. Lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single concise sentence with no fluff; every word is necessary and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does not explain the polling concept, session lifecycle, or return format. With no output schema, it should cover what the result looks like, but it doesn't. Incomplete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no extra parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves new logcat lines since the last poll from a running watcher session, which is a specific verb+resource+scope. It distinguishes from siblings like adb_logcat_start and adb_logcat_stop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates usage after adb_logcat_start by mentioning 'running watcher session' and 'since the last poll', but does not explicitly list when to use or not use alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_logcat_sessionsA
List all active logcat watcher sessions
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only states it lists sessions, lacking details on side effects, permissions, or any behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words; front-loaded and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a zero-parameter list tool; could hint at output format, but complete enough given simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline 4 applies; description adds no parameter info but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'List' and resource 'active logcat watcher sessions', clearly distinguishing it from siblings like adb_logcat_start, adb_logcat_stop, and adb_logcat.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied for listing sessions, but no explicit when-to-use or when-not-to-use guidance, nor alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_logcat_startA
Start a background logcat watcher. Lines accumulate in a ring buffer. Use adb_logcat_poll to retrieve new entries.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Filter by tag (e.g., 'MyApp'). Must match /^[a-zA-Z0-9_]+$/ — Android tags are identifier-shaped in practice. | |
| priority | No | Minimum priority level | |
| bufferSize | No | Max lines to keep in ring buffer (100-50000, default 2000) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It mentions ring buffer accumulation but does not disclose system impact, termination behavior, or implications of multiple watchers. Adequate but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. Front-loaded with the action, then important behavioral note. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While no output schema, the description explains the ring buffer and retrieval mechanism. Could mention how to stop the watcher (sibling adb_logcat_stop exists), but overall adequate for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and parameter descriptions are detailed (patterns, enums, defaults). The description adds minimal extra meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it starts a background logcat watcher, using specific verbs and resources. It distinguishes from siblings like adb_logcat and adb_logcat_poll by implying continuous accumulation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly directs to use adb_logcat_poll for retrieval, providing clear context. However, it does not explicitly exclude other logcat tools or mention when to start vs other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_logcat_stopA
Stop a running logcat watcher session
| Name | Required | Description | Default |
|---|---|---|---|
| session | Yes | Session ID to stop (e.g., 'watch_1'), or 'all' to stop all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the action without disclosing side effects (e.g., data loss, permissions, or state changes) beyond the basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is concise, front-loaded with the action, and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema), the description adequately covers the core function, though it could mention return values or confirmation of stop.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the 'session' parameter; the description adds no additional meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'stop' and the resource 'logcat watcher session', which distinguishes it from siblings like adb_logcat_start and adb_logcat_poll.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage to stop a session started by adb_logcat_start, but does not explicitly state when to use it or alternatives, nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_lsB
List files and directories on the device
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Directory path on device | /sdcard |
| device | No | Device serial | |
| details | No | Show detailed listing (ls -la) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It is minimal but adequate for a simple list tool; it implies a read-only operation and does not mention side effects, but could be more explicit about the underlying command.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It could include more detail, but for a simple tool, it is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema, no annotations, and three parameters, the description is minimal. It does not mention the default path (/sdcard) or the effects of the 'details' flag. More context would help differentiate from sibling file tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have descriptions in the input schema (100% coverage). The description adds no additional meaning beyond the schema, earning the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List files and directories on the device'. The verb 'list' and resource 'files and directories' are specific. However, it does not distinguish from sibling tools like adb_find or adb_file_stat, which also deal with file listings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as adb_find, adb_grep, or adb_file_fsinfo. The description only states what it does, without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_market_exportA
Export a local workflow with marketplace metadata for sharing. Produces a JSON file with name, description, version, author, and tags suitable for submission to the marketplace registry.
| Name | Required | Description | Default |
|---|---|---|---|
| workflow | Yes | Name of the local workflow to export (from adb_workflow_list) | |
| author | No | Author name to include in metadata | |
| version | No | Version string (semver-style, e.g., '1.2.3'). Defaults to '1.0.0' if omitted. Increment when publishing an updated workflow so registry consumers can detect changes. | 1.0.0 |
| tags | No | Tags for discovery (e.g., ['testing', 'diagnostics']) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the output format (JSON file) and content fields, but lacks details on side effects (e.g., whether it creates a local file or returns data) or permissions needed. Since no annotations are provided, the description carries the full burden but is somewhat vague.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action, and contains no superfluous words. It efficiently communicates purpose and output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description adequately covers the tool's function and output structure. It could mention where the JSON file is produced (e.g., stdout or local file) but is otherwise sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by summarizing the output and providing guidance on the version parameter (suggesting increment on update). This goes beyond what the schema alone conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports a local workflow with marketplace metadata for sharing, specifying the output as a JSON file with name, description, version, author, and tags. It distinguishes from sibling tools like adb_market_install and adb_workflow_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for marketplace submission but does not explicitly state when to use this tool versus alternatives or provide exclusions. No guidance on prerequisites or when not to use it is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_market_installA
Download and install a workflow from the marketplace. Saves to the workflows directory for immediate use with adb_workflow_run.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Workflow name from the marketplace | |
| force | No | Overwrite if a workflow with this name already exists locally |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states the effect (download and install, save to directory) but does not disclose potential destructive behavior beyond the force parameter, network requirements, or authentication needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no wasted words. Every sentence adds value: first states the action, second provides context and connection to sibling tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple installation tool with no output schema, the description covers the main outcome and a key behavior (linking to adb_workflow_run). It lacks details on error handling or validation but is sufficiently complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description adds no additional meaning beyond what the schema provides for 'name' and 'force', so baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states 'download and install a workflow from the marketplace' with a clear verb+resource, and distinguishes from sibling tools like adb_market_search (search) and adb_workflow_run (run).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates usage context: save to workflows directory for immediate use with adb_workflow_run. It implies when to use (to obtain a workflow) but does not explicitly state when not to use or alternative approaches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_market_searchA
Search the workflow marketplace for community-shared workflow definitions. Shows name, description, tags, author, and step count. Indicates which workflows are already installed locally.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Filter by name, description, or tag keyword | |
| tag | No | Filter by exact tag (e.g., 'testing', 'diagnostics', 'security') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It transparently describes the behavior: search and display results including installed status. However, it omits details like pagination, error handling, or whether the search is case-sensitive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load the action and key details. Every word adds value; no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with two optional parameters and no output schema, the description covers the main purpose and output highlights. It could mention that results are returned as a list, but that is often inferred.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The tool description adds context about what is searched (name, description, tags) but does not significantly augment parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches the marketplace for workflow definitions and specifies what information is returned (name, description, tags, author, step count, installed status). It distinguishes from sibling tools like adb_market_install and adb_workflow_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for searching, but does not explicitly state when to use this tool versus alternatives or provide any exclusions. No guidance on prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_mirror_startA
Start live screen mirroring for a device using scrcpy. Requires scrcpy installed and on PATH. Supports windowed (visual) and headless (no display) modes. One session per device.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial | |
| headless | No | No-display mode — useful with recording. Omits the scrcpy window. | |
| maxFps | No | Maximum frame rate (1-120, default 30) | |
| bitrate | No | Video bitrate (e.g., '4M', '8M', '2M'). AK2 fix: format-validated at schema layer. | 4M |
| maxSize | No | Max dimension in pixels (0 = no limit, max 4096) | |
| record | No | Record to a local file path (e.g., 'mirror.mp4') | |
| stayAwake | No | Keep device awake while mirroring | |
| turnScreenOff | No | Turn device screen off during mirroring (saves battery) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It discloses windowed/headless modes, the need for scrcpy, and the session limit. However, it does not describe whether the tool blocks, returns immediately, or what happens to existing sessions, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with 29 words, front-loaded with purpose, prerequisite, then modes and limitation. No redundancy and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters and no output schema or annotations, the description covers purpose, prerequisite, modes, and a limitation. It lacks mention of return value or asynchronous behavior, but is largely complete for a start-action tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds context about headless mode being useful with recording and states modes generally, but does not deeply elaborate on each parameter beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool starts live screen mirroring for a device using scrcpy, mentioning supported modes and a key limitation (one session per device). This distinguishes it from screenshot and recording tools among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies the prerequisite (scrcpy installed and on PATH) and notes the one-session-per-device constraint, providing useful context. However, it does not explicitly exclude alternatives like adb_screencap or adb_screenrecord_start, nor provide when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_mirror_statusA
Check scrcpy availability and list active mirroring sessions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description only states the basic behavior. No mention of side effects, permissions, or limitations. For a simple read operation, this may be sufficient but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with exactly 7 words, front-loaded with the key verb 'Check'. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the tool is simple, the description does not mention return values or any output format. Given no output schema, the agent might benefit from knowing what a success/failure response looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the description adds no extra meaning. Baseline 4 is appropriate as the schema covers 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: checking scrcpy availability and listing active mirroring sessions. It distinguishes itself from siblings like adb_mirror_start and adb_mirror_stop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The context implies it's for status checking before start/stop, but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_mirror_stopA
Stop an active scrcpy mirroring session for a device.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial (stops that device's session). Omit to stop all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. 'Stop' clearly indicates termination, but does not disclose any side effects or post-conditions. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence with no extraneous information. Efficiently conveys the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple stop tool with one parameter and no output schema, the description is sufficient. It explains the action and parameter usage. Could optionally reference the companion start tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter description adds useful context beyond the schema: 'Device serial (stops that device's session). Omit to stop all.' This clarifies the dual behavior of the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'stop' and the resource 'active scrcpy mirroring session for a device'. It effectively distinguishes from sibling tools like adb_mirror_start and adb_mirror_status by focusing on termination.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or alternatives. The use case is implied (stop an active mirror), but there is no mention of prerequisites or scenarios where this tool should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_mkdirB
Create a directory on the device. Supports -p flag for creating parent directories.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Directory path to create | |
| parents | No | Create parent directories as needed (-p flag, default true) | |
| root | No | Use root shell for protected paths | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions supporting the -p flag but does not state error handling, permissions required, or whether the directory is created silently or with feedback. The description is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is direct and front-loaded. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple file creation tool with no output schema and four parameters, the description is adequate but lacks information on return values, error scenarios, or permissions. It could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description adds mention of the -p flag, which clarifies the 'parents' parameter, but this is already well-documented in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a directory on the device' with a specific verb and resource. It also mentions the -p flag, distinguishing it from sibling tools like adb_rm or adb_ls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. No explicit conditions, prerequisites, or when-not-to-use information is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_mobile_dataB
Enable or disable mobile data
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | true = enable mobile data, false = disable | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It only states the action without revealing side effects, required permissions, or potential limitations (e.g., device compatibility, root requirements). The tool likely mutates device state, but this is not stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence of five words, which is concise but lacks necessary elaboration. While every word earns its place, the brevity sacrifices completeness. It is neither verbose nor optimally informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (boolean toggle, two params, no output schema), the description is minimally viable. However, it does not mention that the operation may fail on non-rooted devices or that the device parameter is optional. Slight gaps remain for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no extra meaning beyond the schema; it essentially restates the 'enabled' parameter's schema description. The 'device' parameter is not elaborated further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Enable or disable mobile data' uses a specific verb and resource, clearly indicating the tool's function. It distinguishes from siblings like adb_airplane_mode and adb_network by specifying mobile data specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as adb_airplane_mode or adb_network_auto_connect. There is no mention of prerequisites, conditions, or alternatives, leaving the agent without decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_modem_logsA
Capture modem/baseband-related logs from multiple sources: RIL (Radio Interface Layer) logcat, telephony framework logs, and kernel modem messages via dmesg (root required for dmesg). Useful for radio diagnostics and tracing baseband-framework communication.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | No | Max lines per log source (1-5000, default 200) | |
| grep | No | Additional grep filter applied to all sources | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that dmesg requires root access, and lists the log sources. It does not mention potential side effects or blocking behavior, but for a log capture tool, the transparency is good.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: first defines the tool's action and sources, second states the use case. No redundancy, front-loaded, every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers purpose, sources, root requirement, and use case. It is fairly complete for a log-capture tool, though return format is not detailed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all three parameters described). The description does not add significant meaning beyond the schema: lines default 200, grep filter, device serial. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures modem/baseband-related logs from RIL logcat, telephony framework, and dmesg. It specifies the use case for radio diagnostics and baseband-framework communication, distinguishing it from siblings like adb_logcat.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Useful for radio diagnostics and tracing baseband-framework communication' but does not explicitly guide when to use this over alternatives like adb_logcat or adb_ril_poll, nor does it mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_multi_compareA
Run a command on all devices and compare outputs side by side. Highlights differences across devices.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Shell command to compare across devices | |
| devices | No | Device serials (omit for all online devices) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It does not disclose how devices are selected (if omitted), execution model (concurrent?), failure handling, or return format. Lacks important behavioral context for a multi-device command.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the purpose. Every word is necessary; no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, description is minimally adequate for a simple comparison tool. However, it lacks details on error behavior, output format, and how 'all devices' is determined, which are important for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds 'side by side' and 'highlights differences' which relate to output format, not parameter semantics. No significant added meaning beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool runs a command on all devices and compares outputs side by side, highlighting differences. This distinguishes it from siblings like adb_shell (single device) and adb_multi_shell (run on multiple but no comparison).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implicitly suggests use for comparing outputs across devices, but lacks explicit guidance on when to use vs alternatives (e.g., adb_multi_shell, adb_devices). No exclusions or conditions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_multi_installB
Install an APK on multiple (or all) connected devices in parallel.
| Name | Required | Description | Default |
|---|---|---|---|
| apkPath | Yes | Local filesystem path to the APK file | |
| devices | No | Device serials (omit for all online devices) | |
| replace | No | Replace existing app (-r) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only adds 'in parallel' as a behavioral trait, but lacks details on error handling, prerequisites, or installation outcomes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence, front-loaded with the verb and resource. It is concise but could be more informative without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description does not explain return values or error behavior. For a tool with low complexity, it lacks completeness regarding outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters adequately. The description adds no extra meaning beyond the schema, earning the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'install', the resource 'APK', and the scope 'on multiple (or all) connected devices in parallel'. It effectively distinguishes from sibling tools like adb_install (single device) and adb_install_bundle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for multiple devices but does not explicitly state when to use this tool versus alternatives (e.g., adb_install for single device). No when-not or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_multi_shellA
Execute a shell command on multiple (or all) connected devices in parallel. Returns results grouped by device.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Shell command to execute on each device | |
| devices | No | Device serials to target (omit for all online devices) | |
| timeout | No | Timeout per device in milliseconds (1s-10min) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions parallel execution but does not disclose potential partial failures, timeout behavior, or device connectivity impacts. With no annotations, more detail would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences are front-loaded, concise, and convey the essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (three params, no output schema), the description is largely complete. A brief note on error handling or result format would make it fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so description adds limited value. It clarifies 'devices' parameter (omit for all online devices) but otherwise restates schema content.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (execute shell command), scope (multiple/all devices), and output format (grouped by device). It distinguishes itself from single-device tools like adb_shell.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for batch execution but lacks explicit guidance on when to use this tool versus alternatives like adb_shell, or any prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_multi_testA
Run a comparative test workflow across all connected devices (host + QEMU guests). Executes a predefined diagnostic profile or custom command list on every device in parallel, compares results per-check, and reports matches and differences. Profiles: 'firmware' (baseband, bootloader, kernel, security patch), 'security' (SELinux, verified boot, encryption), 'network' (radio, WiFi, SIM), 'identity' (model, chipset, architecture), 'full' (all profiles). Custom commands also supported.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No | Predefined test profile to run. 'full' runs all profiles. | |
| commands | No | Custom checks to run (max 50). Each has a label and command. | |
| devices | No | Device serials to target (omit for all online devices) | |
| timeout | No | Timeout per command per device in ms (1s-60s, default 10s) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses parallel execution, per-check comparison, and profile details. However, without annotations, it omits potential side effects, permission requirements, or output format. Some behavioral traits (e.g., max custom commands) are mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states main purpose, second enumerates profiles and custom commands. No filler, every sentence adds value. Front-loaded with key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers tool purpose, parameters, and basic execution model. Lacks output details (format of matches/differences) and any error handling or prerequisites. Adequate but not fully comprehensive for a complex multi-device tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds value by explaining profile meanings (e.g., 'firmware' includes baseband, bootloader) and noting 'full' runs all. This goes beyond the enum descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it runs a comparative test workflow across all connected devices, listing specific profiles and custom commands. It distinguishes from siblings like adb_multi_compare and adb_multi_shell by focusing on comparative testing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides clear context for when to use (comparative testing across devices), but does not explicitly exclude alternatives or mention when not to use. No direct comparison to similar sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_neighboring_cellsA
List all visible cells beyond the serving cell: neighboring LTE/5G/WCDMA/GSM cells with their identities and signal strengths. Useful for cellular network surveys, coverage analysis, and radio environment characterization.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description clearly explains the tool's output (neighboring cells, identities, signal strengths) and implies a read‑only operation. It lacks details on permissions or device requirements but is sufficient for typical ADB use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first specifies the tool's action and output, the second its utility. No unnecessary words, front‑loaded, and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter and no output schema, the description covers core functionality and use cases. It could elaborate on output format or prerequisites but is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter `device` is fully described in the input schema ('Device serial'). The description adds no further context, so with 100% schema coverage, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all visible neighboring cells (LTE/5G/WCDMA/GSM) with identities and signal strengths, using a specific verb and resource, and distinguishes from serving cell or other network tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions use cases (surveys, coverage analysis, characterization) but does not explicitly compare to alternatives like adb_cell_identity or adb_signal_detail, nor states when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_networkB
Get network connectivity info including WiFi, cellular, and active connections
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It clearly indicates a read operation ('Get'), which implies no side effects. However, it does not disclose any potential permissions needed, expected response format, or performance characteristics. For a straightforward getter, this is minimally adequate but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the verb 'Get'. It is concise and efficient, with no wasted words. However, it omits details that could be included without adding length (e.g., return structure).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description should compensate by detailing what information is returned. The description only lists categories (WiFi, cellular, active connections) but does not clarify the format, structure, or scope (e.g., current state vs historical). This is insufficient for an agent to predict the tool's output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the only parameter 'device' is described as 'Device serial'). The description adds no additional meaning to the parameter; it lists types of info (WiFi, cellular, active connections) but does not relate them to the parameter. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Get network connectivity info including WiFi, cellular, and active connections', providing a specific verb and resource. It broadly distinguishes itself from networking siblings like adb_network_connections (which likely focuses on listing connections) by emphasizing a summary of connectivity state, but does not explicitly differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool over alternatives. Given the presence of multiple networking siblings (adb_network_scan, adb_network_device_ip, etc.), the lack of contextual cues or when-not-to-use instructions is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_network_auto_connectA
Discover and automatically connect to ADB devices on the local network. Combines network scanning with adb connect in one step. Probes a single port (default 5555) on each candidate; if you need to cover the full ADB port range (5555-5558) use adb_network_scan first, then adb_connect with the discovered host:port.
| Name | Required | Description | Default |
|---|---|---|---|
| ipRange | No | IP range to scan (e.g., '192.168.1.1-254') | |
| port | No | ADB port to probe and connect (1-65535, default 5555) | |
| device | No | Device serial (used to determine local subnet for ARP-based discovery) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains the tool probes a single port (default 5555) and combines scan+connect. However, it does not disclose potential failures, timeouts, or whether it modifies device state (e.g., if already connected).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states purpose, second gives usage guidance. No wasted words; every sentence adds essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no output schema and well-described parameters, the description is complete. It tells what the tool does, its limitation (single port), and when to use alternatives. No missing context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 3 parameters (100%). The description adds value by explaining the device parameter is used for 'ARP-based discovery' and clarifying the port default. This goes beyond the schema but does not fully compensate for missing output or nested structures.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool discovers and auto-connects to ADB devices on the local network, combining scanning and connecting. It distinguishes itself from siblings by specifying when to use adb_network_scan and adb_connect instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when-to-use and when-not-to-use: 'if you need to cover the full ADB port range (5555-5558) use adb_network_scan first, then adb_connect.' This directly guides the agent to alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_network_connectionsA
Show active network connections on the device (TCP/UDP). Similar to netstat — shows established connections, listening ports, and connection states.
| Name | Required | Description | Default |
|---|---|---|---|
| protocol | No | Filter by protocol | all |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It does not mention any permissions needed, side effects, or safety implications (e.g., read-only). The implication of a read-only query is weak and insufficient for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no unnecessary words. The first sentence states the main purpose, and the second adds a useful analogy and detail. Information is front-loaded efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains what is shown (established connections, listening ports, states) adequately. It is sufficient for a simple list tool, though more detail on output format could improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are described with clear enums and types. The description does not add extra meaning beyond the schema, so it meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action ('Show') and resource ('active network connections'), and compares to netstat, which is a well-known tool. It distinguishes from siblings by specifying TCP/UDP connections, establishing a clear purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a helpful analogy to netstat and mentions what it shows (established connections, listening ports, states). However, it lacks explicit guidance on when not to use it or which sibling alternatives to choose, though the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_network_device_ipA
Get the WiFi IP address of a connected device. Useful for switching from USB to wireless debugging without needing to find the IP manually on the device.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behaviors. It states the tool retrieves a WiFi IP address, but doesn't mention prerequisites (e.g., device must be connected via USB) or return format. Adequate for a simple read operation, but missing some context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy. The purpose and use case are front-loaded. Every sentence provides value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one optional parameter, no output schema). The description covers its primary function and a common scenario. Could optionally mention that it returns an IP address string, but not required given the conciseness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has one parameter 'device' with description 'Device serial', giving 100% coverage. Description adds no further meaning beyond the schema, which is acceptable per baseline scoring guidelines.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get the WiFi IP address of a connected device' with specific verb and resource. While it doesn't explicitly distinguish from siblings like adb_network, the purpose is unambiguous and narrow enough to avoid confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete use case: 'switching from USB to wireless debugging without needing to find the IP manually.' This guides the agent on when to use the tool. No explicit exclusions or alternatives, but the scope is sufficiently defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_network_scanA
Scan the local network for Android devices with ADB enabled over WiFi/TCP. Probes common ADB ports (5555-5558) on hosts from the ARP table and optionally a custom IP range. Discovered devices can be connected with adb_connect.
| Name | Required | Description | Default |
|---|---|---|---|
| ipRange | No | IP range to scan (e.g., '192.168.1.1-254'). If omitted, scans hosts from the ARP table only. | |
| ports | No | Custom ports to probe (default: [5555, 5554, 5556, 5557, 5558], max 20) | |
| timeoutMs | No | Connection timeout per host in ms (500-10000, default 2000) | |
| device | No | Device serial (used to determine the local subnet if no ipRange given) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the scanning behavior (probes common ports, uses ARP table, optional IP range) but does not disclose potential side effects like network traffic or required permissions. With no annotations, the description carries the burden, and it is adequate but not detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two clear sentences with no extraneous information. It front-loads the purpose and efficiently covers the key aspects of the tool's functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description provides a complete enough overview of the tool's purpose, inputs, and typical usage flow. It could mention the output format or error handling, but it is sufficient for an agent to understand the tool's role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds context by mentioning 'from the ARP table' and 'common ADB ports', but these are already implied in the schema descriptions. This adds marginal value, resulting in a baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it scans the local network for Android devices with ADB over WiFi/TCP, probes common ports, and distinguishes itself from sibling tools like adb_connect by mentioning discovered devices can be connected with that tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states that discovered devices can be connected with adb_connect, implying when to use this tool (to find devices) and what to do next. However, it does not explicitly state when not to use it or give alternatives for known IPs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_nfc_firmwareA
NFC controller firmware identification. Reports controller type (NXP/Broadcom/Samsung/ST), firmware version, NCI version, supported technologies (NFC-A/B/F/V), secure element availability (eSE/UICC), and HCE (Host Card Emulation) support.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial | |
| maxLines | No | Lines of dumpsys output to inspect (50-2000, default 200). Raise for verbose vendor builds. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It implies a read-only operation (identification) but does not explicitly state that no device state is modified, or mention potential failure conditions (e.g., missing NFC hardware). The parameter hints about 'verbose vendor builds' add some context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that efficiently conveys the tool's purpose and output items. It could be slightly more structured, but it remains clear without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of output schema and annotations, the description covers key aspects of what the tool returns. However, it omits potential context like required NFC state or error scenarios. The included list of output items is fairly comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters ('device' and 'maxLines') documented. The description adds no additional parameter meaning; it focuses on the output. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'NFC controller firmware identification' and enumerates specific output details (controller type, versions, technologies, secure element, HCE). This differentiates it from sibling tools like adb_gps_firmware, adb_wifi_firmware, and adb_firmware_probe.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool, prerequisites, or when alternatives might be better. It only describes the output, leaving the agent to infer proper usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_notificationsA
Read active notifications on the device. Parses the notification manager dump to extract package, title, text, importance, channel, and flags for each notification. Useful for verifying push notification delivery, monitoring notification state, and testing notification-related features.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filter by package name (partial match, case-insensitive) | |
| maxResults | No | Maximum notifications to return (1-50, default 20) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It explains it parses the notification manager dump, implying a read-only operation. It does not disclose permissions or side effects, but the extraction details are transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences covering purpose, parsing method, and use cases. No redundant information; front-loaded with action verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but the description lists extracted fields (package, title, etc.). Parameters are well-documented. Could mention response format, but sufficient for its simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage with defaults. The description does not add meaning beyond the schema; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reads active notifications and details the parsed fields (package, title, importance, etc.). It is specific and distinct from siblings like adb_logcat, which handle logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists use cases: verifying push notification delivery, monitoring state, and testing features. It does not mention when not to use or alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_open_urlB
Open a URL on the device in the default browser or handling app. Uses Android's VIEW intent action.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to open (must be a valid URL with scheme) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description bears full responsibility. It describes the core action but omits details like required device state (unlocked, screen on), failure modes (no default handler), or side effects (launches external app). This is minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey the action and mechanism. No redundant text, but slightly more context could be added without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with only two parameters and no output schema, the description is minimally adequate. It explains the action and intent but does not clarify return behavior or expected results, which could be inferred but is not explicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both 'url' and 'device' described. The description adds no additional meaning beyond what the schema provides, achieving the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool opens a URL on the device using the default browser or handling app, specifying the VIEW intent action. This distinguishes it from siblings like adb_start_activity and provides a specific verb and resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., using adb_start_activity for specific apps). No when-not-to-use or explicit context, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_orientationB
Get or set screen orientation. Can lock to portrait, landscape, reverse portrait, reverse landscape, or restore auto-rotate.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | 'get' to read current orientation, 'set' to change it | |
| orientation | No | Orientation to set (required when action='set'): auto=sensor, portrait=0°, landscape=90°, reverse_portrait=180°, reverse_landscape=270° | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It only states capability, not side effects (e.g., screen rotation animation), prerequisites, or persistence. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, concise and front-loaded. Could add structure (e.g., separating get vs set) but no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple get/set tool, but lacks details on return format for 'get', the device parameter, and any behavioral effects. No output schema to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. The tool description adds no extra semantic value beyond the schema's mapping of orientation values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get or set screen orientation', specifying the verb and resource. Lists possible orientation values, distinguishing it from screen-related siblings like adb_screen (power) and adb_screen_size.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool over alternatives like adb_screen_state or adb_screen_size. Lacks when-not-to-use or explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_ota_checkA
Compare the current system state against a saved fingerprint. Detects OTA updates by identifying changes in build ID, security patch, baseband firmware, bootloader, or kernel version.
| Name | Required | Description | Default |
|---|---|---|---|
| fingerprintPath | No | Path to saved fingerprint JSON. If omitted, compares against the most recent fingerprint for this device. | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It states the tool 'compares' and 'detects' changes, suggesting a read-only operation, but does not explicitly confirm non-destructiveness or any side effects. It also omits prerequisites (e.g., a saved fingerprint must exist). Adequate but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences effectively front-load the purpose and key details. Every sentence provides essential information without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only two parameters, no output schema, and no annotations, the description covers the core purpose and parameter semantics well. However, it does not describe the output format (e.g., a diff or list of changes), which an agent might need to interpret results. Slightly incomplete but acceptable for a straightforward tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description adds value beyond the schema by explaining that omitting 'fingerprintPath' compares against the most recent fingerprint for the device, providing contextual usage guidance not in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('Compare') and clearly identifies the resource ('system state against a saved fingerprint') and the goal ('detects OTA updates'). It lists the specific attributes checked (build ID, security patch, etc.), which distinguishes it from related tools like adb_ota_fingerprint that save fingerprints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when an OTA check is needed after saving a fingerprint, but it does not explicitly state when to use this tool versus alternatives (e.g., adb_ota_fingerprint for saving, adb_ota_history for history). No when-not or prerequisite guidance is provided, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_ota_fingerprintA
Capture and save the current system fingerprint: build ID, Android version, security patch, bootloader, baseband firmware, kernel version, and A/B partition slot. Saves to a timestamped JSON file for later comparison.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Label for this fingerprint (e.g., 'pre-update', 'post-ota') | current |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions capturing and saving to a file but does not explicitly state that the tool is read-only or non-destructive. Behavioral traits like file creation location or impact on device state are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with clear action and output. No unnecessary words; front-loaded with key attributes captured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately lists captured fields and output format (timestamped JSON). It's complete for an agent to understand purpose and outcome, though could note that it does not modify the device.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters (label default 'current', device serial). Description does not add extra meaning beyond the schema; it remains at baseline adequacy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool captures the current system fingerprint including specific attributes like build ID, Android version, security patch, etc., and saves it to a timestamped JSON file. This distinguishes it from siblings by focusing on saving a snapshot for comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for capturing a fingerprint before/after OTA updates for later comparison, but does not explicitly state when to use this tool compared to siblings like adb_ota_check or adb_firmware_diff. No guidance on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_ota_historyA
List all saved system fingerprints for a device, showing version progression over time. Highlights changes between consecutive snapshots.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial (filters to this device). Omit for all devices. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the listing and highlighting action, with no mention of side effects, authorization needs, or rate limits. For a read-only operation, the description is inadequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundant information, and the key value proposition (version progression, change highlighting) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, the description is adequate but does not explain what a 'system fingerprint' is or the output format. Without an output schema, more context would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'device' is clearly described in the schema with examples. The tool description does not add extra meaning beyond what the schema already provides, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists saved system fingerprints for a device, emphasizing version progression and change highlighting. It effectively distinguishes from siblings such as adb_ota_check and adb_firmware_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for viewing historical fingerprint data but provides no explicit guidance on when to use this tool over alternatives like adb_firmware_history or adb_ota_check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_package_infoA
Get detailed info about an installed package (version, permissions, paths)
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Package name (e.g., 'com.example.app') | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lists the categories of information returned (version, permissions, paths), which gives a reasonable overview of behavior. However, since there are no annotations, it should also disclose potential side effects (none expected), authentication needs (none), or any other operational context, which is absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence of 9 words. It efficiently conveys the core purpose and output categories with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple information retrieval tool, the description is reasonably complete. It mentions the key output categories, though it could further clarify that the tool operates on installed packages and suggest using adb_list_packages for discovery. No output schema exists, so the description partially compensates by listing return categories.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description adds no additional meaning beyond what the schema already provides. The parameter descriptions in the schema are clear, and the tool description is concise but does not elaborate beyond the schema's existing explanations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'detailed info' about a package, including specific attributes like version, permissions, and paths. This distinguishes it from sibling tools such as adb_list_packages (which only lists names) and adb_list_permissions (which only lists permissions).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. For example, it does not mention that adb_list_packages should be used to discover available packages first, nor does it indicate any prerequisites like requiring package installation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_pairB
Pair with a device over WiFi using the pairing code from Developer Options → Wireless debugging → Pair device
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Device IP and pairing port (e.g., '192.168.1.100:37123') | |
| code | Yes | 6-digit pairing code shown on the device |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It does not disclose any behavioral traits such as whether pairing is destructive, requires authentication, or any side effects. The description is too minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (one sentence) and front-loaded. It is concise, but could be slightly improved by hinting at usage guidelines. It deserves a high score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two parameters, the description is adequate but lacks behavioral context. An AI agent would need to know that pairing is a prerequisite for adb_connect, but this is not mentioned. No output schema or annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both params have descriptions). The tool description does not add any additional meaning beyond the schema; it merely states the purpose. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Pair with a device over WiFi' using a specific method. It uses a strong verb and resource, and distinguishes itself from sibling tools like adb_connect by focusing on the pairing step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by mentioning the pairing code location, but it does not explicitly state when to use this tool vs alternatives like adb_connect. No instructions on prerequisites or when not to use are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_perf_snapshotB
Capture a performance snapshot for a package: memory usage, frame stats, and CPU info in one call.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Package name to profile (e.g., 'com.example.app') | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It fails to mention whether the snapshot modifies state, requires permissions, or if it is read-only. The word 'capture' suggests a read operation, but no explicit confirmation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the action, no filler. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lists the types of metrics collected, but without an output schema, more detail on the snapshot's format or interpretability would help. Still, adequate for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The tool description adds no new meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures a performance snapshot for a package, listing specific metrics (memory, frame stats, CPU info) in one call. It distinguishes itself from sibling tools like adb_top (real-time) and adb_battery by focusing on a snapshot of multiple metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., adb_top for real-time, adb_battery for battery). No exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_permission_auditA
Audit runtime permission grants for a package. Lists all granted dangerous permissions grouped by category (Camera, Location, Phone, SMS, etc.) and flags potentially over-provisioned permissions. Compares grants against the dangerous permission manifest to identify unnecessary access.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Package name to audit (e.g., 'com.example.app'). AZ7 fix: enforces Java-identifier shape so injection attempts are rejected at the schema layer before reaching validateShellArg. | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description fully carries the burden of disclosure. It details the output behavior: listing granted dangerous permissions grouped by category, flagging over-provisioned ones, and comparing to the manifest. It does not explicitly state it is read-only, but the analysis description implies no destruction. This is good but could be more precise.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise, with two sentences that front-load the core action and then elaborate on the analysis details. Every sentence adds value, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the absence of output schema and annotations, the description explains the output format and analysis sufficiently. It could mention that the tool operates over ADB or specify output format, but the core behavior is clearly communicated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters well-described in the schema. The description adds no additional parameter-level context beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('audit') and specifies the resource ('runtime permission grants for a package'). It clearly distinguishes from sibling tools like 'adb_list_permissions' by detailing grouping by category, flagging over-provisioned permissions, and comparing against the manifest.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for permission auditing but does not explicitly state when to use this tool versus alternatives like 'adb_list_permissions'. No exclusions or prerequisites are mentioned, leaving the agent to infer context from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_plugin_infoA
Show information about the plugin system: directory, how to create plugins, and loaded plugin count.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It correctly implies a read-only operation but does not disclose behavioral details such as whether permissions are needed, rate limits, or if the information is cached.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that is front-loaded with the main purpose and includes specific details. Every word contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description is complete: it details the categories of information displayed. No additional context is necessary for this simple info tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the schema coverage is 100% and baseline is 4. The description adds value by specifying what information is shown (directory, plugin creation, loaded plugin count), which helps the agent understand the output beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool shows information about the plugin system, listing specific aspects like directory, plugin creation, and loaded plugin count. It uses a specific verb ('Show') and resource ('plugin system'), and distinguishes itself from sibling adb_plugin_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives is provided. The description does not mention when not to use it or suggest other tools like adb_plugin_list for listing concrete plugins.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_plugin_listB
List all loaded plugins and the plugin directory path.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only states the action; no disclosure of side effects, permissions needed, or behavior beyond the listing. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, clear sentence with no wasted words. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool, description covers purpose and output items. Could mention requirement of connected device, but implicit in adb context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so schema coverage is 100%. Baseline is 4; description adds no param info but none needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists all loaded plugins and directory path, with a specific verb and resource. It distinguishes from sibling 'adb_plugin_info' implicitly, but not explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus other plugin-related tools like adb_plugin_info. No exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_profile_detectA
Auto-detect and build a device profile from the connected device. Captures hardware identification, chipset family, modem info, root status, and matches against the built-in profile library for known quirks.
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | Automatically save the detected profile | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It describes read operations (captures, matches) but omits side effects of the 'save' parameter (e.g., where profile is saved, if it modifies device state). The behavioral traits are partially clear but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no extraneous text. The first sentence conveys the core purpose, and the second adds specific details. It is highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 optional params, no output schema), the description covers main functionality and key captures. It omits details on output format and save behavior, but is still adequate for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing clear parameter descriptions (save: save profile, device: device serial). The tool description adds context about what the tool does overall, but does not further clarify parameter semantics beyond schema. Baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool auto-detects and builds a device profile, listing specific information captured (hardware, chipset, modem, root status, matching quirks). It distinguishes well from sibling tools like adb_profile_list or adb_profile_save.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives. The description does not mention scenarios or prerequisites, leaving the agent to infer context from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_profile_listA
List all device profiles: built-in library entries and user-saved profiles.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states it lists all profiles but does not disclose safety aspects (e.g., read-only behavior, no side effects, or what happens in edge cases like no profiles). For a simple list, this is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single concise sentence that front-loads the purpose ('List all device profiles') and provides subtypes. No unnecessary words, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with no output schema, the description covers the key output categories. It could mention return format or pagination, but given the context, it is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the input schema is fully descriptive. The description adds no param-specific info, but with no parameters, a baseline score of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists device profiles, including both built-in library entries and user-saved profiles. The verb 'list' and the resource 'device profiles' are specific, and it distinguishes from siblings like adb_profile_detect or adb_profile_save.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for viewing profiles but provides no explicit guidance on when to use this tool versus alternatives like adb_profile_detect. No when-not-to-use or context differentiation is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_profile_saveA
Save a device profile to the profiles library. Use after adb_profile_detect to persist the profile, or create a manual profile with custom quirks and notes.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Profile name (used as filename) | |
| profile | Yes | Profile JSON string (from adb_profile_detect output or manually composed) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool saves profiles but does not explain behavior like overwriting existing profiles, validation, error handling, or side effects, which is a gap for a persistence operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. The main purpose is front-loaded, and the additional usage direction follows efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two simple parameters, no output schema, and no annotations, the description adequately covers the tool's core purpose and workflow. It lacks details on overwrite behavior or validation, but for a straightforward save action, it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes both parameters with 100% coverage. The description adds context that 'profile' can come from adb_profile_detect output or be manually composed, which provides additional usage guidance beyond the schema, earning a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool saves a device profile to the profiles library (specific verb+resource). It also distinguishes from siblings like adb_profile_detect (detects profiles) and adb_profile_list (lists profiles) by noting it persists profiles after detection or manual creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises using this tool after adb_profile_detect to persist the profile, or for creating a manual profile with custom quirks and notes, providing clear when-to-use and alternative scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_pullA
Pull a file from the device to local filesystem
| Name | Required | Description | Default |
|---|---|---|---|
| remotePath | Yes | File path on the device | |
| localPath | No | Local destination (defaults to temp dir) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral aspects. It lacks information on behavior like overwriting existing files, error handling (e.g., missing remote path), permissions needed, or whether intermediate directories are created. This is a significant gap for a file transfer tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately conveys the action and direction. It is concise with no extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has three parameters, no output schema, and no annotations, the description is minimal but covers the essential purpose. However, it lacks details on return values and edge cases, making it somewhat incomplete for automated use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with each parameter having a description. The tool description does not add meaningful information beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool pulls a file from the device to the local filesystem, using specific verb (pull) and objects (file, device, local). It distinguishes from sibling tools like adb_push by contrasting direction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for downloading files but does not explicitly state when to use or not use, nor does it mention alternatives. With many sibling tools, more guidance would help, but the purpose is straightforward.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_pushA
Push a local file to the device filesystem. Pre-flight checks: hard-blocked kernel paths, filesystem type warnings, symlink resolution, and destination storage availability.
| Name | Required | Description | Default |
|---|---|---|---|
| localPath | Yes | Local file path to push | |
| remotePath | Yes | Destination path on device | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden of behavioral disclosure. It lists several pre-flight checks (kernel paths, filesystem type, symlink resolution, storage availability), which is helpful. However, it does not explain what happens on success/failure, whether overwriting occurs, or what the return value represents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately states the main purpose, followed by a list of checks. It is concise and front-loaded, though the list of checks could be formatted more cleanly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a push operation with three parameters and no output schema, the description covers pre-flight behavior but omits details on error handling, post-push state, or confirmation. It is adequate but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, meaning all three parameters are described in the schema. The description does not add additional context beyond what the schema provides (e.g., format constraints, special values). Baseline of 3 is appropriate with no extra semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Push a local file to the device filesystem') and includes specific pre-flight checks, making the purpose unmistakable. It distinguishes from similar sibling tools like adb_pull by the direction of transfer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions pre-flight checks but does not provide explicit guidance on when to use this tool versus alternatives such as adb_pull or adb_install. The usage context is implied by the action, but no comparative or cautionary information is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_qemu_connectA
Connect to a running QEMU VM's ADB service, making the guest appear as a device for DeepADB tools. Requires the guest OS to have an ADB daemon running (e.g., Android guest with USB debugging enabled). Requires the 'adb' binary (install with: pkg install android-tools). Connections are restricted to localhost only — no remote host connections allowed.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | VM name to connect to (must be running) | |
| timeout | No | Connection timeout in milliseconds (3s-30s). Default 10s. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses prerequisites and localhost restriction, but does not mention return values, error behavior (e.g., what happens if VM not found or timeout), or potential side effects. Still, the key behavioral traits are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each serving a purpose: purpose, prerequisites, and restriction. No redundant or extraneous information. Front-loaded with the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (2 parameters, no output schema), the description fully covers purpose, prerequisites, and restrictions. Sibling tools like adb_connect and adb_qemu_disconnect provide necessary context. No gaps for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds little beyond what the schema provides: it mentions that 'name' must be a running VM and that 'timeout' has a default, but does not add new meaning or format details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Connect to a running QEMU VM's ADB service' with a specific verb and resource. It distinguishes from sibling tools like adb_connect (remote connections) by explicitly restricting to localhost only, and it explains the effect on DeepADB tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit prerequisites: guest OS must have ADB daemon running (e.g., Android with USB debugging), and requires 'adb' binary with install command. Also states when NOT to use (no remote host connections), implicitly differentiating from adb_connect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_qemu_disconnectA
Disconnect from a QEMU VM's ADB service. Removes the guest from the device list.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | VM name to disconnect from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that it disconnects and removes from device list, but lacks details on side effects, permissions, or state changes beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two short sentences, no unnecessary words, and effectively communicates the tool's purpose and effect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the essential information. It could mention that it only applies to QEMU VMs, but the name already implies that. Overall, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage for the single parameter 'name' with description 'VM name to disconnect from'. The tool description does not add additional meaning beyond what is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool disconnects from a QEMU VM's ADB service and removes the guest from the device list. It is specific and distinct from siblings like adb_qemu_connect or adb_qemu_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when disconnecting from a QEMU VM, but does not explicitly state when not to use or provide alternatives. The context from sibling tools helps, but no direct guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_qemu_guest_shellA
Execute a shell command on a QEMU guest VM via ADB. The VM must be connected first (use adb_qemu_connect). The guest serial is derived internally — no user-supplied host/IP reaches the ADB binary. Subject to the same security middleware checks as adb_shell.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | VM name (must be connected via adb_qemu_connect) | |
| command | Yes | Shell command to execute on the guest | |
| timeout | No | Command timeout in milliseconds (1s-60s). Default 15s. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description adds internal detail (guest serial derived internally, no external host/IP) and compares behavior to adb_shell. However, does not mention return values, side effects, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three focused sentences covering purpose, prerequisite/internal behavior, and security. No redundant or extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers prerequisite and security context. For a command execution tool with schema-documented parameters, it is mostly complete. Could be improved by specifying return value format or error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%. Description adds no extra parameter detail beyond what schema already provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Execute a shell command on a QEMU guest VM via ADB', specifying verb, resource, and context. Differentiates from adb_shell by targeting QEMU guests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states prerequisite: VM must be connected via adb_qemu_connect. Notes security middleware checks similar to adb_shell, but lacks explicit when-not-to-use or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_qemu_imagesA
Manage QEMU disk images for virtual machines. List available images, create new qcow2/raw disk images, or delete existing ones. Images are stored in the DeepADB image directory.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform | |
| name | No | Image name (for create/delete). Alphanumeric, hyphens, underscores only. | |
| sizeMb | No | Image size in MB (for create). Default 8192 (8GB). Range: 64-65536. | |
| format | No | Image format. qcow2 is recommended (sparse, snapshots). raw for maximum I/O performance. | qcow2 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only lists actions without disclosing side effects (e.g., deletion permanence), permission requirements, or error handling. For a mutation tool, more behavioral detail is necessary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-loading purpose and actions. No redundant information; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main actions and storage location but omits return value description (especially for list), error conditions, and differentiation from siblings. Adequate but not fully complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions. Tool description adds 'Images stored in DeepADB image directory' but does not significantly enhance parameter understanding beyond schema. Baseline 3 for 100% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states manage QEMU disk images, lists three actions (list, create, delete), and specifies storage location. It distinguishes from sibling tools like adb_qemu_start/stop/connect by focusing on image lifecycle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly suggests use for image management but lacks explicit guidance on when to use this vs. other QEMU tools (e.g., adb_qemu_setup). No when-not-to-use or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_qemu_setupA
Check and install QEMU for on-device virtualization. Verifies KVM availability, checks if QEMU is installed, reports version info, and can install QEMU via Termux package manager. Only available in on-device mode.
| Name | Required | Description | Default |
|---|---|---|---|
| install | No | If true, install QEMU via pkg if not already present |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must cover behavioral traits. It describes checks (KVM, version) and install via Termux, but doesn't disclose potential side effects (e.g., network usage, storage impact) or behavior when KVM is unavailable. It is adequate but could be more transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences with no fluff. Each sentence adds essential information: purpose, actions, and constraint. Excellent front-loading of the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one boolean parameter, no output schema), the description covers the main functionality: checking and installing QEMU, with the constraint of on-device mode. It doesn't mention return values or what happens when install=false, but these are minor omissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description's explanation of the 'install' parameter ('if true, install QEMU via pkg if not already present') largely mirrors the schema. No additional semantics are provided beyond what the schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it checks and installs QEMU for on-device virtualization, with specific actions: verifying KVM, checking installation, reporting version, and optional install. It distinguishes itself from sibling tools like adb_qemu_connect and adb_qemu_start which deal with running QEMU.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It mentions the tool is only available in on-device mode, which is a key constraint. While it doesn't explicitly compare to alternatives, the context of sibling tools implies this is the setup tool before using other QEMU commands. Slightly more explicit guidance would improve clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_qemu_startA
Boot a QEMU virtual machine with KVM hardware acceleration. Auto-detects optimal resource allocation: uses total cores minus 1 for the VM (reserving one for the host OS), and up to 65% of physical RAM. Custom values are accepted but capped at safe limits to prevent host starvation.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | VM name (used to track and stop the VM) | |
| image | Yes | Disk image filename (from adb_qemu_images) or absolute path | |
| memoryMb | No | RAM in MB. Auto-detected if omitted (65% of physical RAM). Capped at safe limit. | |
| cpus | No | Virtual CPUs. Auto-detected if omitted (total cores minus 1). Capped at safe limit. | |
| adbPort | No | Host port to forward to guest ADB (port 5555). Default 5556. | |
| kernel | No | Path to kernel image (for Android boot). If omitted, QEMU uses the disk image's bootloader. | |
| initrd | No | Path to initrd/ramdisk image (for Android boot). | |
| append | No | Kernel command line arguments (for Android boot). | |
| display | No | Display output. 'none' for headless (default). 'vnc' starts a VNC server on port 5900. | none |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description covers key behaviors: KVM acceleration, auto-detection of CPUs and RAM, reserving one core for host, and capping custom values. It does not mention error states or return values, but for a start tool, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the main purpose. Each sentence adds meaningful information: purpose, auto-detection details, and custom value behavior. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 9 parameters and no output schema, the description covers the essential aspects: purpose, resource allocation, and custom value limits. It could mention return values or prerequisites, but given the sibling `adb_qemu_setup`, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds value by explaining the auto-detection logic for `memoryMb` and `cpus`, and the default for `adbPort`. This goes beyond the schema's property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with 'Boot a QEMU virtual machine with KVM hardware acceleration,' providing a specific verb and resource. It clearly distinguishes from siblings like `adb_emulator_start` by specifying QEMU and KVM, and from `adb_qemu_setup` by indicating the start action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (to boot a QEMU VM) and provides guidance on resource allocation with auto-detection and safe limits. While it doesn't explicitly exclude alternatives, the auto-detection and capping offer clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_qemu_statusA
Show status of QEMU virtual machines — running VMs with resource usage and port mappings, plus KVM and QEMU availability.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses key behavioral aspects: showing status, resource usage, port mappings, and availability. It implies a read-only operation, though not explicitly stated. Could be improved by noting non-destructive nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, well-structured sentence with front-loaded purpose ('Show status'). Every word adds value, zero redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description adequately covers the main outputs: running VMs, resource usage, port mappings, and KVM/QEMU availability. It lacks details on return format but is sufficient for typical usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema coverage is 100% trivially. Baseline for zero parameters is 4, and the description adds no extra parameter info because none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Show' and resource 'status of QEMU virtual machines', detailing specific aspects like resource usage, port mappings, and KVM/QEMU availability. It distinguishes from sibling tools like adb_qemu_start or adb_qemu_stop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. While usage as a read-only status check is implied, the description does not mention exclusions or conditions that would help an agent decide between this and other QEMU tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_qemu_stopA
Stop a running QEMU virtual machine. Sends SIGTERM for graceful shutdown, with force kill option.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | VM name to stop. If omitted, lists running VMs. | |
| force | No | Use SIGKILL instead of SIGTERM for immediate termination. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
In the absence of annotations, the description discloses key behavioral traits: graceful shutdown via SIGTERM, immediate termination via SIGKILL with force. It does not contradict any annotations (none provided).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action, and provides essential detail without extraneous text. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does not explain return values or error handling. It also omits prerequisites and edge cases (e.g., already stopped VM). Adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The tool description adds the signal names (SIGTERM, SIGKILL), but this is largely redundant with schema comments. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Stop' and the resource 'QEMU virtual machine', differentiating it from sibling tools like adb_qemu_start and adb_qemu_status. It also explains the shutdown mechanism (SIGTERM) and the force option.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for stopping a VM but lacks explicit guidance on when to use this tool versus alternatives, such as when to set force=true. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_rebootB
Reboot the device. Supports normal, recovery, and bootloader modes.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Reboot mode: normal (default), recovery, or bootloader | normal |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only states the effect without disclosing behavioral traits like loss of ADB connection, reboot delay, or authentication needs. Minimal beyond basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise one-sentence description that front-loads the action. However, conciseness sacrifices additional context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without output schema, no explanation of return values. Missing behavioral outcomes (e.g., device restarts, disconnection). Adequate for a simple reboot but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters. Description adds no extra meaning beyond the schema, so baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Reboot' with specific resource 'device' and explicit supported modes (normal, recovery, bootloader). Distinguishes from siblings by focusing on reboot vs. other device operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like adb_root_shell or adb_restart_app. Does not mention prerequisites or context (e.g., device must be connected).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_registry_installA
Install a plugin from the community registry by name. Downloads the plugin JavaScript file into the plugins directory. Restart DeepADB to load it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Plugin name from the registry | |
| force | No | Overwrite if already installed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the tool downloads a JavaScript file, places it in the plugins directory, and requires restart. This covers the core side effects well, though it could mention overwrite behavior (already covered by force param).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: purpose, download action, post-install restart. Every sentence serves a purpose with no fluff. Ideal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple install tool with no output schema, the description covers core actions. Missing are return value/error handling, and validation. However, the core flow is adequately described, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no additional meaning beyond the schema: it mentions the name identifies the plugin, but that is already in the schema description. No extra parameter guidance provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool installs a plugin from the community registry by name, using a specific verb and resource. It differentiates from siblings like adb_registry_search (search) and adb_registry_installed (list installed).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description is clear about the action and resource, and the context of community registry implies prior search. However, it does not explicitly state when to use this tool versus alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_registry_installedA
List all locally installed plugins with their versions and metadata. Shows which plugins have updates available in the registry.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool lists plugins and checks for updates, but does not elaborate on behavior such as permissions required, data freshness, or side effects. Since no annotations are provided, the description carries full burden, but it is only partially transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences that front-load the core functionality with no superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool, the description provides sufficient context: it lists installed plugins, shows versions/metadata, and indicates update availability. However, it lacks details on output format or what 'metadata' includes, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is fully covered. The description does not need to explain parameters, and the baseline score of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies that the tool lists locally installed plugins with versions and metadata, and indicates which have updates available. It distinguishes itself from sibling tools like adb_registry_install and adb_registry_search by focusing on listing installed plugins.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. There is no mention of prerequisites, context, or exclusions. The user must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_registry_searchA
Search the community plugin registry for available plugins. Shows name, description, version, and author. Fetches the latest manifest from the configured registry URL.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Filter plugins by name or description keyword |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions fetching the latest manifest from a configured URL, but does not disclose read-only nature, rate limits, or error cases. Minimal behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, front-loaded with the core action. Every sentence adds value: purpose and data returned in first, source and freshness in second.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no output schema), the description covers the key aspects: what it does, what data is returned, and that it fetches live data. Could mention caching or network dependency, but overall complete enough for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter ('query') has a clear description in the schema ('Filter plugins by name or description keyword'), so the description adds no extra meaning. Schema coverage is 100%, baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it searches the community plugin registry and lists what information is shown (name, description, version, author). Distinct from sibling tools like adb_plugin_list (installed plugins) and adb_registry_install.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for browsing plugins but does not explicitly state when to use this tool vs. alternatives like adb_plugin_list or adb_registry_installed. No exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_regression_baselineA
Capture a performance baseline for a package: memory, CPU, frame stats, battery, and network state. Saves to a timestamped JSON file for later comparison with adb_regression_check.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Package name to profile | |
| label | No | Label for this baseline (e.g., 'before-refactor', 'v2.5.0') | baseline |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It discloses that the tool captures multiple performance metrics and saves a file, but doesn't mention potential side effects (e.g., impact on device performance during capture, permission requirements).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: first sentence states the action and scope, second sentence explains the output and relationship to sibling tool. No redundant words, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple metrics) and lack of output schema, the description adequately covers what is captured and the purpose. It could be improved by stating where the JSON file is saved, but it is largely complete for the agent's decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all three parameters. The description adds marginal value by providing examples for the 'label' parameter (e.g., 'before-refactor'), but otherwise the schema already conveys the meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it captures a performance baseline for a package, listing specific metrics (memory, CPU, frame stats, battery, network) and explains the output (timestamped JSON file). It also names the sibling tool adb_regression_check for comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions the created JSON file is for later comparison with adb_regression_check, indicating when to use this tool. It does not provide explicit when-not-to-use guidance, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_regression_checkB
Compare current performance against a saved baseline. Flags regressions in memory (>20% increase), CPU (>50% increase), and jank rate (>25% increase). Thresholds are configurable.
| Name | Required | Description | Default |
|---|---|---|---|
| baselinePath | Yes | Path to the saved baseline JSON file | |
| memoryThreshold | No | Memory regression threshold in percent (0-1000, default 20%) | |
| cpuThreshold | No | CPU regression threshold in percent (0-1000, default 50%) | |
| jankThreshold | No | Jank rate regression threshold in percent (0-1000, default 25%) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions the metrics checked and thresholds but omits whether the tool modifies any state, requires special permissions, or handles missing baselines. It does not indicate if it is a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states the main purpose, second enumerates the three regression metrics with default thresholds. No unnecessary words, well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters and no output schema. The description does not explain what the tool returns (e.g., pass/fail, detailed report), which is important for an agent to interpret results. Missing information on return value and error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters with descriptions. The description adds that thresholds are configurable, but this is already implied by the schema's default values and ranges. No additional parameter semantics beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool compares current performance against a saved baseline and flags regressions in memory, CPU, and jank rate with specific thresholds. This distinguishes it from sibling tools like adb_regression_baseline (which likely creates baselines) and adb_regression_history (which shows history).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for performance regression testing but does not explicitly state when to use this tool versus its siblings such as adb_regression_baseline or adb_perf_snapshot. No guidance on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_regression_historyB
List all saved regression baselines, optionally filtered by package name. Shows trends over time.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | No | Filter by package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It mentions listing and trend showing but does not disclose safety (e.g., read-only nature), performance, or side effects. For a tool with no annotations, this is insufficient for behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words, front-loading the main action and adding the key optional capability. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description should cover what the output looks like (e.g., list of baselines with dates and metrics). It does not specify the return format, leaving the agent without full context. The tool is simple but incomplete in this regard.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for the sole parameter (packageName), with a clear description. The description adds minimal extra parameter detail (just restates optional filtering) but does provide broader context about trends. With high schema coverage, the baseline is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists saved regression baselines, optionally filtered by package name, and shows trends over time. This provides a specific verb ('list') and resource ('saved regression baselines') with additional capability, distinguishing it from related siblings like adb_regression_baseline (which creates baselines) and adb_regression_check (which checks).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for viewing historical baselines but does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or conditions. Given the sibling tools, some differentiation is implicit but not explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_resolve_intentsB
Discover all activities, services, and receivers registered by a package with their intent filters
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Package name to query | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose side effects, permission requirements, or that it is a read-only operation. The agent must infer safety, which is a significant gap for a tool with no behavioral cues.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the core purpose without redundant or extraneous information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, the description is minimally complete for a simple query tool. However, it could be improved by indicating what the returned data looks like, e.g., whether it returns intent filter details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description does not add additional meaning beyond what the schema provides, thus meeting the baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Discover' and the specific resource: all activities, services, and receivers registered by a package with their intent filters. It distinguishes from sibling tools by focusing on intent filters, which is unique among the listed ADB tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives like adb_package_info or adb_list_packages. It does not specify prerequisites, context, or scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_restart_appB
Force-stop then re-launch an app. The most frequent debugging workflow in a single call.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Package name (e.g., 'com.example.app') | |
| device | No | Device serial | |
| delayMs | No | Delay between stop and start in ms (0-10000, default 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must fully disclose behavior. It mentions 'force-stop then re-launch' but does not clarify failure handling, whether it waits for launch completion, or if settings are preserved. This is insufficient for a two-step operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence plus a tagline, front-loaded with the action. Every word adds value, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's combined nature and lack of annotations/output schema, the description omits crucial context like return value, error scenarios, and when to prefer this over separate stop/start. The large sibling list heightens the need for differentiation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for all three parameters. The description adds no extra meaning beyond 'frequent debugging workflow,' so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Force-stop then re-launch an app' and identifies it as the most frequent debugging workflow, effectively distinguishing it from sibling tools like adb_force_stop and adb_start_app.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for frequent debugging but provides no explicit guidance on when not to use or alternatives. It does not compare to sequential stop and start workflows, leaving the agent to infer appropriateness.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_result_dropA
Delete a stored result handle, or clear all handles in this session. Either provide both tool and name to drop one specific handle, or pass all: true to drop everything in the current namespace. Useful for freeing up the store cap proactively or removing stale data before a sensitive operation.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | No | Source tool name (required unless all=true) | |
| name | No | Handle name (required unless all=true) | |
| all | No | If true, delete every handle in this namespace. tool/name must be omitted when all=true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool deletes handles and clarifies the two conditional modes (single vs. all). It could mention error handling or persistence, but it adequately communicates the destructive nature and scope ('in this session').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: first states purpose, second explains the two modes with parameter conditions, third gives a use case. No filler, front-loaded, and efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and few parameters, the description covers the essential behavior. It could mention return value or confirmation on success, but for a delete tool, the two modes and purpose are sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the input schema. It clarifies the conditional requirement: tool and name are both needed for a single drop, while all=true drops everything. It explains the logical relationship between parameters, which is not evident from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action: delete a stored result handle or clear all handles. It distinguishes between the two modes (single vs. all), and the sibling tools (adb_result_get, adb_result_list) confirm this is the deletion tool, so it's well-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'freeing up the store cap proactively or removing stale data before a sensitive operation.' It does not provide when-not-to-use or compare with alternatives, but the context is clear and sufficient for a simple deletion operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_result_getA
Retrieve the content of a stored result handle by tool name + handle name. Returns the original content blocks as the source tool produced them. Updates the handle's last-accessed time. For URI-based retrieval, read result://<tool>/<name> as an MCP Resource instead.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | Yes | Source tool name (the tool that originally stored the handle, e.g., 'bugreport') | |
| name | Yes | Handle name supplied at storage time (e.g., 'initial') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It mentions that the tool updates the handle's last-accessed time, which is not evident from the schema. It does not describe error handling or other side effects, but the main side effect is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the primary purpose, and every sentence adds value. There is no redundant or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with two parameters and no output schema, the description covers the main functionality, return behavior, and an alternative method. It lacks information on error cases (e.g., handle not found), but overall it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides complete descriptions for both parameters (tool and name) with patterns and lengths. The description adds little beyond mentioning the URI alternative, so it meets the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'retrieve' and the resource 'stored result handle' with specific identification by tool name and handle name. It distinguishes itself from siblings like adb_result_list and adb_result_drop by specifying that it returns the original content blocks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear alternative for URI-based retrieval (using MCP Resource), indicating when to use a different method. However, it does not explicitly state when not to use this tool or compare with other retrieval methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_result_listA
List all result handles currently stored in this session. Returns metadata for each: tool, name, size, creation/expiry/last-access times. Use the URIs (result://<tool>/<name>) with adb_result_get or by reading them as MCP Resources to retrieve stored content. Handles are scoped per-auth-token and survive server restart within their TTL.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description fully discloses behavior: lists all handles in session, read-only, metadata fields, scoped per-auth-token, survives server restart within TTL. No hidden side effects mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, no redundant words. Each sentence adds value: purpose, return info, usage guidance, behavioral details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a no-parameter listing tool. Covers purpose, return metadata, integration with other tools, and behavioral scoping/TTL. No gaps given the simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has zero parameters with 100% coverage. Description adds value by confirming no filtering needed and explaining what listing all handles entails. Baseline 4, but description compensates with context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'List all result handles currently stored in this session' with specific verb and resource. Distinguishes from siblings like adb_result_get (retrieves content) and adb_result_drop (deletes). Specifies metadata fields returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells how to use results with adb_result_get or MCP Resources to retrieve content. Provides context on scoping and TTL survival. Implicitly when to use: when you need an overview of stored handles.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_reverseA
Reverse-forward a device port to a port on the host (device → host). Use for letting device apps reach services on your machine.
| Name | Required | Description | Default |
|---|---|---|---|
| remote | Yes | Remote (device) spec, e.g., 'tcp:3000'. AF2 fix: format-validated. | |
| local | Yes | Local (host) spec, e.g., 'tcp:3000'. AF2 fix: format-validated. | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It describes the basic behavior (reverse forwarding device to host) but lacks details on side effects, permissions, statefulness, or removal. Given typical adb context, it is moderately transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that effectively conveys the purpose and use case without any unnecessary words or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is brief. It covers the basic purpose but lacks information about error conditions, how to verify success, or relationship to sibling tools like adb_reverse_remove. For a tool that modifies device connectivity, more completeness would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add extra parameter semantics beyond the schema, which already provides regex patterns and descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (reverse-forward), direction (device to host), and use case (letting device apps reach host services). It distinguishes itself from sibling tools like adb_forward (host to device) by specifying direction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Use for letting device apps reach services on your machine', which provides a clear when-to-use scenario. However, it does not explicitly mention alternatives or when not to use it, though the context implies it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_reverse_removeA
Remove a reverse forward (device → host), or all reverse forwards. Use after testing to clean up.
| Name | Required | Description | Default |
|---|---|---|---|
| remote | No | Remote spec to remove (e.g., 'tcp:3000'). Omit to remove all reverse forwards. AF2 fix: format-validated. | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the direction (device → host) and the action (remove), but doesn't disclose potential side effects, whether removal is reversible, or error conditions. The inherent destructiveness is implied but not elaborated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It is front-loaded with the primary action and usage context, making it efficient for the agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (2 parameters, no output schema), the description covers the essential aspects: what it does, when to use, and parameter behavior. It could be enhanced by mentioning error handling or states, but is largely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described. The description adds value by explaining that omitting the 'remote' parameter removes all reverse forwards and notes 'AF2 fix: format-validated'. This goes beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Remove' and the resource 'reverse forward'. It explicitly distinguishes between removing a specific forward or all forwards, effectively differentiating from sibling tools like adb_forward_remove or adb_reverse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a usage hint ('Use after testing to clean up') but lacks explicit guidance on when not to use or alternatives. The usage context is implied rather than explicit, leaving room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_revoke_permissionA
Revoke a runtime permission from a package. Useful for resetting permission state to test first-run flows or denial handling.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Package name (e.g., 'com.example.app') | |
| permission | Yes | Full permission string (e.g., 'android.permission.CAMERA') | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. States it revokes a permission (mutation), but does not disclose potential side effects (e.g., immediate app impact, need for restart). Adequate but could add more behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, no filler. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no output schema and clear parameters, the description is sufficiently complete. Could mention it reverses 'adb_grant_permission', but not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter having a description. Description does not add extra meaning beyond schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Revoke' and resource 'runtime permission from a package', clearly stating its function. It also implies differentiation from sibling 'adb_grant_permission' by being the reverse operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear use case: 'resetting permission state to test first-run flows or denial handling'. Does not explicitly exclude scenarios or mention alternatives, but the context is helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_ril_pollA
Retrieve captured RIL messages since the last poll. Optionally filter by category (registration, cell_info, signal, network, security, handover, data, radio_state, nas).
| Name | Required | Description | Default |
|---|---|---|---|
| session | Yes | Session ID from adb_ril_start (e.g., 'ril_1') | |
| category | No | Filter by category: registration, cell_info, signal, network, security, handover, data, radio_state, sms, nas, other | |
| maxMessages | No | Max messages to return per poll (1-10000) | |
| raw | No | Return raw logcat lines instead of parsed messages |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description gives some behavioral context (cumulative since last poll, optional parsed vs raw) but does not disclose important traits like destructiveness, concurrency limits, or the effect on captured messages post-poll. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each carrying distinct value: the first states the core action, the second adds optional filtering. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and schema coverage, the description adequately covers purpose and filtering. However, it does not explain the return format (e.g., list of messages) despite no output schema, and assumes familiarity with session setup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. The description adds minimal value beyond the schema; it lists categories but omits 'sms' and 'other' present in the schema. The description of raw and maxMessages is not enhanced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves captured RIL messages since the last poll, with an optional category filter. It uses specific verbs and distinguishes from siblings like adb_ril_start (which initiates capture) and adb_logcat_poll (which polls logcat).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after adb_ril_start but provides no explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_ril_startA
Start capturing RIL (Radio Interface Layer) messages from the radio logcat buffer. Captures network registration, cell info, signal strength, authentication, handover, and NAS events. Useful for radio diagnostics and cellular network research.
| Name | Required | Description | Default |
|---|---|---|---|
| bufferSize | No | Max messages to keep in ring buffer (100-50000, default 5000) | |
| includeKernel | No | Also capture from main and kernel logcat buffers for modem framework and kernel-level radio messages | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the types of captured events but omits critical behavioral details: whether it returns immediately or runs in background, how to stop (sibling adb_ril_stop is not mentioned), resource consumption, or lifecycle of the capture. The bufferSize parameter hints at a ring buffer but is not explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, each adding value: first states the action, second details captured events, third notes use case. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the description lists captured events, it does not explain the tool's lifecycle (e.g., whether it starts a persistent capture or returns immediately) or how to retrieve captured data. Without an output schema, more context is needed for an agent to use the tool effectively alongside siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add any additional meaning to the parameters beyond what the schema already provides. It lists captured events but does not relate them to parameters like includeKernel.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts capturing RIL messages, lists specific events (network registration, cell info, etc.), and states the use case (radio diagnostics and research). It distinguishes itself from siblings like adb_ril_stop and adb_ril_poll by emphasizing the start action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used for starting RIL capture for diagnostics, but does not explicitly state when to use it vs. alternatives (e.g., before adb_ril_poll) or when not to use it. No prerequisites or context are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_ril_stopA
Stop a RIL capture session. Shows a summary of captured message categories.
| Name | Required | Description | Default |
|---|---|---|---|
| session | Yes | Session ID to stop (e.g., 'ril_1'), or 'all' to stop all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It discloses that it stops and shows a summary, but does not detail effects like data loss or permissions. Basic transparency is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no unnecessary words. Efficiently conveys the action and outcome.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is adequate. It explains the action and result, but could mention that the session must be active to stop.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers the one parameter ('session') fully with description and example. The tool description adds no additional meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Stop a RIL capture session') and distinguishes from sibling tools like adb_ril_start and adb_ril_poll. It also mentions the outcome (shows a summary).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use vs alternatives (e.g., adb_ril_stop vs adb_ril_poll). The context implies using after starting a session, but lacks clear when-not-to-use or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_rmA
Delete a file or directory on the device. Recursive deletion uses depth-based protection: refuses at depth ≤ 2 from root (blocks rm -rf /system or /sdcard but allows /sdcard/project/build/). Symlinks are resolved before depth checks to prevent traversal bypasses. Hard-blocks /dev, /proc, /sys. For recursive deletes, reports a pre-flight file count.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File or directory path to delete | |
| recursive | No | Delete directory recursively (-rf). Depth-protected. | |
| root | No | Use root shell for protected paths | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description covers key behavioral traits: depth protection, symlink resolution, hard-blocks, and pre-flight file count, though it omits error handling and return value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five concise sentences, each providing distinct, valuable information with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers constraints and safety details but lacks explanation of return values or error behavior, which is needed given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds significant meaning beyond the input schema, especially for 'recursive' (depth protection) and 'path' (symlink handling), but does not enrich 'root' or 'device' beyond their descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes a file or directory, with specific details on recursive deletion and depth protection, distinguishing it as the primary deletion tool among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context on when the tool will refuse (depth ≤ 2, hard-blocks), and mentions root option, but does not explicitly compare to alternative tools or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_root_shellB
Execute a command as root via su. Requires rooted device.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Command to run as root | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states root execution and prerequisite, missing crucial details like error behavior, output, or risks. For a root exec tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences and 9 words make it very concise. Front-loaded with key info. However, it sacrifices completeness. Could include more without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no description of return value/errors. This tool executes commands with high potential impact, so missing context on failure modes or output format is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds no extra meaning beyond the parameter descriptions in the schema. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'execute' and resource 'a command as root via su', and includes a prerequisite 'Requires rooted device'. It distinguishes itself from sibling tool 'adb_shell' by specifying root execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a prerequisite ('Requires rooted device') and implies usage for root commands, but does not explicitly contrast with sibling 'adb_shell' or mention when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_screenA
Control screen state: wake, sleep, toggle, lock, or unlock. Lock and unlock verify actual keyguard state via dumpsys window. Unlock uses wm dismiss-keyguard (works for swipe keyguards); supply 'pin' to perform the full PIN entry sequence for PIN-protected devices: wakes screen, dismisses keyguard, swipes up to reveal keypad, types PIN, confirms with ENTER, and verifies the keyguard sleep token was released.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Screen action — one of: wake (power on + dismiss keyguard if no PIN), sleep (power off), toggle (flip current state), lock (force keyguard), unlock (dismiss keyguard, with PIN if supplied) | |
| pin | No | PIN/password to enter when unlock encounters an active keyguard (digits only for PIN, alphanumeric for password). Only used with action='unlock'. | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses behavioral details like keyguard verification and PIN entry sequence. It lacks error handling or failure outcomes, but the core behavior is well explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two main sentences and one detailed paragraph for PIN. It is front-loaded with the primary purpose. The structure is logical, though the detailed PIN entry sequence could be part of the parameter description, but overall it is well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers core functionality but lacks information about return values or error scenarios. With no output schema and no annotations, some behavioral context (e.g., what happens on failure) is missing, making it somewhat incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds meaning: it explains action enum values in plain language and provides additional context for the 'pin' parameter, specifying when it is used and its format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Control screen state: wake, sleep, toggle, lock, or unlock.' It lists specific actions and distinguishes from siblings like adb_screen_state by focusing on state manipulation rather than querying.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for unlock behavior, including PIN entry and keyguard verification. However, it does not explicitly state when to avoid this tool (e.g., for checking screen state use adb_screen_state), but the given guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_screencapB
Take a screenshot and save to local filesystem. Returns the file path.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No | Output filename (default: screenshot_<timestamp>.png) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states it saves to filesystem and returns the path, but with no annotations, it lacks behavioral details like overwrite behavior, file format, device readiness requirements, or error handling. This is insufficient for a mutation tool without annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with no superfluous words. It front-loads the action and includes the key output (file path).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool, the description covers the essential action and output. However, it lacks guidance on error cases and differentiation from similar tools, which limits completeness in a context with many siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add any additional meaning to the parameters beyond what is in the schema. It mentions the return value but not how parameters affect behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures a screenshot and saves it to the local filesystem, returning the file path. This distinguishes it from adb_ui_dump (which captures UI hierarchy) and adb_screenrecord_start (video), but does not differentiate among sibling screenshot tools like adb_screenshot_compressed or adb_screenshot_baseline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus other screenshot-related siblings such as adb_screenshot_compressed, adb_screenshot_baseline, or adb_ui_dump. The agent must infer the appropriate use case from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_screencap_annotatedA
Take a screenshot with UI element bounding boxes and numbered labels composited directly onto the image. Returns the annotated PNG path plus a text legend mapping each element number to its identity. Ideal for LLM workflows that need to reference specific UI elements by number rather than by coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| clickableOnly | No | Only annotate clickable/scrollable elements (default true — reduces visual noise) | |
| filename | No | Output filename (default: annotated_<timestamp>.png) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the output (annotated PNG path and text legend) but does not explicitly state it is non-destructive or mention permissions needed. For a screenshot tool, this is adequate but leaves some transparency gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences. The first states the action and output; the second provides the ideal use case. No superfluous words, and the main purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main functionality and output format. No output schema is provided, but the description explains what is returned. It could mention error conditions or prerequisites, but for a screenshot tool the description is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all three parameters described in the schema. The description adds no additional parameter meaning beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool takes a screenshot with annotated bounding boxes and numbered labels, and returns the annotated PNG path and text legend. It distinguishes itself from siblings like adb_screencap by specifying the annotated overlay and numbering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case: 'Ideal for LLM workflows that need to reference specific UI elements by number rather than by coordinates.' It implies when to use it but does not explicitly state when not to use or name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_screenrecord_startA
Start recording the device screen. Recording runs on-device. Use adb_screenrecord_stop to finish and pull the video file.
| Name | Required | Description | Default |
|---|---|---|---|
| maxDuration | No | Maximum recording duration in seconds (1-180, default 60) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
States recording runs on-device and references stopping to pull the file, but lacks details on side effects, permissions, or resource consumption. No annotations provided to supplement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with action, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core action and stop flow. Schema details maxDuration. Could mention default file path or device support requirements, but adequate for a simple tool with rich schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides full parameter descriptions with defaults and constraints. Description adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action ('Start recording the device screen') and the resource. Mentions the complementary tool adb_screenrecord_stop, distinguishing from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage by mentioning when to stop, but no explicit guidance on when to use this tool versus alternatives or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_screenrecord_stopA
Stop an active screen recording and pull the video file locally. If the recording has already finished (hit time limit), this just pulls the file.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the dual action (stop+pull) and the edge case, but does not detail side effects like file cleanup or permissions. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences that are front-loaded and to the point. No unnecessary words or repetition. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the main action and an important edge case. It could mention the destination path, but completeness is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the single parameter 'device' as 'Device serial'. The tool description adds no further meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool stops an active screen recording and pulls the video, with specific handling for already-finished recordings. This distinguishes it from siblings like adb_screenrecord_start and adb_pull.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for stopping recordings and pulling files, but does not explicitly provide when-not-to-use or alternatives. It covers the common scenario well.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_screenshot_baselineA
Capture a named screenshot baseline for later comparison. Saves the screenshot and metadata to the baselines directory.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Baseline name (e.g., 'home_screen', 'login_page', 'threat_alert') | |
| device | No | Device serial | |
| result_handle | No | Optional. If provided, store this tool's result under `result://<tool>/<name>` for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. Existing handles with the same tool+name are overwritten. Use adb_result_list to see active handles, adb_result_get or the MCP Resource URI to retrieve. | |
| result_handle_ttl | No | Optional. TTL in seconds for the result handle (60 to 604800). Default 43200 (12 hours). Ignored if result_handle is not provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it saves to a 'baselines directory', which is a behavioral trait. However, it does not mention potential overwriting behavior, permissions required, or any side effects beyond saving. Given no annotations, this is minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action and purpose. Every word adds value, and there is no redundancy. It is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 4 parameters and no output schema, the description is mostly complete. It lacks explanation of how baselines are used (e.g., comparison workflow), but the sibling tools fill that context. Minor gap: no mention of file format or storage location details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters with detailed descriptions. The description adds minimal extra meaning (e.g., 'baselines directory', 'for later comparison'), which is not essential beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Capture a named screenshot baseline'), the resource ('screenshot baseline'), and the purpose ('for later comparison'). It distinguishes from sibling tools like adb_screencap and adb_screenshot_diff by specifying the naming and comparison intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating baselines but provides no explicit guidance on when to use this tool versus alternatives (e.g., adb_screencap for simple captures). No exclusions or when-not-to-use advice is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_screenshot_compressedA
Take a screenshot and pull the full-resolution PNG, plus metadata for client-side compression. Returns local file path, dimensions, file size, and a ready-to-run imagemagick command for converting to a smaller JPEG. (Android doesn't ship imagemagick, so the actual compression is post-processing — this tool sets up everything you need.)
| Name | Required | Description | Default |
|---|---|---|---|
| quality | No | JPEG quality (10-100, default 50). Lower = smaller file, more artifacts | |
| scale | No | Scale factor (0.1-1.0, default 0.5). 0.5 = half resolution | |
| filename | No | Output filename (default: screenshot_compressed_<timestamp>.jpg) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description explains key behaviors: returns local file path, dimensions, file size, imagemagick command, and explicitly states that compression is not done on device. However, it omits error conditions or file location details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences plus a clarifying parenthetical. Every sentence adds value, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description fully explains what the tool returns and the important post-processing requirement, making it complete for usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% parameter description coverage, so the baseline is 3. The description adds no additional parameter information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool takes a screenshot and pulls the full-resolution PNG with metadata for compression, distinguishing it from other screenshot tools like adb_screencap by focusing on compressed output and client-side processing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for compressed screenshots but does not explicitly provide when-to-use or when-not-to-use guidance, nor does it compare with siblings like adb_screencap or adb_screenshot_baseline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_screenshot_diffA
Compare the current screen against a saved screenshot baseline. Decodes PNGs and performs pixel-level comparison (RGB channels), reporting exact pixel difference count, percentage, and the bounding box of the changed region. Supports a tolerance threshold for absorbing minor dynamic elements like clocks or notification badges.
| Name | Required | Description | Default |
|---|---|---|---|
| baseline | Yes | Baseline name to compare against (from adb_screenshot_baseline) | |
| tolerancePercent | No | Pixel difference percentage threshold below which the result reports IDENTICAL. 0 = exact match required. 1-2 absorbs clock/status bar changes. | |
| device | No | Device serial | |
| result_handle | No | Optional. If provided, store this tool's result under `result://<tool>/<name>` for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. Existing handles with the same tool+name are overwritten. Use adb_result_list to see active handles, adb_result_get or the MCP Resource URI to retrieve. | |
| result_handle_ttl | No | Optional. TTL in seconds for the result handle (60 to 604800). Default 43200 (12 hours). Ignored if result_handle is not provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It transparently describes the algorithm (RGB channels, pixel count, percentage, bounding box) and the tolerance threshold. It does not disclose side effects, but the tool is inherently read-only and non-destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core purpose, and contains no unnecessary words. It efficiently conveys all essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description explains what is returned (difference count, percentage, bounding box). Behavioral details like idempotency are not covered, but for a comparison tool, the description is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds minimal extra meaning beyond the schema; it mentions tolerance for absorbing dynamic elements, but that's already captured in the parameter description. No significant new context is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it compares the current screen against a saved baseline, performing pixel-level comparison and reporting metrics. It distinguishes from sibling tools like adb_screenshot_baseline (which saves) and adb_screencap (which captures the screen).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (compare screen) and mentions the tolerance parameter for handling minor dynamic elements. However, it does not explicitly state when not to use it or suggest alternative tools for specific scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_screenshot_historyB
List all saved screenshot baselines with their metadata (timestamp, dimensions, device, file size).
| Name | Required | Description | Default |
|---|---|---|---|
| result_handle | No | Optional. If provided, store this tool's result under `result://<tool>/<name>` for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. Existing handles with the same tool+name are overwritten. Use adb_result_list to see active handles, adb_result_get or the MCP Resource URI to retrieve. | |
| result_handle_ttl | No | Optional. TTL in seconds for the result handle (60 to 604800). Default 43200 (12 hours). Ignored if result_handle is not provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description implies a read-only list operation, which is consistent with the task. However, with no annotations provided, it could have disclosed more about behavior (e.g., empty list, performance, return format). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no unnecessary words. Front-loaded with the key action and result. Could be considered slightly brief but acceptable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description partially compensates by listing metadata fields (timestamp, dimensions, device, file size). The result handle parameters are explained in the schema, so completeness is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameters are well-documented in the schema. The description adds no additional insight beyond what is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool lists saved screenshot baselines and enumerates metadata fields. However, it does not differentiate from sibling tools like adb_screenshot_baseline or adb_screenshot_compressed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., adb_screenshot_baseline for creating, adb_screenshot_diff for comparing). The description does not mention prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_screen_sizeA
Get the screen resolution and display density. Returns physical width, height (in pixels), and DPI density. Useful for calculating tap/swipe coordinates and understanding the UI layout grid.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
DESCRIPTION without annotations: The description discloses what the tool returns and its utility, but does not mention behavioral aspects such as how the data is obtained (e.g., via ADB commands), whether it requires an active device connection, or any limitations (e.g., might not work on all devices). It leaves some behavioral uncertainties.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: it starts with the purpose, then details the outputs, and ends with a use case. Every sentence adds value, and there is no unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one optional parameter, no output schema), the description is largely complete. It covers purpose, outputs, and a use case. Minor omissions include the fact that the device parameter is optional and defaults to the connected device, but overall it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema_description_coverage is 100% as the only parameter (device) has a clear description in the input schema. The tool description adds no additional meaning beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets screen resolution and display density, specifying the exact outputs (width, height, DPI) and a use case (calculating tap/swipe coordinates). However, it does not distinguish itself from sibling tools like adb_screen or adb_screen_state, which may also provide screen-related information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is useful for coordinate calculations and UI layout understanding, but it provides no explicit guidance on when to use it versus alternatives or any when-not scenarios. The usage context is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_screen_stateA
Get a combined screen state snapshot in one call: foreground activity, screen dimensions and density, orientation, battery level, and a TSV list of interactive UI elements. Replaces 3-4 separate tool calls with a single round-trip. Ideal as a first step in any automation workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| clickableOnly | No | Only include clickable/scrollable elements in TSV output (default true) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lists the data returned (foreground activity, screen metrics, battery, UI elements) but does not explicitly state that the operation is read-only or non-destructive, nor does it disclose any side effects. With no annotations provided, this transparency is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core purpose and listed outputs, followed by value proposition and usage guidance. Every sentence adds meaningful information with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description lists the types of data returned, it lacks details on the overall return format (e.g., is it JSON?); only the UI elements are specified as TSV. Given no output schema, this omission prevents full completeness for a tool combining multiple data types.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since the input schema already provides 100% coverage for both parameters (clickableOnly and device), the description adds no additional parameter-specific meaning beyond the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's combined purpose: 'Get a combined screen state snapshot in one call' and lists specific data returned (foreground activity, screen dimensions/density/orientation, battery, TSV of UI elements). It distinguishes from siblings by noting it replaces 3-4 separate tool calls, making its scope unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly positions the tool as 'Ideal as a first step in any automation workflow,' providing clear context for when to use it. However, it lacks explicit when-not-to-use or exclusion criteria relative to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_scroll_untilA
Scroll the screen repeatedly until a target element is found. Performs a swipe gesture, then checks the UI hierarchy for the target. Repeats until found or max iterations reached. Useful for finding elements in long lists or scrollable content.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Match elements containing this text (case-insensitive) | |
| resourceId | No | Match elements with this resource-id (partial match) | |
| contentDesc | No | Match elements with this content-description (partial, case-insensitive) | |
| direction | No | Scroll direction (default 'down' = content moves up, revealing lower items) | down |
| maxScrolls | No | Maximum scroll attempts (1-50, default 10) | |
| tapWhenFound | No | Automatically tap the element when found | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses the iterative process: swipe, check UI hierarchy, repeat until found or max iterations. It also mentions the tapWhenFound option. It does not detail failure behavior (e.g., returns null), but covers the core loop transparently.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loading the main action. Every sentence adds value: first states purpose, second explains the loop, third gives use case. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers the essential behavior. Minor gap: what happens if element not found (e.g., returns empty or error). But overall complete for the tool's purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. The description adds no additional meaning to the parameters beyond the schema's descriptions (e.g., 'text' case-insensitive, 'direction' enum).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scrolls repeatedly to find a target element, distinguishing it from sibling tools like adb_ui_find (no scrolling) and adb_input_fling (no element checking). It uses specific verbs 'scroll' and 'find' with the resource 'screen' and 'UI hierarchy'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context by stating it is 'useful for finding elements in long lists or scrollable content', which guides when to use. However, it does not explicitly mention when not to use or list alternatives, though the sibling list implicitly provides options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_selinux_denialsA
List recent SELinux AVC denial messages from logcat and kernel logs. Shows which processes were blocked, what they tried to do, and the SELinux contexts involved. Useful for diagnosing permission issues and understanding security policy enforcement.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | No | Max denial entries to return (1-1000, default 50) | |
| process | No | Filter denials by process/source context name | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description implies a read-only operation (listing messages) but does not disclose potential side effects, authentication needs, or rate limits. It could be more explicit about the non-destructive nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first clearly states the primary function, and the second adds useful context and use case. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides a good high-level understanding of the tool's purpose and output contents. However, it lacks details about the output format or examples, which would be helpful for a diagnostic tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for all three parameters (lines, process, device). The description does not add additional semantic context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists recent SELinux AVC denials from logcat and kernel logs, specifying what information is shown (blocked processes, actions, SELinux contexts). This is specific and distinguishes it from siblings like adb_selinux_status and adb_logcat.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states it is 'useful for diagnosing permission issues and understanding security policy enforcement,' which implies appropriate use. However, it does not explicitly mention when not to use or compare with alternative tools like adb_permission_audit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_selinux_statusA
Check SELinux enforcement mode, policy version, and recent denial count. Shows whether the device is in Enforcing, Permissive, or Disabled mode. Root access provides additional policy details from dmesg audit logs.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool checks enforcement modes and that root access enriches output, but it fails to explicitly state that the tool is read-only and non-destructive. The lack of a clear safety declaration is a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the purpose, and contains no unnecessary words. Every sentence adds value, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately explains what the tool returns (enforcement mode, policy version, denial count, and root details). However, it does not specify the format of the denial count or policy version, leaving some ambiguity. Slightly more detail would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'device' is fully described in the schema with 'Device serial', and schema coverage is 100%. The description adds no additional meaning beyond the schema, meeting the baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks SELinux enforcement mode, policy version, and recent denial count. It uses a specific action verb 'Check' and identifies the resource. However, it does not distinguish from the sibling tool 'adb_selinux_denials', which likely provides more detailed denial information, so the differentiation is unclear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking SELinux status and mentions that root access provides additional details. However, it does not explicitly state when to use this tool versus alternatives like 'adb_selinux_denials', nor does it provide any exclusion criteria or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_sensor_readA
Read current hardware sensor values from the device. Enumerates all available sensors from sensorservice and returns their last-known readings with timestamps. Sensor availability is device-dependent — the tool reports what's present. No root required.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Filter by sensor category: all, accelerometer, gyroscope, magnetometer, light, barometer, proximity, gravity, linear_accel, rotation, orientation, motion, step, temperature | all |
| listOnly | No | If true, list available sensors without reading values (faster, useful for discovery) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it returns last-known readings with timestamps, is device-dependent, and requires no root. No annotations provided, so description covers behavioral traits adequately without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, no redundant information, every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description hints at output (readings with timestamps). Covers essential behavior for a read tool, though could detail output format more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already details parameters. The description adds no additional meaning beyond stating the tool returns readings with timestamps, which is baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool reads current hardware sensor values, enumerates all available sensors, and returns last-known readings with timestamps. Distinguishes from siblings like adb_iio_read by focusing on sensorservice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context that sensor availability is device-dependent and no root required, but does not explicitly guide when to use this tool over alternatives or mention any prerequisites or constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_settings_getA
Read an Android settings value from any namespace (system, secure, global)
| Name | Required | Description | Default |
|---|---|---|---|
| namespace | Yes | Settings namespace | |
| key | Yes | Setting key (e.g., 'screen_brightness', 'location_mode', 'airplane_mode_on') | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided; the description indicates a read operation, implying safety, but lacks details on behavior like error handling, connectivity requirements, or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no extraneous words; it effectively communicates the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool, the description is adequate but does not specify the output structure or behavior on missing keys, though it is reasonably complete given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters; the description adds no new information beyond the schema, achieving the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Read'), the resource ('Android settings value'), and the scope ('any namespace'), making it specific and distinct from siblings like adb_settings_put.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for reading settings but does not explicitly state when to use this tool versus alternatives like adb_settings_put, nor does it provide context about prerequisites or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_settings_putB
Write an Android settings value to any namespace (system, secure, global)
| Name | Required | Description | Default |
|---|---|---|---|
| namespace | Yes | Settings namespace | |
| key | Yes | Setting key (e.g., 'screen_brightness' for system namespace, 'wifi_on' or 'airplane_mode_on' for global, 'location_providers_allowed' for secure). Use `adb_shell` with `settings list <namespace>` to enumerate available keys for a device. | |
| value | Yes | Value to write. Type depends on the key — typically a string, integer, or 0/1 for booleans. The setting framework accepts everything as a string and parses on read. | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full burden for behavioral disclosure. It only states 'Write', indicating mutation, but lacks important details such as required permissions, side effects, persistence of changes, or error conditions. For a write operation that modifies device state, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 11 words, containing no filler or redundancy. It is front-loaded with the essential action and scope. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters, no output schema, and no annotations, the description is insufficiently complete. It fails to mention that setting values is persistent, that some keys require specific permissions, or how to enumerate available keys (though the schema hints at 'adb_shell'). For a potentially destructive mutation tool, more context is needed to avoid misconfiguration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already having a descriptive comment (namespace enum, key examples, value type hints, device serial). The tool description adds no additional parameter context beyond the schema. Baseline 3 is appropriate as the description does not degrade but also does not enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Write' and the resource 'Android settings value'. It specifies the scope ('any namespace') and lists the exact namespaces (system, secure, global). This distinguishes it from sibling tool 'adb_settings_get' which reads settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention that for reading settings one should use 'adb_settings_get', nor does it specify any prerequisites or conditions for writing settings. The agent receives no context about when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_shellC
Execute a shell command on the Android device. Returns stdout and stderr.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Shell command to execute on the device | |
| device | No | Device serial | |
| timeout | No | Timeout in milliseconds (1s-10min) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only mentions return of stdout/stderr but omits important traits like permissions required, potential for blocking, command injection risks, or impact on device state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, the first stating the action and the second the output. No unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of shell execution (3 parameters, no output schema, many siblings), the description is insufficient. It does not explain output format (e.g., JSON object), error handling, or practical considerations like command length limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all three parameters. The description adds no additional meaning beyond the schema. Per guidelines, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it executes a shell command and returns stdout/stderr. However, the presence of siblings like adb_root_shell and adb_multi_shell that also execute shell commands creates ambiguity; no distinct differentiator is provided.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as adb_root_shell or adb_multi_shell. The agent is left to infer use cases without explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_signal_detailB
Get detailed signal strength measurements: RSRP, RSRQ, SINR, RSSI, timing advance, and signal bars. Provides raw radio measurements for signal analysis and anomaly detection.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description fails to disclose behavioral aspects like whether it requires special permissions, if it modifies state, or the nature of the output. It only states it provides measurements, leaving potential side effects unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey purpose and scope: first sentence lists measurements, second states use case. No extraneous words, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple read tool with one parameter and no output schema, but could be enhanced by mentioning typical output format or prerequisites (e.g., device must be connected and have active radio).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (single 'device' parameter described as 'Device serial'), and the description adds no extra semantic detail beyond the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets detailed signal strength measurements and lists specific metrics (RSRP, RSRQ, SINR, RSSI, timing advance, signal bars), distinguishing it from sibling tools like adb_cell_identity or adb_neighboring_cells.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., adb_cell_identity for identity, adb_baseband_info for modem info). It does not specify prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_snapshot_captureB
Capture a comprehensive device state snapshot: installed packages, key settings, and system properties. Saves to a JSON file.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Snapshot name (default: auto-generated timestamp) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description does not disclose whether the operation is read-only, destructive, or requires specific permissions. For a snapshot tool, this context is important but missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single concise sentence that efficiently conveys the tool's purpose and output format with no superfluous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks details on file location, return value, or what happens on failure. Given no output schema, more context would be beneficial for a snapshot tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds no extra meaning beyond the schema defaults. Parameters are only named, not explained in usage context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures a comprehensive device state snapshot including installed packages, settings, and system properties, and saves to JSON. This differentiates it from sibling tools like adb_perf_snapshot or adb_thermal_snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It simply describes the action without indicating prerequisites or decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_snapshot_compareB
Compare current device state against a saved snapshot. Shows added/removed packages, changed settings, and property differences.
| Name | Required | Description | Default |
|---|---|---|---|
| snapshotPath | Yes | Path to the saved snapshot JSON file | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It implies a read-only comparison, but does not explicitly state that no state modification occurs. This omission could mislead agents about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, directly stating the action and the output. Every word adds value, with no redundancy or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description outlines what the tool shows but lacks specifics about the output format (e.g., structured diff, plain text). The optional 'device' parameter is unexplained. Given no output schema, more detail would improve completeness for a moderate-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both snapshotPath and device having descriptions. The tool description does not add further meaning beyond the schema, so it meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: compare current device state against a saved snapshot. It specifies the output includes added/removed packages, changed settings, and property differences, which distinctly differentiates it from sibling tools like adb_snapshot_capture and adb_snapshot_restore_settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. The description does not indicate when to use this tool versus alternatives like adb_snapshot_capture (for creating snapshots) or adb_screenshot_diff (for visual comparisons). Agents lack context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_snapshot_restore_settingsA
Restore settings from a saved snapshot to the current device. Only restores global and secure settings — does not install/uninstall packages.
| Name | Required | Description | Default |
|---|---|---|---|
| snapshotPath | Yes | Path to the saved snapshot JSON file | |
| namespace | No | Which settings namespace to restore | both |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It adds value by clarifying that only global and secure settings are restored (no packages), but lacks details on whether settings are overwritten, merged, or require a reboot.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that are front-loaded and concise, with no redundant information. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no output schema, the description is adequate but could be more complete by stating success/failure behavior or prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description adds little beyond the schema. It mentions 'global and secure settings' which aligns with the namespace enum, but does not elaborate on format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Restore settings from a saved snapshot to the current device' with a specific verb and resource, and distinguishes from sibling tools like adb_snapshot_capture by noting it only restores global/secure settings and does not install/uninstall packages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., adb_settings_put, adb_snapshot_compare). The description implies usage for restoring settings but lacks explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_start_activityC
Start an activity or app by intent or component name
| Name | Required | Description | Default |
|---|---|---|---|
| intent | Yes | Intent or component (e.g., 'com.example/.MainActivity' or '-a android.intent.action.VIEW -d https://example.com') | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description must disclose behavior. It only states the action without mentioning side effects, required permissions, error handling, or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise and front-loaded. Could include more structure (e.g., usage notes) but no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param tool with no output schema and no annotations, description is too brief. Missing info on return values, prerequisites (device must be connected?), and behavior on failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with examples for intent and clear label for device. Description adds no extra meaning beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it starts an activity or app via intent or component name. It distinguishes from tools like adb_current_activity but does not differentiate from adb_start_app, which may overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like adb_start_app, adb_resolve_intents, or adb_open_url. No prerequisites or exclusions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_start_appA
Launch an app by package name (resolves and starts the default launcher activity)
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Package name (e.g., 'com.example.app') | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description mentions it resolves the default launcher activity, which adds some behavior beyond the basic launch. However, no annotations are provided, and the description does not disclose error handling, prerequisites (like app installed), or return values for such a simple tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, concise and front-loaded, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple with 2 parameters and no output schema. Description covers purpose but lacks details on error behavior, return values, or usage nuances. Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described. The description adds context about default launcher activity resolution but does not add new meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Launch' and resource 'app by package name', and clarifies it resolves the default launcher activity. This distinguishes it from sibling tools like adb_start_activity and adb_restart_app.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage when wanting to launch an app by package name, but provides no explicit guidance on when to use this tool versus siblings like adb_start_activity for specific activities or adb_restart_app for restarting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_tap_elementA
Find a UI element by text, resource-id, or content-description, then tap its center. Combines UI hierarchy search with input tap in one atomic operation. More reliable than coordinate-based taps for dynamic layouts.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Match elements containing this text (case-insensitive) | |
| resourceId | No | Match elements with this resource-id (partial match) | |
| contentDesc | No | Match elements with this content-description (partial, case-insensitive) | |
| index | No | Which match to tap if multiple found (0 = first match, default) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that it combines search and tap atomically and is reliable, but does not specify failure behavior (e.g., if element not found), permissions, or potential side effects. Adequate but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, front-loaded with the main action. Every sentence adds value without redundancy. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters and no output schema, description covers the core behavior (search then tap) and provides practical context (reliability over coordinate taps). Could mention prerequisite of visible UI or error handling, but overall sufficient for agent selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with detailed descriptions for all 5 parameters. The description adds little beyond the schema, only listing the parameter alternatives. No extra meaning about parameter interplay (e.g., AND vs OR when multiple filters used). Baseline 3 per rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly identifies the action (tap) and the resource (UI element by text/resource-id/content-desc), distinguishes from coordinate-based taps (e.g., adb_input) and other sibling tools. The phrase 'Combines UI hierarchy search with input tap in one atomic operation' effectively differentiates it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly states when to use (dynamic layouts) and contrasts with coordinate taps, but does not explicitly list alternative tools or when not to use. With siblings like adb_input, adb_ui_find, adb_scroll_until, more explicit guidance would be beneficial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_tcpdump_startA
Start a packet capture on the device using tcpdump. Requires root or tcpdump binary on device. Capture runs in background.
| Name | Required | Description | Default |
|---|---|---|---|
| interface | No | Network interface to capture (default: 'any') | any |
| filter | No | tcpdump filter expression (e.g., 'port 443', 'host 10.0.0.1') | |
| maxPackets | No | Stop after N packets (1-1000000, omit for continuous until stop) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that capture runs in background and requires root/binary, but lacks details on output handling, file storage, or lifecycle management; with no annotations, more depth is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two well-chosen sentences front-load purpose and add necessary context without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers start action and background execution but does not explain output destination, retrieval, or the need for complementary stop tool, leaving gaps for effective agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for all 4 parameters, and the description adds no additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Start a packet capture on the device using tcpdump' with a specific verb and resource, and differentiates from sibling 'adb_tcpdump_stop'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions prerequisites (root/binary) but does not provide explicit guidance on when to use this tool vs alternatives among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_tcpdump_stopA
Stop an active packet capture and pull the pcap file locally for analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states it stops and pulls the pcap file, but does not disclose what happens if no capture is active, any side effects, error handling, or details about the pulled file. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that concisely states the tool's action, front-loading the key verb 'Stop'. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is adequate but incomplete. It fails to mention prerequisites (e.g., must have started a capture), failure modes, or what happens to the pcap file.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a description for the single parameter 'device'. The description does not add any additional meaning beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool stops an active packet capture and pulls the pcap file, which is a specific verb+resource. It distinguishes itself from the sibling tool 'adb_tcpdump_start' by indicating it stops a capture.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates that this tool should be used when a packet capture is active and needs to be stopped. It does not explicitly mention alternatives, but the counterpart 'adb_tcpdump_start' is obvious from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_tcpipA
Switch a USB-connected device to TCP/IP mode on the specified port (default 5555). After this, you can disconnect USB and use adb_connect.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | TCP port for ADB (1-65535, default 5555) | |
| device | No | Device serial (must be USB-connected) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, description carries full burden. It discloses that the tool switches mode and assumes USB connection, but does not mention potential side effects, authentication requirements, or error conditions. Adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, clearly front-loads purpose and outcome. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, description adequately covers purpose and next step. Could mention output format, but for a command tool this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so baseline is 3. Description adds default port and usage hint, but does not significantly enhance understanding beyond what schema properties already provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Switch' and resource 'USB-connected device to TCP/IP mode', includes default port number, and distinguishes from sibling tool adb_connect by referencing it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the tool is for USB-connected devices and that after switching, USB can be disconnected and adb_connect used. Provides clear context for when to use, though lacks explicit 'when not to use' or alternative references beyond adb_connect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_telephonyC
Get telephony state including cell info, signal strength, and network registration.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It only mentions what data is retrieved but does not disclose behavioral traits like read-only nature, required permissions, potential side effects, or data size. This is insufficient for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 12 words, efficiently conveying the core purpose. No wasted words, though it may be too brief for completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's moderate complexity (gathering telephony state) and absence of an output schema, the description only lists three vague output categories. It does not explain the structure, specific fields, or provide enough context for the agent to distinguish from similar tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single optional 'device' parameter described as 'Device serial'. The description adds no additional meaning about the parameter, such as its optionality, default behavior when omitted, or impact on output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets telephony state and lists three specific aspects: cell info, signal strength, network registration. It is a specific verb+resource. However, it does not differentiate from sibling tools like adb_cell_identity or adb_signal_detail which may have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. With many related sibling tools (e.g., adb_cell_identity, adb_signal_detail, adb_neighboring_cells), the agent lacks context to choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_test_gen_from_intentsA
Analyze a package's registered activities and intent filters to generate a test workflow that launches each exported activity and verifies it renders. Produces workflow JSON compatible with adb_workflow_run.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Package name to analyze | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It correctly indicates the tool analyzes and generates a workflow, but it ambiguously states 'launches each exported activity' which could imply execution rather than generation. It does not specify side effects, permissions, or requirements like package installation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences that effectively communicate the tool's purpose and output. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's core function and output format, referencing the compatible sibling adb_workflow_run. It could mention device connectivity requirements but is otherwise complete for a 2-parameter tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, providing basic descriptions for both parameters. The description does not add additional meaning beyond what is in the schema, such as value formats or constraints, justifying a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes a package's activities and intent filters to generate a test workflow that launches exported activities and verifies rendering. It specifies the output format as workflow JSON compatible with adb_workflow_run, distinguishing it from similar tools like adb_test_gen_from_ui.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for generating intent-based test workflows but does not explicitly state when to use this tool vs alternatives like adb_test_gen_from_ui or adb_workflow_run. No guidance on prerequisites or contraindications is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_test_gen_from_uiA
Analyze the current screen and generate a test workflow that taps each interactive element, takes screenshots, and verifies the app doesn't crash. Produces a workflow JSON compatible with adb_workflow_run.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Package name to monitor during test (used for logcat filtering and crash detection) | |
| device | No | Device serial | |
| screenshotAfterEach | No | Take a screenshot after each tap | |
| returnToStart | No | Press Back after each tap to return to the starting screen |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool taps elements, takes screenshots, and verifies no crash, but fails to disclose potential side effects like app state changes, requirements for screen state, or behavior on crash. Lack of transparency on these aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with two sentences that front-load the core purpose and output. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main functionality but lacks details on workflow structure, success/error conditions, and how to handle the output. For a tool generating complex output without an output schema, more completeness is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all 4 parameters. The description adds only the output format context ('Produces a workflow JSON compatible with adb_workflow_run'), which is helpful but does not enhance parameter semantics. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes the current screen, generates a test workflow with taps, screenshots, and crash verification. It distinguishes itself from siblings like adb_test_gen_from_intents and adb_tap_element by specifying the generation of a workflow JSON compatible with adb_workflow_run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives like adb_test_gen_from_intents or adb_tap_element. It only implies usage by mentioning adb_workflow_run compatibility, but no when-to-use or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_test_gen_saveA
Save a generated workflow JSON to the workflows directory for later execution with adb_workflow_run.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Workflow name (used as filename) | |
| workflow | Yes | Workflow JSON string to save |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description only mentions saving without disclosing potential side effects (e.g., overwriting, permissions) or return value. For a mutation tool, more behavioral context is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence of 12 words that conveys the core purpose without any unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the basic functionality but omits details about success feedback, required directory existence, or naming constraints. For a simple save tool, it's adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters have clear descriptions in the schema (name as filename, workflow as JSON string). The description adds context that the name becomes a filename, enhancing understanding beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (save), object (generated workflow JSON), destination (workflows directory), and intended use (later execution with adb_workflow_run). It distinguishes itself from sibling tools like adb_workflow_run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage in a workflow generation lifecycle but lacks explicit guidance on when to use it versus alternatives (e.g., adb_workflow_run) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_test_session_endA
End the active test session. Writes a summary manifest and returns the session directory path.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses the main actions and return value, but lacks details on error handling (e.g., no active session) or side effects beyond writing the manifest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded, with no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of output schema, the description adequately covers the action and return, but could elaborate on the manifest content for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so schema coverage is 100%. Baseline of 4 applies; the description does not need to add parameter info but could mention return value format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: ends the active test session, writes a summary manifest, and returns the session directory path. It distinctively differentiates from siblings like adb_test_session_start and adb_test_step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after starting a session, but does not explicitly state when to use or when not to use, nor mentions alternatives like adb_test_session_start for starting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_test_session_startA
Start a structured test session. Creates a named directory for organizing numbered screenshots and logcat captures.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Test session name (e.g., 'login_flow', 'threat_detection') | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions creating a directory but doesn't disclose potential side effects (e.g., if directory exists, whether it overwrites, or any restrictions on session names). More detail on behavioral traits beyond creation would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. It front-loads the main action and then explains the outcome efficiently. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema, no annotations), the description is adequate but not complete. It doesn't mention the return value or that the session must be ended with adb_test_session_end. Including a pointer to the counterpart would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for both parameters (100% coverage). The description adds the context of structuring test sessions, which relates to the name parameter. However, it doesn't add new meaning beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose: 'Start a structured test session' and explains what it does: 'Creates a named directory for organizing numbered screenshots and logcat captures.' This is specific with verb and resource, and it naturally distinguishes from sibling tools like adb_logcat_start or adb_screencap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it should be used before test steps that generate screenshots or logcat, but it doesn't explicitly state when to use or when not to use. No mention of alternatives or prerequisites, such as needing to end the session with adb_test_session_end.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_test_stepA
Capture a numbered test step: takes a screenshot and captures logcat since the last step. Saves both to the session directory.
| Name | Required | Description | Default |
|---|---|---|---|
| description | Yes | Description of what this step tests or verifies | |
| captureScreenshot | No | Take a screenshot for this step | |
| captureLogcat | No | Capture logcat since last step |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the core actions (screenshot, logcat capture, saving to session directory) but lacks details on behavioral traits such as how steps are numbered, impact on logcat buffer, prerequisites like an active session, error handling, or performance implications. With no annotations, more transparency is expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the main action. It could be slightly improved by adding usage context or exclusions, but it is appropriately concise for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does not explain numbering mechanisms, session prerequisites, return values (no output schema), or how steps relate to a test session. Given the tool's role in a likely multi-step workflow, this lack of context leaves gaps for an AI agent to correctly chain calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and parameter descriptions in the schema already explain each parameter's purpose. The tool description adds minimal additional meaning (e.g., 'numbered test step' context) beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures a numbered test step by taking a screenshot and capturing logcat since the last step, saving both to the session directory. It effectively distinguishes from siblings like adb_screencap or adb_logcat by combining both actions in a step context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage within a test session (e.g., after adb_test_session_start) but does not explicitly state when to use this tool versus alternatives like separate screenshot or logcat tools. No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_thermal_compareB
Compare current thermal/power state against a saved baseline. Reports temperature changes per zone, CPU frequency shifts, and battery drain rate differences.
| Name | Required | Description | Default |
|---|---|---|---|
| baselinePath | No | Path to baseline JSON. If omitted, uses the most recent baseline for the device. | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states it 'reports' differences, implying read-only operation, but does not explicitly confirm non-destructiveness, required permissions, or other side effects. The description lacks sufficient transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the purpose. Every word contributes meaning, with no redundancy or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the outputs (temperature changes, CPU shifts, battery drain) but lacks details on output format (e.g., JSON, text) and default behavior when baselinePath is omitted. Given no output schema, a bit more context would improve completeness, but it still provides a solid overview.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The tool description adds no additional meaning beyond what the schema already provides, meeting the baseline for this dimension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action (compare) and resource (current thermal/power state against a saved baseline), and details the reported outputs (temperature changes, CPU shifts, battery drain). It distinguishes itself from siblings like adb_thermal_snapshot and adb_snapshot_compare through its specific focus on thermal/power comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not state when to use this tool over alternatives, prerequisites (e.g., a saved baseline), or when not to use it. This leaves ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_thermal_snapshotA
Capture a thermal and power snapshot: all thermal zone temperatures, per-CPU frequencies and governors, cooling device states, and battery temperature/current draw. Optionally save as a baseline for later comparison.
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | Save snapshot as a baseline JSON file | |
| label | No | Label for saved baseline | snapshot |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses exactly what data is captured (thermal zones, CPU states, battery) and the optional save feature. With no annotations, the description effectively conveys a read-only, non-destructive snapshot. Could mention if any side effects exist, but overall strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences: first states the core action and data collected, second explains optional saving. No redundant information; front-loaded for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description is largely complete: it specifies inputs, outputs (implicitly the snapshot data), and optional save behavior. Could mention return format, but sufficient for most agents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents parameters. Description adds context for 'save' and 'label' (saving as baseline) but doesn't elaborate on 'device'. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool captures a thermal and power snapshot with specific data points (thermal zones, CPU frequencies, etc.). This distinguishes it from siblings like adb_perf_snapshot or adb_thermal_compare.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives, such as adb_thermal_compare or adb_battery. Usage is implied for thermal monitoring but lacks exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_topB
Get current CPU and memory usage snapshot
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of iterations (1-100, 1 = snapshot) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must convey behavioral traits. It indicates a non-destructive read ('snapshot') but omits details like required permissions (e.g., root), whether the tool modifies system state, or what the output format looks like. This is insufficient for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. However, it could be slightly more structured (e.g., listing parameters) without losing conciseness. It earns a 4 for being efficient but not maximally informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema), the description is adequate but leaves gaps. It doesn't explain the output format or edge cases (e.g., what happens if device is not specified). Completeness is moderate; a score of 3 reflects that while it covers the basic purpose, it lacks details to fully guide an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions for 'count' and 'device'. The description adds no additional meaning beyond the schema. According to guidelines, baseline is 3 when schema coverage is high, so a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get current CPU and memory usage snapshot' clearly states the tool's function with a specific verb ('Get') and resource ('CPU and memory usage snapshot'). It distinguishes itself from siblings like 'adb_perf_snapshot' by focusing narrowly on CPU and memory, not overall performance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., 'adb_device_info' or 'adb_battery'). It lacks context for prerequisites, optimal scenarios, or exclusions, leaving the agent uninformed about appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_tunnel_closeA
Close a managed tunnel by ID, or all managed tunnels at once. The corresponding adb forward/reverse entry is removed and the tunnel is dropped from the cleanup registry. Use adb_tunnel_list to see active tunnel IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Tunnel ID (tun_XXXXXX) returned by adb_tunnel_open, or the literal string 'all' to close every managed tunnel. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It discloses side effects: removal of adb forward/reverse entry and dropping from cleanup registry. This adds behavioral context beyond a simple 'Close'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no extraneous words. The main action is first, followed by behavioral details and a cross-reference to a sibling tool. Ideal structure for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a simple close tool with one parameter. The description explains what happens after closing (entry removal, registry drop) and how to get tunnel IDs. No output schema needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'id' is fully described with format (tun_XXXXXX) and special value 'all'. Schema coverage is 100%, but the description adds meaningful explanation beyond the schema's type and optional description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Close'), resource ('managed tunnel'), and two modes ('by ID' or 'all at once'). It distinguishes from sibling tools like adb_tunnel_open and adb_tunnel_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides guidance on using adb_tunnel_list to find tunnel IDs before closing. Could be more explicit about when not to use (e.g., if the tunnel is not managed), but the reference to 'managed tunnel' implies this limitation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_tunnel_listA
List all active managed tunnels (opened via adb_tunnel_open). Shows tunnel ID, device, direction, and both endpoints. Note: this only surfaces tunnels created via adb_tunnel_open — tunnels created via the low-level adb_forward / adb_reverse won't appear here. For those, use adb_forward_list.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Filter to a specific device serial (default: all devices) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Clearly states it is a read-only listing operation with no side effects. Mentions what data is shown (tunnel ID, device, direction, endpoints). No hidden behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences plus a note. No redundant information. Front-loaded with purpose and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description completely covers what the tool does, what it returns, and how it relates to siblings. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter 'device' with schema description. Description adds context that it is optional and defaults to all devices. Schema coverage is 100%, so description provides marginal added value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb 'list' and resource 'active managed tunnels', distinguishes from low-level tunnel tools and references sibling adb_forward_list. Clearly states what it shows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when not to use (low-level tunnels) and provides alternative tool (adb_forward_list). Guides agent on scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_tunnel_openA
Open a managed tunnel between host and device. Higher-level convenience wrapper over adb_forward / adb_reverse: auto-picks a free host port when one isn't specified (forward only), returns an opaque tunnel ID for later close, and registers cleanup so the tunnel is removed on server exit. Direction 'forward' = host port forwards TO device service; 'reverse' = device port forwards TO host service.
| Name | Required | Description | Default |
|---|---|---|---|
| direction | Yes | 'forward' (host → device) or 'reverse' (device → host) | |
| deviceSpec | Yes | Device-side spec, e.g., 'tcp:3000' or 'localabstract:app_socket' | |
| hostSpec | No | Host-side spec, e.g., 'tcp:8080'. For 'forward' direction: omit to auto-pick a free host port. For 'reverse' direction: required (can't auto-pick device-side ports without an extra probe call). | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses automatic port selection (forward only), opaque tunnel ID return, and cleanup on server exit. It does not detail failure modes, permissions, or concurrency limits, but covers core behaviors adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loads the core purpose, and each sentence adds distinct information (convenience wrapper, port selection, direction semantics). No redundant or extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters and no output schema, the description explains the return value (tunnel ID) and lifecycle cleanup. Combined with schema details and sibling tools for close/list, it provides sufficient context for use. It could mention a warning about tunnel limit or failure cases, but overall is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by explaining the behavioral difference between forward and reverse, the optional nature of hostSpec for forward, and the implication for reverse. This context goes beyond the schema's type constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it opens a managed tunnel, distinguishes from lower-level siblings (adb_forward/adb_reverse) by labeling itself a convenience wrapper, and explains the direction semantics. It explicitly mentions auto-pick of host port for forward, return of tunnel ID, and cleanup registration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description identifies this as a higher-level alternative to adb_forward/adb_reverse, implying use when auto-port selection or managed lifecycle is desired. It notes that hostSpec is optional for forward but required for reverse. However, it does not explicitly exclude specific scenarios or list preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_ui_dumpA
Dump the current UI hierarchy. Parses the view tree into structured element data with coordinates, text, resource IDs, and interaction flags. Use format='tsv' for token-efficient compact output, format='xml' for raw uiautomator XML.
| Name | Required | Description | Default |
|---|---|---|---|
| clickableOnly | No | Only show clickable/interactive elements | |
| format | No | Output format: 'text' (default, human-readable), 'tsv' (tab-separated, token-efficient), 'xml' (raw uiautomator XML) | text |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes output structure (coordinates, text, etc.) without annotations. No contradictions. Could mention if hierarchy refresh requires device to be awake, but overall good disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences effectively cover purpose and format hints. No redundant information; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides sufficient detail on output and formats without an output schema. Could specify prerequisites (e.g., device awake) but overall complete for a UI dump tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds value beyond 100% schema coverage by explaining format options and their benefits (e.g., 'token-efficient') and clickableOnly purpose. Parameters are well contextualized.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Dump the current UI hierarchy' and specifies parsing into structured element data with coordinates, text, resource IDs, and interaction flags. This distinguishes it from sibling tools like adb_ui_find or adb_tap_element.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on format selection: 'Use format='tsv' for token-efficient compact output, format='xml' for raw uiautomator XML.' However, does not explicitly contrast with alternatives like adb_ui_find for searching rather than dumping.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_ui_findA
Search the UI hierarchy for elements matching text, resource-id, or content-description. Returns matching elements with coordinates for precise adb_input targeting.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Match elements containing this text (case-insensitive) | |
| resourceId | No | Match elements with this resource-id (partial match) | |
| contentDesc | No | Match elements with this content-description (partial, case-insensitive) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. It states search returns coordinates (non-destructive), but does not mention performance, error handling (e.g., no match), or whether it waits for UI stability. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, front-loaded with core purpose. Each sentence serves a purpose: what it does and what it returns.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with simple param set and no output schema, the description covers return value (coordinates) and purpose. It doesn't specify behavior on multiple matches or missing elements, but is largely complete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions are 100% covered and already include 'partial match' and 'case-insensitive' details. The description reinforces these but adds no new semantic value beyond schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool searches UI hierarchy for elements by text, resource-id, or content-description, and returns coordinates. This distinguishes it from siblings like adb_ui_dump (full dump) and adb_tap_element (direct tap).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions 'for precise adb_input targeting' implying a use case, but does not explicitly state when to use this tool versus alternatives like adb_tap_element or adb_input. No exclusions or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_uninstallB
Uninstall a package from the device
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Package name (e.g., 'com.example.app') | |
| device | No | Device serial | |
| keepData | No | Keep app data and cache (-k flag) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavior. It only states 'uninstall' without detailing side effects like data removal, system app limitations, or success/failure signals. The agent lacks critical behavioral information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, which is efficient. However, it could include more useful information without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters and no output schema, the description is too minimal. It does not explain what happens with 'keepData' or provide post-installation context, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond the schema; it does not elaborate on parameters like 'keepData' or 'device'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Uninstall' and the resource 'package from the device', making the tool's purpose immediately obvious. It effectively distinguishes this tool from siblings like adb_install or adb_clear_data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidelines are provided about when to use this tool versus alternatives, nor any prerequisites or restrictions (e.g., system apps). The agent receives no context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_wait_elementA
Wait for a UI element to appear or disappear. Polls the UI hierarchy at regular intervals until the condition is met or timeout expires. Useful for waiting after navigation, animations, or async content loading.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Match elements containing this text (case-insensitive) | |
| resourceId | No | Match elements with this resource-id (partial match) | |
| contentDesc | No | Match elements with this content-description (partial, case-insensitive) | |
| condition | No | Wait for element to 'appear' (default) or 'disappear' | appear |
| timeoutMs | No | Maximum wait time in ms (1s-60s, default 10s) | |
| pollMs | No | Polling interval in ms (200-5000, default 500) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses polling behavior and timeout, adding value beyond the schema. Without annotations, it carries the burden but omits details like what happens on timeout, performance impact, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: purpose, mechanism, and usage context. Front-loaded and concise with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of siblings like adb_wait_stable, the description does not differentiate itself. It covers basic behavior but lacks specificity on return values or error states, leaving some gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description adds no additional parameter semantics. Baseline score of 3 is appropriate as the tool's description does not elaborate beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool waits for a UI element to appear or disappear using polling. It uses specific verb 'wait' and resource 'UI element', but does not explicitly differentiate from siblings like adb_wait_stable, which also involves waiting for UI state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'useful for waiting after navigation, animations, or async content loading.' However, it lacks explicit guidance on when not to use or mention of alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_wait_stableA
Wait for the UI to stabilize. Polls the UI hierarchy and waits until consecutive dumps produce the same element count and structure. Useful after screen transitions, animations, or content loading before interacting with elements.
| Name | Required | Description | Default |
|---|---|---|---|
| stableCount | No | Number of consecutive identical dumps required (2-10, default 2) | |
| timeoutMs | No | Maximum wait time in ms (1s-60s, default 10s) | |
| pollMs | No | Polling interval in ms (200-5000, default 500) | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains polling behavior (waits until consecutive dumps are identical in element count and structure), which is transparent. However, it lacks details on timeout behavior or error handling, which would enhance transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three sentences) with the main purpose front-loaded. Every sentence adds value: purpose, mechanism, and usage advice. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, mechanism, and usage context adequately for a wait tool. It lacks explicit handling of timeout/error states, but the timeoutMs parameter implies the behavior. Given no output schema and four parameters, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds only marginal value by linking stableCount to the concept of 'consecutive identical dumps', which is already in the schema. Other parameters like timeoutMs and pollMs are not elaborated beyond their schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb ('Wait'), resource ('UI stability'), and method (polls UI hierarchy, compares consecutive dumps). It distinguishes itself from siblings like adb_ui_dump or adb_wait_element by focusing on stabilization rather than specific element detection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use ('after screen transitions, animations, or content loading before interacting with elements'). However, it does not explicitly state when not to use or mention alternatives among siblings, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_wifiB
Enable or disable WiFi
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | true = enable WiFi, false = disable | |
| device | No | Device serial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits but only states the action. It fails to mention prerequisites (e.g., device must be connected), side effects (e.g., toggling may require permissions), or execution context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (4 words) and front-loaded. It could include more context without becoming verbose, but it meets minimal efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks complete context for a toggle operation. No mention of device requirement, network state impact, or that it's a straightforward on/off command. With no output schema, more details would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both parameters described. The description adds no extra meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Enable or disable WiFi' clearly states the verb (enable/disable) and resource (WiFi), distinguishing it from siblings like adb_wifi_firmware (firmware related) and adb_tcpip (TCP/IP mode).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like adb_wifi_firmware or adb_network. The usage context is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_wifi_firmwareB
WiFi chipset and firmware identification. Reports WiFi driver version, firmware version, chipset/hardware info, supported bands and standards, interface details, and dumpsys excerpts. BH7 fix: dumpsys truncation now configurable via maxLines. connection state. MAC address is opt-in only (permanent hardware identifier).
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Device serial | |
| includeMac | No | Include WiFi MAC address (permanent hardware identifier — opt-in only) | |
| maxLines | No | Lines of dumpsys output to inspect (50-2000, default 200). Raise for verbose vendor builds where firmware info appears late in dumpsys output. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. It mentions the BH7 fix for configurable dumpsys truncation and notes MAC address opt-in, but does not disclose side effects, required permissions, or whether the tool is purely read-only. It provides moderate transparency into outputs but lacks full behavioral coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short but has a fragmented sentence ('connection state.') and could be more polished. The main purpose is front-loaded, but minor structure issues lower the effectiveness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description lists key outputs (driver version, firmware version, etc.) which provides reasonable completeness. However, it lacks explanation of limitations, potential missing data, or prerequisites (e.g., whether WiFi must be enabled).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining that includeMac controls a permanent hardware identifier (opt-in) and that maxLines configurability is a BH7 fix. This historical context deepens understanding beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool identifies WiFi chipset and firmware, listing specific outputs like driver version, firmware version, and chipset info. The purpose is well-defined and distinguishable from other firmware tools by name, though it could explicitly mention that it is specific to WiFi.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives like adb_bluetooth_firmware or adb_gps_firmware. The only usage hint is the opt-in note for MAC address, but no contextual or comparative advice is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_workflow_listA
List saved workflow files in the workflows directory.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose side effects, permissions, or output format beyond listing files.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One clear, front-loaded sentence with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple list tool, but lacks details like file types or sort order; however, no output schema exists to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist; the description adequately explains the scope (saved workflow files in the workflows directory) without needing further param detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists saved workflow files in the workflows directory, distinguishing it from siblings like run and validate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance, but the context implies it's for viewing existing workflows before running or editing them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_workflow_runA
Execute a workflow — a JSON-defined sequence of device operations with variable substitution, conditional steps, and loop support. Supported actions: shell, root_shell, install, screenshot, logcat, getprop, sleep. Pass the workflow as a JSON string or provide a saved workflow name.
| Name | Required | Description | Default |
|---|---|---|---|
| workflow | Yes | Workflow JSON string, or the name of a saved workflow file | |
| variables | No | Override workflow variables (merged with defaults) | |
| device | No | Device serial | |
| dryRun | No | Validate and show execution plan without running |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses supported actions and that the tool executes operations on the device, but does not mention error handling, side effects, or return behavior. It is adequate but not fully detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two well-structured sentences. It front-loads the main purpose and lists actions, then explains how to provide the workflow. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has four parameters, one required, and no output schema. The description covers the core function but does not explain return values, failure modes, or prerequisites (e.g., device connection). Given the complexity of workflow execution, more context would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description adds minimal extra context beyond the schema (e.g., repeating input formats). Since the schema already documents all parameters, the baseline is 3; the description does not significantly enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'execute' and the resource 'workflow', and explains that it is a JSON-defined sequence with variable substitution, conditional steps, and loop support. It lists supported actions, distinguishing it from sibling tools like adb_workflow_list and adb_workflow_validate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to provide the workflow ('Pass the workflow as a JSON string or provide a saved workflow name'), but does not explicitly mention when not to use this tool or name alternatives. Given the sibling tools, it could be clearer, but it's still well implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_workflow_validateA
Validate a workflow JSON definition without executing it. Reports structural errors and shows the execution plan.
| Name | Required | Description | Default |
|---|---|---|---|
| workflow | Yes | Workflow JSON string to validate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must bear full burden. It states the tool does not execute, reports errors, and shows plan, which is adequate but does not detail side effects or output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, highly concise, with key information front-loaded. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter tool without output schema, the description covers purpose and output type (errors, plan). Could specify output structure but sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'workflow' is described in the schema as a JSON string. The tool description adds no additional meaning beyond what the schema provides; schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates a workflow JSON without executing it, reporting errors and showing the execution plan. It distinguishes from sibling tools like adb_workflow_run, though not explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use before execution ('without executing it'), but lacks explicit guidance on when to use this tool versus siblings like adb_workflow_run or adb_workflow_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
193 tool updates
v1.1.3- Changed
adb_a11y_audit1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_a11y_touch_targets1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_a11y_tree1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_airplane_cycle1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_airplane_mode1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_apex_list1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_at_batch1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_at_cross_validate1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_at_detect1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_at_probe1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_at_send1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_baseband_info3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / result_handleAdded value: +{ + "description": "Optional. If provided, store this tool's result under `result://<tool>/<name>` for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. Existing handles with the same tool+name are overwritten. Use adb_result_list to see active handles, adb_result_get or the MCP Resource URI to retrieve.", + "maxLength": 32, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" +} - added
Input schema / properties / result_handle_ttlAdded value: +{ + "description": "Optional. TTL in seconds for the result handle (60 to 604800). Default 43200 (12 hours). Ignored if result_handle is not provided.", + "maximum": 604800, + "minimum": 60, + "type": "integer" +}
- Changed
adb_batch_actions3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / actions / items / additionalPropertiesRemoved value: -false - changed
Input schema / properties / actions / items / properties / type / descriptionPrevious value: -"Action type"New value: +"Action type — one of: tap, swipe, fling, long_press, double_tap, keyevent, text, drag, pinch, back, home, sleep. The args field documents the expected argument format per type."
- Changed
adb_battery1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_battery_drain1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_bluetooth_firmware2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / maxLinesAdded value: +{ + "default": 300, + "description": "Lines of dumpsys output to inspect (50-2000, default 300). Raise for verbose vendor builds.", + "maximum": 2000, + "minimum": 50, + "type": "integer" +}
- Changed
adb_bugreport1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_build_and_install2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / timeoutAdded value: +{ + "default": 300000, + "description": "Build+install timeout in milliseconds (30s-30min, default 5min). V5 fix.", + "maximum": 1800000, + "minimum": 30000, + "type": "integer" +}
- Changed
adb_carrier_config1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_cat1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_cell_identity1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_ci_device_ready1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_ci_run_tests1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_ci_wait_boot1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_clear_data3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / confirmAdded value: +{ + "description": "Must equal packageName to confirm the destructive operation. AP5 fix: prevents accidental data loss from misclicks/mistyped invocations.", + "type": "string" +} - changed
Input schema / properties / packageName / descriptionPrevious value: -"Package name"New value: +"Package name (e.g., 'com.example.app')"
- Changed
adb_clipboard1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_connect2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / host / patternAdded value: +"^(?:\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|\\[[0-9a-fA-F:]+\\]|[a-zA-Z0-9][a-zA-Z0-9.-]*):\\d{1,5}$"
- Changed
adb_crash_logs1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_current_activity1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_device_info1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_device_state1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_disconnect2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / host / patternAdded value: +"^(?:\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|\\[[0-9a-fA-F:]+\\]|[a-zA-Z0-9][a-zA-Z0-9.-]*):\\d{1,5}$"
- Changed
adb_dumpsys3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / result_handleAdded value: +{ + "description": "Optional. If provided, store this tool's result under `result://<tool>/<name>` for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. Existing handles with the same tool+name are overwritten. Use adb_result_list to see active handles, adb_result_get or the MCP Resource URI to retrieve.", + "maxLength": 32, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" +} - added
Input schema / properties / result_handle_ttlAdded value: +{ + "description": "Optional. TTL in seconds for the result handle (60 to 604800). Default 43200 (12 hours). Ignored if result_handle is not provided.", + "maximum": 604800, + "minimum": 60, + "type": "integer" +}
- Changed
adb_emulator_start1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_emulator_stop1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_extract_apks1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_farm_matrix1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_farm_results1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_farm_run3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / execTimeoutMsAdded value: +{ + "default": 600000, + "description": "Local execFile timeout for the gcloud invocation in ms (1min-60min, default 10min). Y4 fix: bigger device matrices or larger APKs can plausibly exceed the previous hardcoded 10min.", + "maximum": 3600000, + "minimum": 60000, + "type": "integer" +} - changed
Input schema / properties / timeout / descriptionPrevious value: -"Test timeout (e.g., '300s', '10m')"New value: +"Test timeout passed to gcloud --timeout (e.g., '300s', '10m'). This is the LAB-side timeout."
- Changed
adb_file_checksum1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_file_chmod1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_file_chown1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_file_copy1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_file_fsinfo1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_file_move1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_file_replace1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_file_stat1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_file_touch1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_file_write1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_find3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / result_handleAdded value: +{ + "description": "Optional. If provided, store this tool's result under `result://<tool>/<name>` for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. Existing handles with the same tool+name are overwritten. Use adb_result_list to see active handles, adb_result_get or the MCP Resource URI to retrieve.", + "maxLength": 32, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" +} - added
Input schema / properties / result_handle_ttlAdded value: +{ + "description": "Optional. TTL in seconds for the result handle (60 to 604800). Default 43200 (12 hours). Ignored if result_handle is not provided.", + "maximum": 604800, + "minimum": 60, + "type": "integer" +}
- Changed
adb_firmware_diff3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / result_handleAdded value: +{ + "description": "Optional. If provided, store this tool's result under `result://<tool>/<name>` for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. Existing handles with the same tool+name are overwritten. Use adb_result_list to see active handles, adb_result_get or the MCP Resource URI to retrieve.", + "maxLength": 32, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" +} - added
Input schema / properties / result_handle_ttlAdded value: +{ + "description": "Optional. TTL in seconds for the result handle (60 to 604800). Default 43200 (12 hours). Ignored if result_handle is not provided.", + "maximum": 604800, + "minimum": 60, + "type": "integer" +}
- Changed
adb_firmware_history1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_firmware_probe1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_force_stop1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_forward5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / local / descriptionPrevious value: -"Local (host) spec, e.g., 'tcp:8080'"New value: +"Local (host) spec, e.g., 'tcp:8080'. AF2 fix: format-validated." - added
Input schema / properties / local / patternAdded value: +"^(tcp:\\d{1,5}|localabstract:[A-Za-z0-9_./-]+|localreserved:[A-Za-z0-9_./-]+|localfilesystem:[A-Za-z0-9_./-]+|dev:[A-Za-z0-9_./-]+|jdwp:\\d+)$" - changed
Input schema / properties / remote / descriptionPrevious value: -"Remote (device) spec, e.g., 'tcp:8080' or 'localabstract:app_socket'"New value: +"Remote (device) spec, e.g., 'tcp:8080' or 'localabstract:app_socket'. AF2 fix: format-validated." - added
Input schema / properties / remote / patternAdded value: +"^(tcp:\\d{1,5}|localabstract:[A-Za-z0-9_./-]+|localreserved:[A-Za-z0-9_./-]+|localfilesystem:[A-Za-z0-9_./-]+|dev:[A-Za-z0-9_./-]+|jdwp:\\d+)$"
- Changed
adb_forward_list1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_forward_remove3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / local / descriptionPrevious value: -"Local spec to remove (e.g., 'tcp:8080'). Omit to remove all forwards."New value: +"Local spec to remove (e.g., 'tcp:8080'). Omit to remove all forwards. AF2 fix: format-validated." - added
Input schema / properties / local / patternAdded value: +"^(tcp:\\d{1,5}|localabstract:[A-Za-z0-9_./-]+|localreserved:[A-Za-z0-9_./-]+|localfilesystem:[A-Za-z0-9_./-]+|dev:[A-Za-z0-9_./-]+|jdwp:\\d+)$"
- Changed
adb_getprop1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_gps_firmware1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_gradle5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / args / descriptionPrevious value: -"Additional Gradle arguments"New value: +"Additional Gradle arguments as an array of strings (e.g., ['-Pversion=1.0', '--info']). Use an array — not a space-separated string — so arguments containing quoted values are preserved as single tokens." - added
Input schema / properties / args / itemsAdded value: +{ + "type": "string" +} - changed
Input schema / properties / args / typePrevious value: -"string"New value: +"array" - added
Input schema / properties / timeoutAdded value: +{ + "default": 300000, + "description": "Build timeout in milliseconds (30s-30min, default 5min). V5 fix: large multi-module Android projects (60+ modules) routinely exceed the default; raise this for clean builds of bigger projects.", + "maximum": 1800000, + "minimum": 30000, + "type": "integer" +}
- Changed
adb_grant_permission2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / packageName / descriptionPrevious value: -"Package name"New value: +"Package name (e.g., 'com.example.app')"
- Changed
adb_grep3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / result_handleAdded value: +{ + "description": "Optional. If provided, store this tool's result under `result://<tool>/<name>` for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. Existing handles with the same tool+name are overwritten. Use adb_result_list to see active handles, adb_result_get or the MCP Resource URI to retrieve.", + "maxLength": 32, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" +} - added
Input schema / properties / result_handle_ttlAdded value: +{ + "description": "Optional. TTL in seconds for the result handle (60 to 604800). Default 43200 (12 hours). Ignored if result_handle is not provided.", + "maximum": 604800, + "minimum": 60, + "type": "integer" +}
- Changed
adb_health_check1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_heap_dump1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_iio_read1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_input2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / type / descriptionPrevious value: -"Input type"New value: +"Input type — one of: tap (single touch), swipe (drag between two points), text (literal string entry), keyevent (Android key code like KEYCODE_HOME). The args field documents the expected argument format per type."
- Changed
adb_input_double_tap1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_input_drag1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_input_fling1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_input_long_press1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_input_pinch1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_input_text1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_install1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_install_bundle1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_list_packages1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_list_permissions1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_list_splits1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_location1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_logcat3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / result_handleAdded value: +{ + "description": "Optional. If provided, store this tool's result under `result://<tool>/<name>` for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. Existing handles with the same tool+name are overwritten. Use adb_result_list to see active handles, adb_result_get or the MCP Resource URI to retrieve.", + "maxLength": 32, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" +} - added
Input schema / properties / result_handle_ttlAdded value: +{ + "description": "Optional. TTL in seconds for the result handle (60 to 604800). Default 43200 (12 hours). Ignored if result_handle is not provided.", + "maximum": 604800, + "minimum": 60, + "type": "integer" +}
- Changed
adb_logcat_clear1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_logcat_crash1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_logcat_poll3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / result_handleAdded value: +{ + "description": "Optional. If provided, store this tool's result under `result://<tool>/<name>` for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. Existing handles with the same tool+name are overwritten. Use adb_result_list to see active handles, adb_result_get or the MCP Resource URI to retrieve.", + "maxLength": 32, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" +} - added
Input schema / properties / result_handle_ttlAdded value: +{ + "description": "Optional. TTL in seconds for the result handle (60 to 604800). Default 43200 (12 hours). Ignored if result_handle is not provided.", + "maximum": 604800, + "minimum": 60, + "type": "integer" +}
- Changed
adb_logcat_start3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / tag / descriptionPrevious value: -"Filter by tag (e.g., 'MyApp')"New value: +"Filter by tag (e.g., 'MyApp'). Must match /^[a-zA-Z0-9_]+$/ — Android tags are identifier-shaped in practice." - added
Input schema / properties / tag / patternAdded value: +"^[a-zA-Z0-9_]+$"
- Changed
adb_logcat_stop1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_ls1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_market_export2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / version / descriptionPrevious value: -"Version string"New value: +"Version string (semver-style, e.g., '1.2.3'). Defaults to '1.0.0' if omitted. Increment when publishing an updated workflow so registry consumers can detect changes."
- Changed
adb_market_install1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_market_search1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_mirror_start3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / bitrate / descriptionPrevious value: -"Video bitrate (e.g., '4M', '8M', '2M')"New value: +"Video bitrate (e.g., '4M', '8M', '2M'). AK2 fix: format-validated at schema layer." - added
Input schema / properties / bitrate / patternAdded value: +"^\\d+(\\.\\d+)?[KMG]?$"
- Changed
adb_mirror_stop1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_mkdir1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_mobile_data1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_modem_logs1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_multi_compare1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_multi_install1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_multi_shell1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_multi_test2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / commands / items / additionalPropertiesRemoved value: -false
- Changed
adb_neighboring_cells1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_network1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_network_auto_connect1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_network_connections1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_network_device_ip1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_network_scan1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_nfc_firmware2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / maxLinesAdded value: +{ + "default": 200, + "description": "Lines of dumpsys output to inspect (50-2000, default 200). Raise for verbose vendor builds.", + "maximum": 2000, + "minimum": 50, + "type": "integer" +}
- Changed
adb_notifications1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_open_url1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_orientation1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_ota_check1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_ota_fingerprint1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_ota_history1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_package_info2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / packageName / descriptionPrevious value: -"Package name"New value: +"Package name (e.g., 'com.example.app')"
- Changed
adb_pair2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / host / patternAdded value: +"^(?:\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|\\[[0-9a-fA-F:]+\\]|[a-zA-Z0-9][a-zA-Z0-9.-]*):\\d{1,5}$"
- Changed
adb_perf_snapshot1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_permission_audit3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / packageName / descriptionPrevious value: -"Package name to audit (e.g., 'com.example.app')"New value: +"Package name to audit (e.g., 'com.example.app'). AZ7 fix: enforces Java-identifier shape so injection attempts are rejected at the schema layer before reaching validateShellArg." - added
Input schema / properties / packageName / patternAdded value: +"^[a-zA-Z][a-zA-Z0-9_]*(\\.[a-zA-Z][a-zA-Z0-9_]*)+$"
- Changed
adb_profile_detect1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_profile_save1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_pull1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_push1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_qemu_connect1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_qemu_disconnect1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_qemu_guest_shell1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_qemu_images1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_qemu_setup1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_qemu_start1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_qemu_stop1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_reboot1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_registry_install1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_registry_search1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_regression_baseline1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_regression_check1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_regression_history1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_resolve_intents1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_restart_app1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Added
adb_result_drop - Added
adb_result_get - Added
adb_result_list - Changed
adb_reverse5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / local / descriptionPrevious value: -"Local (host) spec, e.g., 'tcp:3000'"New value: +"Local (host) spec, e.g., 'tcp:3000'. AF2 fix: format-validated." - added
Input schema / properties / local / patternAdded value: +"^(tcp:\\d{1,5}|localabstract:[A-Za-z0-9_./-]+|localreserved:[A-Za-z0-9_./-]+|localfilesystem:[A-Za-z0-9_./-]+|dev:[A-Za-z0-9_./-]+|jdwp:\\d+)$" - changed
Input schema / properties / remote / descriptionPrevious value: -"Remote (device) spec, e.g., 'tcp:3000'"New value: +"Remote (device) spec, e.g., 'tcp:3000'. AF2 fix: format-validated." - added
Input schema / properties / remote / patternAdded value: +"^(tcp:\\d{1,5}|localabstract:[A-Za-z0-9_./-]+|localreserved:[A-Za-z0-9_./-]+|localfilesystem:[A-Za-z0-9_./-]+|dev:[A-Za-z0-9_./-]+|jdwp:\\d+)$"
- Changed
adb_reverse_remove3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / remote / descriptionPrevious value: -"Remote spec to remove (e.g., 'tcp:3000'). Omit to remove all reverse forwards."New value: +"Remote spec to remove (e.g., 'tcp:3000'). Omit to remove all reverse forwards. AF2 fix: format-validated." - added
Input schema / properties / remote / patternAdded value: +"^(tcp:\\d{1,5}|localabstract:[A-Za-z0-9_./-]+|localreserved:[A-Za-z0-9_./-]+|localfilesystem:[A-Za-z0-9_./-]+|dev:[A-Za-z0-9_./-]+|jdwp:\\d+)$"
- Changed
adb_revoke_permission1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_ril_poll1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_ril_start1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_ril_stop1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_rm1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_root_shell1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_screen2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / action / descriptionPrevious value: -"Screen action"New value: +"Screen action — one of: wake (power on + dismiss keyguard if no PIN), sleep (power off), toggle (flip current state), lock (force keyguard), unlock (dismiss keyguard, with PIN if supplied)"
- Changed
adb_screen_size1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_screen_state1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_screencap1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_screencap_annotated1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_screenrecord_start1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_screenrecord_stop1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_screenshot_baseline3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / result_handleAdded value: +{ + "description": "Optional. If provided, store this tool's result under `result://<tool>/<name>` for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. Existing handles with the same tool+name are overwritten. Use adb_result_list to see active handles, adb_result_get or the MCP Resource URI to retrieve.", + "maxLength": 32, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" +} - added
Input schema / properties / result_handle_ttlAdded value: +{ + "description": "Optional. TTL in seconds for the result handle (60 to 604800). Default 43200 (12 hours). Ignored if result_handle is not provided.", + "maximum": 604800, + "minimum": 60, + "type": "integer" +}
- Changed
adb_screenshot_compressed1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_screenshot_diff3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / result_handleAdded value: +{ + "description": "Optional. If provided, store this tool's result under `result://<tool>/<name>` for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. Existing handles with the same tool+name are overwritten. Use adb_result_list to see active handles, adb_result_get or the MCP Resource URI to retrieve.", + "maxLength": 32, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" +} - added
Input schema / properties / result_handle_ttlAdded value: +{ + "description": "Optional. TTL in seconds for the result handle (60 to 604800). Default 43200 (12 hours). Ignored if result_handle is not provided.", + "maximum": 604800, + "minimum": 60, + "type": "integer" +}
- Changed
adb_screenshot_history2 fields changed- added
Input schema / properties / result_handleAdded value: +{ + "description": "Optional. If provided, store this tool's result under `result://<tool>/<name>` for retrieval after compaction. Name must be 1-32 chars, [a-zA-Z0-9_-]. Existing handles with the same tool+name are overwritten. Use adb_result_list to see active handles, adb_result_get or the MCP Resource URI to retrieve.", + "maxLength": 32, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" +} - added
Input schema / properties / result_handle_ttlAdded value: +{ + "description": "Optional. TTL in seconds for the result handle (60 to 604800). Default 43200 (12 hours). Ignored if result_handle is not provided.", + "maximum": 604800, + "minimum": 60, + "type": "integer" +}
- Changed
adb_scroll_until1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_selinux_denials1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_selinux_status1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_sensor_read1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_settings_get2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / key / minLengthAdded value: +1
- Changed
adb_settings_put4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / key / descriptionPrevious value: -"Setting key"New value: +"Setting key (e.g., 'screen_brightness' for system namespace, 'wifi_on' or 'airplane_mode_on' for global, 'location_providers_allowed' for secure). Use `adb_shell` with `settings list <namespace>` to enumerate available keys for a device." - added
Input schema / properties / key / minLengthAdded value: +1 - changed
Input schema / properties / value / descriptionPrevious value: -"Value to set"New value: +"Value to write. Type depends on the key — typically a string, integer, or 0/1 for booleans. The setting framework accepts everything as a string and parses on read."
- Changed
adb_shell1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_signal_detail1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_snapshot_capture1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_snapshot_compare1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_snapshot_restore_settings1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_start_activity1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_start_app1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_tap_element1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_tcpdump_start1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_tcpdump_stop1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_tcpip1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_telephony1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_test_gen_from_intents1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_test_gen_from_ui1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_test_gen_save1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_test_session_start1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_test_step1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_thermal_compare1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_thermal_snapshot1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_top1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Added
adb_tunnel_close - Added
adb_tunnel_list - Added
adb_tunnel_open - Changed
adb_ui_dump1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_ui_find1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_uninstall1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_wait_element1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_wait_stable1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_wifi1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
adb_wifi_firmware2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / maxLinesAdded value: +{ + "default": 200, + "description": "Lines of dumpsys output to inspect (50-2000, default 200). Raise for verbose vendor builds where firmware info appears late in dumpsys output.", + "maximum": 2000, + "minimum": 50, + "type": "integer" +}
- Changed
adb_workflow_run2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / variables / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
adb_workflow_validate1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
198 tool updates
v1.1.1- First observed
adb_a11y_audit - First observed
adb_a11y_touch_targets - First observed
adb_a11y_tree - First observed
adb_airplane_cycle - First observed
adb_airplane_mode - First observed
adb_apex_list - First observed
adb_at_batch - First observed
adb_at_cross_validate - First observed
adb_at_detect - First observed
adb_at_probe - First observed
adb_at_send - First observed
adb_avd_list - First observed
adb_baseband_info - First observed
adb_batch_actions - First observed
adb_battery - First observed
adb_battery_drain - First observed
adb_bluetooth_firmware - First observed
adb_bugreport - First observed
adb_build_and_install - First observed
adb_carrier_config - First observed
adb_cat - First observed
adb_cell_identity - First observed
adb_ci_device_ready - First observed
adb_ci_run_tests - First observed
adb_ci_wait_boot - First observed
adb_clear_data - First observed
adb_clipboard - First observed
adb_connect - First observed
adb_crash_logs - First observed
adb_current_activity - First observed
adb_device_info - First observed
adb_device_state - First observed
adb_devices - First observed
adb_disconnect - First observed
adb_dumpsys - First observed
adb_emulator_start - First observed
adb_emulator_stop - First observed
adb_extract_apks - First observed
adb_farm_matrix - First observed
adb_farm_results - First observed
adb_farm_run - First observed
adb_file_checksum - First observed
adb_file_chmod - First observed
adb_file_chown - First observed
adb_file_copy - First observed
adb_file_fsinfo - First observed
adb_file_move - First observed
adb_file_replace - First observed
adb_file_stat - First observed
adb_file_touch - First observed
adb_file_write - First observed
adb_find - First observed
adb_firmware_diff - First observed
adb_firmware_history - First observed
adb_firmware_probe - First observed
adb_force_stop - First observed
adb_forward - First observed
adb_forward_list - First observed
adb_forward_remove - First observed
adb_getprop - First observed
adb_gps_firmware - First observed
adb_gradle - First observed
adb_grant_permission - First observed
adb_grep - First observed
adb_health_check - First observed
adb_heap_dump - First observed
adb_iio_read - First observed
adb_input - First observed
adb_input_double_tap - First observed
adb_input_drag - First observed
adb_input_fling - First observed
adb_input_long_press - First observed
adb_input_pinch - First observed
adb_input_text - First observed
adb_install - First observed
adb_install_bundle - First observed
adb_list_packages - First observed
adb_list_permissions - First observed
adb_list_splits - First observed
adb_location - First observed
adb_logcat - First observed
adb_logcat_clear - First observed
adb_logcat_crash - First observed
adb_logcat_poll - First observed
adb_logcat_sessions - First observed
adb_logcat_start - First observed
adb_logcat_stop - First observed
adb_ls - First observed
adb_market_export - First observed
adb_market_install - First observed
adb_market_search - First observed
adb_mirror_start - First observed
adb_mirror_status - First observed
adb_mirror_stop - First observed
adb_mkdir - First observed
adb_mobile_data - First observed
adb_modem_logs - First observed
adb_multi_compare - First observed
adb_multi_install - First observed
adb_multi_shell - First observed
adb_multi_test - First observed
adb_neighboring_cells - First observed
adb_network - First observed
adb_network_auto_connect - First observed
adb_network_connections - First observed
adb_network_device_ip - First observed
adb_network_scan - First observed
adb_nfc_firmware - First observed
adb_notifications - First observed
adb_open_url - First observed
adb_orientation - First observed
adb_ota_check - First observed
adb_ota_fingerprint - First observed
adb_ota_history - First observed
adb_package_info - First observed
adb_pair - First observed
adb_perf_snapshot - First observed
adb_permission_audit - First observed
adb_plugin_info - First observed
adb_plugin_list - First observed
adb_profile_detect - First observed
adb_profile_list - First observed
adb_profile_save - First observed
adb_pull - First observed
adb_push - First observed
adb_qemu_connect - First observed
adb_qemu_disconnect - First observed
adb_qemu_guest_shell - First observed
adb_qemu_images - First observed
adb_qemu_setup - First observed
adb_qemu_start - First observed
adb_qemu_status - First observed
adb_qemu_stop - First observed
adb_reboot - First observed
adb_registry_install - First observed
adb_registry_installed - First observed
adb_registry_search - First observed
adb_regression_baseline - First observed
adb_regression_check - First observed
adb_regression_history - First observed
adb_resolve_intents - First observed
adb_restart_app - First observed
adb_reverse - First observed
adb_reverse_remove - First observed
adb_revoke_permission - First observed
adb_ril_poll - First observed
adb_ril_start - First observed
adb_ril_stop - First observed
adb_rm - First observed
adb_root_shell - First observed
adb_screen - First observed
adb_screen_size - First observed
adb_screen_state - First observed
adb_screencap - First observed
adb_screencap_annotated - First observed
adb_screenrecord_start - First observed
adb_screenrecord_stop - First observed
adb_screenshot_baseline - First observed
adb_screenshot_compressed - First observed
adb_screenshot_diff - First observed
adb_screenshot_history - First observed
adb_scroll_until - First observed
adb_selinux_denials - First observed
adb_selinux_status - First observed
adb_sensor_read - First observed
adb_settings_get - First observed
adb_settings_put - First observed
adb_shell - First observed
adb_signal_detail - First observed
adb_snapshot_capture - First observed
adb_snapshot_compare - First observed
adb_snapshot_restore_settings - First observed
adb_start_activity - First observed
adb_start_app - First observed
adb_tap_element - First observed
adb_tcpdump_start - First observed
adb_tcpdump_stop - First observed
adb_tcpip - First observed
adb_telephony - First observed
adb_test_gen_from_intents - First observed
adb_test_gen_from_ui - First observed
adb_test_gen_save - First observed
adb_test_session_end - First observed
adb_test_session_start - First observed
adb_test_step - First observed
adb_thermal_compare - First observed
adb_thermal_snapshot - First observed
adb_top - First observed
adb_ui_dump - First observed
adb_ui_find - First observed
adb_uninstall - First observed
adb_wait_element - First observed
adb_wait_stable - First observed
adb_wifi - First observed
adb_wifi_firmware - First observed
adb_workflow_list - First observed
adb_workflow_run - First observed
adb_workflow_validate
TDQS
Each tool has a clear, distinct purpose with specific descriptions. Despite the large number, functional groups (screenshots, inputs, logs, etc.) are well-separated and non-overlapping. No two tools appear to do the same thing.
All tools start with 'adb_' and use lowercase with underscores, providing a consistent namespace. However, there is a mix of verb_noun order (e.g., 'adb_list_packages') and noun_verb (e.g., 'adb_battery'), and some tools use nouns while others use imperative verbs, creating minor inconsistency.
With 198 tools, the number is extreme for a single MCP server. While each tool serves a niche purpose, the sheer volume overwhelms the user and exceeds the 50+ threshold for a poorly scoped tool set. A more focused subset would be more coherent.
The toolkit covers an extensive range of Android device operations: connection, app management, UI automation, networking, diagnostics, firmware, OTA, performance, workflows, and more. Minor gaps exist (e.g., no notification dismissal tool), but overall it is remarkably comprehensive.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A registry of AI agent tools — MCP servers, APIs, CLIs, SDKs — kept current by automated ingestion.
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- FlicenseAqualityDmaintenanceA MCP server that enables AI assistants to control Android devices via ADB, supporting device info, screen control, input simulation, app management, shell execution, file transfer, and UI parsing.20-
- FlicenseNot gradedqualityDmaintenanceA powerful MCP server that provides comprehensive Android device automation capabilities through ADB, enabling AI agents to interact with Android devices for testing, automation, and device control tasks.1-
- AlicenseNot gradedqualityDmaintenanceAn MCP server that wraps Android ADB functionality into AI assistant tools, enabling device management, shell execution, file operations, app management, media capture, and log analysis via natural language.262MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server designed for Android development, enabling AI assistants to directly control Android devices for screenshots, UI analysis, app management, and more.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/fullread/DeepADB'
If you have feedback or need assistance with the MCP directory API, please join our Discord server