android-mcp-server
Provides tools for managing Android devices via ADB and scrcpy, including device management, app installation/uninstallation, file transfer, shell commands, input control, screen mirroring, UI element finding, and system information retrieval.
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., "@android-mcp-serverlist 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.
Android MCP Server
MCP server providing ADB and scrcpy capabilities for Android device control. Built with FastMCP.
Assisted by Minimax Model via Claude Code.
Features
Device Management: List devices, get device info
App Management: Install/uninstall apps, start/stop apps, list packages
File Operations: Push/pull files between device and host
Shell Execution: Run shell commands on device, exec-out for binary output
Input Control: Tap, swipe, input text, press keys
System Info: Screen size, battery status, system properties
Screen Control: Screen mirroring and control via scrcpy, screenshot via exec-out
UI Element Finding: Dump UI hierarchy, find elements by attributes
Related MCP server: Android MCP Server
Install
uv add android-mcp-serverOr install from source:
# Clone the repo, then install
git clone https://github.com/chldu2000/android-mcp-server.git
cd android-mcp-server
uv pip install -e .
uv run python -m android_mcp.mainAdd MCP Server
Claude Code
claude mcp add android uv run -- python -m android_mcp.main --cwd /Path/to/workdirOther MCP Clients
The server can be run with:
uv run python -m android_mcp.mainTools
Device Management
Tool | Description |
| List all connected Android devices |
| Get detailed device information |
App Management
Tool | Description |
| Install an APK |
| Uninstall an application |
| List installed packages |
| Start an application |
| Force stop an application |
File Operations
Tool | Description |
| Pull file from device |
| Push file to device |
Shell
Tool | Description |
| Execute shell command |
| Execute command via exec-out (for binary output) |
Input Control
Tool | Description |
| Tap at coordinates |
| Swipe gesture |
| Input text |
| Press key event |
System Info
Tool | Description |
| Get screen resolution |
| Get battery status |
| Get system properties |
Screen Control (scrcpy)
Tool | Description |
| Start screen mirroring |
| Stop screen mirroring |
| Take screenshot |
| Send control command |
| Capture screenshot via exec-out |
UI Elements
Tool | Description |
| Dump UI hierarchy tree |
| Find UI elements by attributes |
Device Connection
USB Devices
Connect via USB and ensure USB debugging is enabled on the device.
Network Devices
For TCP/IP connection:
Enable TCP/IP mode on device:
adb tcpip 5555Find device IP:
adb shell ip routeConnect:
adb connect <device-ip>:5555
Dependencies
fastmcp - MCP server framework
scrcpy - Screen mirroring (must be installed separately)
uiautomator2 - uiautomator2 Python wrapper
Available Tools
25 toolsadb_device_infoC
Get detailed information about a specific device.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes |
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 indicates a read operation ('Get'), but lacks details on side effects, required permissions, error conditions, or output format. The agent cannot anticipate if the tool might fail or what exactly it returns.
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 wasted words. It is front-loaded and to the point.
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 input schema (one required string) and no output schema, the description is minimally adequate. However, it does not clarify what 'detailed information' includes, which could cause confusion with other device info tools. The agent may need to invoke the tool to learn its output, which is inefficient.
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 coverage is 0%, and the description does not mention the 'serial' parameter or its expected format. While the parameter name is self-explanatory, no additional context (e.g., where to find the serial, required format) 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 uses verb 'Get' and resource 'detailed information about a specific device', which is clear but vague. It doesn't specify what 'detailed information' includes (e.g., model, OS, serial), and given sibling tools like adb_get_properties which are more specific, the purpose could be confused.
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 vs alternatives such as adb_get_properties or adb_list_devices. There is 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_dump_ui_treeC
Dump the UI hierarchy tree from the device.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lacks disclosure of behavioral traits beyond the basic function. With no annotations, it should explain output format, performance impact, or limitations (e.g., whether the tree is full or partial, if root access is needed). The current text provides no such 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 sentence with no wasted words, but it is overly minimal. It lacks structure to aid quick parsing, though it is not 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 is severely incomplete. Given the tool has no output schema and no annotations, it should describe what the dumped UI hierarchy tree looks like, how to interpret the output, and any side effects. The current text provides only the action.
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 0%, so the description must compensate for the single parameter 'serial'. However, the description does not mention the parameter at all, adding no 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 action ('Dump the UI hierarchy tree') and the resource ('from the device'). It distinguishes this tool from siblings like 'adb_screencap' or 'adb_find_element' by specifying the UI hierarchy tree, a unique output among the listed 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?
No guidance is provided on when to use this tool versus alternatives (e.g., scrcpy_screenshot, adb_find_element). There are no conditions, 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_exec_outC
Execute a command via adb exec-out (for binary output).
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| command | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully disclose behaviors. It only mentions 'for binary output' but omits other traits such as destructiveness, authorization requirements, or error handling.
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 conveys the purpose. It is front-loaded and waste-free, though it could benefit from slightly more 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 tool's simplicity (2 params, no nested objects), the description is incomplete. It does not specify return values, error behavior, or prerequisites, 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?
The input schema has two required parameters ('serial' and 'command') with 0% schema description coverage. The description does not explain what these parameters represent or how to format them, adding no 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 'Execute a command via adb exec-out (for binary output)' clearly states the verb ('execute'), the resource ('command via adb exec-out'), and the specific use case ('for binary output'). This distinguishes it from sibling tools like 'adb_shell' which likely handles text output.
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 like 'adb_shell'. It implies binary output usage but lacks explicit when-to-use or when-not-to-use criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_find_elementC
Find UI elements by their attributes using uiautomator.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | ||
| serial | Yes | ||
| enabled | No | ||
| clickable | No | ||
| focusable | No | ||
| class_name | No | ||
| resource_id | No | ||
| content_desc | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral traits beyond a basic read operation. Without annotations, it fails to mention whether the tool is blocking, how it handles no results, or any side effects, leaving the agent with significant uncertainty.
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. However, it sacrifices critical information for brevity, achieving conciseness at the expense of 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?
With 8 parameters, no output schema, and no annotations, the description is grossly incomplete. It lacks any details on return values, parameter usage, or usage context, which are essential for a tool of this 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?
Despite having 8 parameters, the description adds no meaning beyond the raw schema types. With 0% schema description coverage, the description's mention of 'attributes' is too vague, providing no detail on how parameters like text, clickable, or resource_id should be used.
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 finds UI elements by attributes using uiautomator, providing a specific verb and resource. While it doesn't explicitly distinguish from siblings like adb_dump_ui_tree, the context implies it's for targeted element search rather than full tree dump.
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_dump_ui_tree or adb_tap. There are no explicit when/when-not statements, nor mention of 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_get_batteryC
Get battery status of the device.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states 'Get battery status', implying a read-only operation without details on output format, side effects, 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?
The description is a single sentence with six words, highly concise and 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 no output schema or parameter descriptions, the description fails to convey what 'battery status' includes (e.g., percentage, health), making it insufficient for agent 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 description coverage is 0% for the serial parameter, and the description does not explain its role or format, leaving the agent to infer from the name 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 tool retrieves battery status, using a specific verb and resource. It is distinguishable from sibling tools as no other tool targets battery 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 provides no guidance on when to use this tool versus alternatives, nor any prerequisites or context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_get_propertiesC
Get system properties from the device.
| Name | Required | Description | Default |
|---|---|---|---|
| keys | No | ||
| serial | Yes |
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 it gets properties, not whether it is read-only (likely safe) or what happens without keys (returns all?). Inadequate for safe invocation.
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. While lacking structure, it has 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 no output schema and 0% parameter coverage, the description is inadequate. It does not clarify return format or behavior when keys are omitted.
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 0%, and the description does not explain the 'keys' or 'serial' parameters. This forces the agent to infer from parameter names alone, which is insufficient.
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 'system properties', distinguishing it from siblings like adb_device_info or adb_shell. However, it does not elaborate on what 'system properties' encompasses, which could be ambiguous.
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 or prerequisites. The description lacks context for selection 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_get_screen_sizeC
Get the screen resolution of the device.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose behavior like requiring an authorized connected device or that it's a read-only operation. Minimal beyond the tool 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?
Single sentence, concise but lacking necessary detail. Could be expanded 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?
Missing important details: no description of output format (e.g., width x height), no mention of device connection prerequisites. Inadequate for a one-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 description coverage is 0%. The description does not explain the required 'serial' parameter (device identifier). Agent has no guidance on what value to 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 it gets screen resolution, which is specific. However, it does not distinguish from siblings like adb_get_properties that might also provide screen dimensions via display properties.
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_get_properties, adb_device_info). Agent must infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_input_textC
Input text on the device.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| serial | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lacks behavioral details such as whether the device must be unlocked, if special characters are supported, or any side effects. With no annotations, the description should disclose these traits but fails to do so.
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, which is concise, but it omits important details. While brevity is positive, it sacrifices informativeness.
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 is insufficient. It does not explain the command's behavior, prerequisites, or limitations, 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?
The input schema defines two required parameters (text, serial) with 0% description coverage. The description does not clarify what these parameters mean or how to use them, offering no added value beyond the field names.
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 'Input text on the device.' clearly states the action and target. However, it does not distinguish from sibling tools like adb_press_key or adb_tap, which perform similar input actions.
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, nor any conditions or exclusions. This leaves the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_install_appC
Install an APK on the device.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| apk_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states 'Install an APK'. It does not disclose whether installation is destructive, required permissions, prerequisites like USB debugging, or behavior on duplicate installs. Minimal 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 extremely concise (6 words) but sacrifices important detail. It is front-loaded with the core action, but lacks a second sentence to clarify parameters or usage. Acceptable brevity but incomplete for a standalone description.
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 annotations, no output schema, and a simple but not trivial tool, the description is incomplete. Missing information about prerequisites, error handling, and return values. Barely adequate for an agent to use correctly without extra knowledge.
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 0% description coverage for parameters, and the description adds no meaning beyond parameter names. The agent must infer that 'serial' identifies the device and 'apk_path' is the file location, but no explicit explanation 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 the action (install) and resource (APK on device), distinguishing it from siblings like adb_uninstall_app. However, it doesn't explicitly mention that the APK file is specified via a path parameter, which is a minor gap.
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_uninstall_app or adb_list_packages. The description does not provide context or exclusions, leaving the agent to infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_list_devicesA
List all connected Android devices.
| 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 bears full responsibility. It only states the action without disclosing traits like blocking behavior, error states (e.g., no connected devices), or that 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?
The description is a single concise sentence (4 words) that is immediately clear and free of 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 (no parameters, no output schema), the description is adequate but could be more helpful by hinting at the output format (e.g., list of device serial numbers) or the fact that it returns immediately.
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, so the baseline is 4. The description appropriately adds no parameter detail as there are none to describe.
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 connected Android devices' uses a specific verb (list) and resource (connected Android devices), clearly distinguishing it from sibling tools like adb_device_info which focuses 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 implies usage for enumerating devices before targeting one, but does not explicitly state when to use this tool over siblings like adb_device_info or indicate prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_list_packagesC
List all installed packages on the device.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but fails to disclose details like authorization requirements, output format (package names only or more), or performance considerations. The statement is too generic.
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 (single sentence) but is under-specified, lacking important details. It could be expanded 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 and no annotations, the description should provide more context about return values, error handling, and prerequisites. It is incomplete for reliable tool 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 0%, and the description does not explain the 'serial' parameter, its purpose, or how to obtain it. This leaves the agent uninformed about the required input.
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 (list), the resource (installed packages), and the scope (on the device). It effectively distinguishes from sibling tools like adb_device_info or adb_get_properties.
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_shell for custom commands). No prerequisites or context for when listing packages is appropriate are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_press_keyC
Press a key event.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| keycode | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only states 'press a key event' without explaining keycode semantics, potential side effects, or whether it's a press-release or hold. Lacks detail needed for safe invocation.
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 short (one sentence), but does not earn its place due to lack of essential details. Conciseness is achieved at the cost of 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?
Given the tool's simplicity (2 params, no output schema), the description is still incomplete. Missing details on keycode values, examples, or behavioral nuances. Does not leverage the opportunity to add 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 description coverage is 0%, and description adds no parameter info. Parameters 'serial' and 'keycode' are undocumented; agent must infer meaning from names alone, which is insufficient for 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 (press) and resource (key event), distinguishing from siblings like adb_tap (tap location) and adb_input_text (text input). The verb-resource combination 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?
No guidance on when to use this tool versus alternatives like adb_tap or adb_input_text. No context on prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_pull_fileB
Pull a file from the device to local filesystem.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| local_path | Yes | ||
| device_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavioral traits. It only says 'pull a file' without mentioning side effects, overwrite behavior, or error handling.
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 sentence, front-loaded with action and resources, 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 file pull, but no output schema or annotations, the description fails to specify if directories are supported, recursion, or file overwrite behavior.
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 0% with no parameter descriptions. The description adds no meaning beyond parameter names. For 3 params, this is insufficient.
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 'Pull a file from the device to local filesystem' clearly states the action (pull) and resources (file from device to local). It effectively distinguishes from siblings like adb_push_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?
No guidance on when to use this tool vs alternatives, no prerequisites mentioned (e.g., device connected, file existence, permissions).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_push_fileC
Push a file from local filesystem to the device.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| local_path | Yes | ||
| device_path | Yes |
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 says 'push a file'. Missing details on overwrite behavior, directory creation, permissions, or failure handling.
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 one sentence, but it sacrifices necessary detail. Appropriate length but lacks substance.
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, no annotations, and 0% parameter coverage, the description is highly incomplete. It fails to explain return values, errors, or behavior, making it insufficient 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 0% with no parameter descriptions. The description does not explain the parameters beyond their names, which rely on user inference.
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 'push' and resource 'file' with direction from local to device. It distinguishes from sibling 'adb_pull_file' which does the opposite.
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_pull_file or adb_shell. No prerequisites 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_screencapC
Capture screenshot using exec-out and save to local file.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| output_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only says 'capture screenshot...save to local file'. It does not disclose side effects, overwrite behavior, permissions needed, or constraints.
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?
Description is a single sentence and very concise, but it is under-specified for the tool's complexity. Would benefit from additional context 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 no output schema, no annotations, and required parameters, the description does not cover return value, error conditions, or file format. Incomplete for a tool with 2 required inputs.
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 2 parameters with 0% description coverage. Description adds no information about 'serial' or 'output_path' 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 it captures a screenshot and saves to a local file using exec-out. However, it does not explicitly differentiate from sibling tool scrcpy_screenshot, which also captures screenshots.
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 scrcpy_screenshot or adb_shell. The description only states the basic action without context.
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 device.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| command | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose any behavioral traits such as side effects, permissions, output format, or error handling. Merely states the 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?
Description is a single sentence, concise but under-specified. It could include more detail 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?
With no output schema and no additional context, the description is insufficient. For a tool executing arbitrary commands, return values, errors, and behavior should be explained.
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 0% and description adds no meaning beyond parameter names 'serial' and 'command'. Does not clarify expected format or values for these 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?
Description clearly states verb 'Execute' and resource 'shell command on the device', but does not differentiate from sibling tool adb_exec_out which likely has similar 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 like adb_exec_out or adb_device_info. Description provides no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_start_appC
Start an application on the device.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| activity | No | ||
| package_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It only says 'start an application', but does not reveal side effects, whether it waits for launch, permissions needed, or what happens if the app is already running.
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 4-word sentence, which is concise but under-informative. It lacks critical details, making it less effective despite 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?
Given the tool's simplicity, the description fails to cover return values, error conditions, or behavior when the app is already running. Without output schema or annotations, this is insufficient for an agent 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 description coverage is 0%, and the description adds no meaning to parameters. The agent gets no help understanding that 'package_name' should be a full package identifier or that 'activity' is optional for launching a specific activity.
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 ('Start an application') and identifies the resource (application). While it doesn't explicitly differentiate from siblings like adb_stop_app, the purpose is unambiguous and not a tautology.
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. There is no mention of prerequisites, such as the application being installed, or indications for when to use adb_stop_app instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_stop_appC
Force stop an application on the device.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| package_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only says 'force stop,' implying forceful termination, but does not disclose side effects (e.g., app data state, process killing behavior), required permissions, or whether the operation is reversible.
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, but it omits critical details such as parameter information. It is appropriately short for a simple operation, but could be structured to include 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 tool with no output schema, no annotations, and zero parameter description, the description fails to provide sufficient context about expected behavior, return values, or preconditions. It is minimally complete but lacks depth.
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 0%, and the description does not mention any parameters, not even 'serial' or 'package_name.' It adds no meaning beyond the schema's basic 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 states 'Force stop an application on the device,' which is a specific verb-resource pair. It adds 'force' to distinguish from a graceful stop, but it largely restates the tool name without additional detail like which device or how it relates to sibling tools like adb_uninstall_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?
No guidance is provided on when to use this tool versus alternatives such as adb_uninstall_app or adb_start_app. There is no mention of prerequisites, typical use cases, 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_swipeC
Simulate a swipe gesture.
| Name | Required | Description | Default |
|---|---|---|---|
| x1 | Yes | ||
| x2 | Yes | ||
| y1 | Yes | ||
| y2 | Yes | ||
| serial | Yes | ||
| duration | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not mention any behavioral aspects such as duration, coordinate system, or that this is a touch simulation. The agent gets no insight into side effects or operation constraints.
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) but at the expense of necessary detail. The description is under-specified, missing essential context that a single sentence cannot adequately convey for a 6-parameter 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?
Given 6 parameters, no output schema, and no annotations, the description is wholly inadequate. It fails to explain coordinate space, behavior of duration, or return value, leaving the agent with almost no actionable information.
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 0% schema description coverage and 6 parameters (including required fields like serial, x1, y1, x2, y2), the description adds no meaning beyond the parameter names. The agent has no clue about coordinate ranges, units, or the purpose of duration.
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 'Simulate a swipe gesture' clearly identifies the action as a gesture type, but lacks detail such as coordinate start/end points or that it's a touch simulation. It distinguishes from tap but not precisely among siblings like adb_tap or adb_input_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?
No guidance on when to use swipe versus alternative gestures (tap, press key, etc.). No context about prerequisites or expected outcomes, leaving the agent to 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_tapC
Simulate a tap at the specified coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| serial | Yes |
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 only states 'simulate a tap' without detailing side effects, prerequisites (e.g., unlocked device), or coordinate system, leaving significant ambiguity.
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 and front-loaded, but it omits necessary details, making it insufficiently informative despite 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?
For a tool with 3 required parameters and no output schema or annotations, the description lacks essential context such as coordinate system, bounds, and return value, rendering it 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 description coverage is 0%, and the description does not explain the meaning or constraints of x, y, or serial parameters, failing to compensate for the schema gap.
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 ('simulate a tap') and specifies the target ('specified coordinates'), but does not explicitly differentiate from similar sibling tools like adb_swipe or adb_press_key.
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, nor are there any exclusions or context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_uninstall_appC
Uninstall an application from the device.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| package_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as required permissions (e.g., root?), effect on system apps, or return codes. The destructive nature 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 sentence, making it concise but lacking structure. It is not verbose, but it could have more detail without being overly long.
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 uninstall tool, the description omits details about output (e.g., success/failure indication), error handling, and prerequisites (e.g., device must be connected). It is insufficient for an agent to reliably 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 0%, and the description does not explain the parameters 'serial' or 'package_name' beyond their names. No clarification on format, source (e.g., from adb_list_packages), or required 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?
The description succinctly states the action ('Uninstall') and the resource ('application from the device'), clearly distinguishing it from sibling tools like adb_install_app and 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?
No guidance on when to use this tool versus alternatives (e.g., adb_shell for manual uninstall) or prerequisites (e.g., whether it works for system apps). The description lacks any usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrcpy_controlD
Send control command to scrcpy.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| params | Yes | ||
| serial | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description merely states 'Send control command' without disclosing side effects, required permissions, or range of possible actions, leaving the agent uninformed.
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 short but under-specified; the single sentence lacks detail, making it insufficient rather than 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 3 parameters, no output schema, no annotations, and many sibling tools, the description is completely inadequate for an agent to invoke the tool 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 description coverage is 0%; description does not explain parameters ('action', 'params', 'serial') or their expected values/formats, adding no value beyond the bare 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 'Send control command to scrcpy' is vague; does not specify what actions or commands are supported, failing to distinguish from sibling tools like scrcpy_start, scrcpy_stop, and scrcpy_screenshot.
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 22 sibling tools covering specific actions (tap, swipe, press key), the description provides no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrcpy_screenshotC
Take a screenshot from the device.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| output_path | No | /sdcard/screenshot.png |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It does not mention where the screenshot is saved (though output_path parameter exists), whether it overwrites, or if scrcpy server must be running. Minimal 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?
Extremely concise, one sentence. No fluff. However, lacks necessary details, so conciseness slightly overdone.
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), the description is incomplete. It does not explain return behavior, error states, or how it differs from similar tools. Leaves gaps for agent 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?
Schema description coverage is 0%. Description does not explain parameters (serial, output_path) or their roles. No value added beyond the schema itself.
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 takes a screenshot from the device. Verb and resource are specific. However, it does not differentiate from sibling 'adb_screencap' which also captures screenshots.
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_screencap or scrcpy_control. Lacks prerequisites, such as requiring an active scrcpy connection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrcpy_startC
Start screen mirroring via scrcpy.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| bit_rate | No |
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 says 'start screen mirroring', without disclosing whether it runs in background, requires ongoing connection, or has side effects. Behaviors like process lifetime or resource usage 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?
The description is a single short sentence, which is concise and front-loaded. However, it is too brief to be informative; conciseness should not sacrifice necessary detail. For a tool with 2 parameters and no annotations, it is under-specified.
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, no annotations, and minimal description, the context is very incomplete. It does not explain return values, error states, prerequisites, or effects. For a tool that starts a potentially long-running process, crucial details are absent.
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 0%, meaning the input schema has no parameter descriptions. The description does not mention any parameters (e.g., serial required, bit_rate optional). It adds no meaning beyond the schema, failing to compensate for the coverage gap.
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 screen mirroring via scrcpy. It is a specific verb+resource, and among sibling tools like scrcpy_stop and scrcpy_control, it distinguishes as the initiation action. However, it lacks detail on the platform (Android) or what exactly 'screen mirroring' entails.
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. For example, it does not mention prerequisites (e.g., device connected, Scrcpy installed) or that this should be used before scrcpy_control. The description provides 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.
scrcpy_stopA
Stop screen mirroring.
| 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 the full burden but only repeats the name, providing no details on side effects, permissions, or state requirements (e.g., what happens if no mirroring is active).
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, efficient sentence that conveys the core purpose 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?
For a simple no-parameter tool, the description is adequate. However, given the lack of annotations and output schema, a hint about its relationship to scrcpy_start 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?
No parameters exist, so baseline 4 applies. The description adds no param info, but none is needed given 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 action (stop) and the resource (screen mirroring), directly aligning with the tool name and differentiating it from siblings like scrcpy_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 guidance on when to use this tool vs alternatives, such as prerequisites like an active mirroring session or that it is the counterpart to scrcpy_start.
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.
25 tool updates
v0.1.1- First observed
adb_device_info - First observed
adb_dump_ui_tree - First observed
adb_exec_out - First observed
adb_find_element - First observed
adb_get_battery - First observed
adb_get_properties - First observed
adb_get_screen_size - First observed
adb_input_text - First observed
adb_install_app - First observed
adb_list_devices - First observed
adb_list_packages - First observed
adb_press_key - First observed
adb_pull_file - First observed
adb_push_file - First observed
adb_screencap - First observed
adb_shell - First observed
adb_start_app - First observed
adb_stop_app - First observed
adb_swipe - First observed
adb_tap - First observed
adb_uninstall_app - First observed
scrcpy_control - First observed
scrcpy_screenshot - First observed
scrcpy_start - First observed
scrcpy_stop
TDQS
Each tool targets a distinct function, with clear separation between ADB operations and scrcpy mirroring. No two tools have overlapping purposes; even similar actions like screenshots are differentiated by the underlying technology (ADB vs scrcpy).
All tools follow a consistent snake_case pattern with a prefix ('adb_' or 'scrcpy_') followed by a verb_noun pair. This uniformity makes it easy for an agent to infer tool roles.
With 25 tools, the server is comprehensive but borders on the high side. However, each tool serves a specific need for Android device management, and the set is well-scoped for its purpose.
The tool surface covers core ADB operations, UI interaction, app lifecycle, file transfer, and screen mirroring. Minor gaps like logcat access or screen recording exist but do not significantly hinder typical automation workflows.
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
Control real Android and iOS devices with LLM agents — tap, swipe, type, automate flows.
Melaya is a remote MCP server. It gives an assistant hands on your own Android phone and browser: it reads the screen through the accessibility tree, then taps, types and navigates inside the apps and sites you allow-list, with no per-app API. It also builds, schedules and runs agent pipelines across 6k+ connected tools. OAuth 2.1, nothing to install.
Control Android TV from any AI. 38 MCP tools: playback, recap, recommend, smart-home, schedules.
Drive real Android & iOS devices and web browsers from natural language for mobile + web QA. 290+ tools across device control, app management, automation sessions, browser automation, and flow recording / replay. Bearer-auth — get a token at robotactions.com → Profile → API Tokens.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables control of Android devices via ADB for automation and testing. Supports app management, screen capture, UI analysis, and input simulation through natural language commands.913032MIT
- AlicenseBqualityDmaintenanceEnables control of Android devices via ADB, allowing screenshot capture, touch simulation, and swipe gestures through natural language commands.221916MIT
- FlicenseNot gradedqualityDmaintenanceEnables control of Android devices through ADB, allowing users to list connected devices, capture screenshots using multiple methods (adb, droidcast, minicap, mumu), and retrieve device information.-
- FlicenseBqualityDmaintenanceProvides comprehensive Android device management capabilities through ADB, including device management, app management, file operations, and system monitoring.181-
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/chldu2000/android-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server