Skip to main content
Glama
chldu2000

android-mcp-server

by chldu2000

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-server

Or 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.main

Add MCP Server

Claude Code

claude mcp add android uv run -- python -m android_mcp.main --cwd /Path/to/workdir

Other MCP Clients

The server can be run with:

uv run python -m android_mcp.main

Tools

Device Management

Tool

Description

adb_list_devices

List all connected Android devices

adb_device_info

Get detailed device information

App Management

Tool

Description

adb_install_app

Install an APK

adb_uninstall_app

Uninstall an application

adb_list_packages

List installed packages

adb_start_app

Start an application

adb_stop_app

Force stop an application

File Operations

Tool

Description

adb_pull_file

Pull file from device

adb_push_file

Push file to device

Shell

Tool

Description

adb_shell

Execute shell command

adb_exec_out

Execute command via exec-out (for binary output)

Input Control

Tool

Description

adb_tap

Tap at coordinates

adb_swipe

Swipe gesture

adb_input_text

Input text

adb_press_key

Press key event

System Info

Tool

Description

adb_get_screen_size

Get screen resolution

adb_get_battery

Get battery status

adb_get_properties

Get system properties

Screen Control (scrcpy)

Tool

Description

scrcpy_start

Start screen mirroring

scrcpy_stop

Stop screen mirroring

scrcpy_screenshot

Take screenshot

scrcpy_control

Send control command

adb_screencap

Capture screenshot via exec-out

UI Elements

Tool

Description

adb_dump_ui_tree

Dump UI hierarchy tree

adb_find_element

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:

  1. Enable TCP/IP mode on device:

    adb tcpip 5555
  2. Find device IP:

    adb shell ip route
  3. Connect:

    adb connect <device-ip>:5555

Dependencies

  • fastmcp - MCP server framework

  • scrcpy - Screen mirroring (must be installed separately)

  • uiautomator2 - uiautomator2 Python wrapper

Available Tools

25 tools
adb_device_infoC

Get detailed information about a specific device.

ParametersJSON Schema
NameRequiredDescriptionDefault
serialYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
serialYes

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
serialYes
commandYes

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
serialYes
enabledNo
clickableNo
focusableNo
class_nameNo
resource_idNo
content_descNo

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
serialYes

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
keysNo
serialYes

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
serialYes

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
serialYes

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
serialYes
apk_pathYes

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
serialYes

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
serialYes
keycodeYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
serialYes
local_pathYes
device_pathYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
serialYes
local_pathYes
device_pathYes

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
serialYes
output_pathYes

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
serialYes
commandYes

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
serialYes
activityNo
package_nameYes

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
serialYes
package_nameYes

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
x1Yes
x2Yes
y1Yes
y2Yes
serialYes
durationNo

TDQS

C2/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
serialYes

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
serialYes
package_nameYes

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
paramsYes
serialYes

TDQS

D1.8/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose2/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
serialYes
output_pathNo/sdcard/screenshot.png

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
serialYes
bit_rateNo

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

  1. 25 tool updatesv0.1.1
    • First observedadb_device_info
    • First observedadb_dump_ui_tree
    • First observedadb_exec_out
    • First observedadb_find_element
    • First observedadb_get_battery
    • First observedadb_get_properties
    • First observedadb_get_screen_size
    • First observedadb_input_text
    • First observedadb_install_app
    • First observedadb_list_devices
    • First observedadb_list_packages
    • First observedadb_press_key
    • First observedadb_pull_file
    • First observedadb_push_file
    • First observedadb_screencap
    • First observedadb_shell
    • First observedadb_start_app
    • First observedadb_stop_app
    • First observedadb_swipe
    • First observedadb_tap
    • First observedadb_uninstall_app
    • First observedscrcpy_control
    • First observedscrcpy_screenshot
    • First observedscrcpy_start
    • First observedscrcpy_stop

TDQS

B3/5.0
Disambiguation5/5

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).

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

Latest Blog Posts

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