Skip to main content
Glama

adb_command

Runs arbitrary ADB (Android Debug Bridge) commands, optionally scoped to a device, returning exit code, stdout, and stderr so agents can automate Android tasks and troubleshoot failures.

Instructions

Run an arbitrary adb command and return exit code, stdout, and stderr.

args is the adb argument list, for example ["shell", "getprop", "ro.product.model"] or "shell pm list packages". Without device the command runs without -s, so global commands such as devices or version work; pass a serial for device-scoped commands.

Input Schema

NameRequiredDescriptionDefault
argsYes
deviceNo
timeout_sNo
max_output_charsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden. It helpfully discloses the return shape (exit code/stdout/stderr) and that commands are arbitrary, implying write/destructive capability, but it never warns that adb can reboot, wipe, or install, and says nothing about how `timeout_s` or `max_output_chars` alter behavior (truncation, kill-on-timeout).

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?

Three tight sentences, front-loaded with the action and the return contract, then the parameter guidance. The examples earn their space by disambiguating string-vs-list input, though the formatting is slightly airy for the amount of content.

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?

No output schema exists, and the description compensates by declaring the exit-code/stdout/stderr return shape — exactly what an agent needs to interpret results. The remaining gap is behavioral coverage of the timeout and output-size limits, which matter for a tool that can hang or flood context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/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. It does this well for `args` (accepts a list or a string, with two concrete examples) and `device` (maps to the `-s` serial flag), but `timeout_s` and `max_output_chars` are never mentioned despite having bounds and defaults that affect behavior.

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?

States a specific verb+resource ('run an arbitrary adb command') and names the return contract (exit code, stdout, stderr). The word 'arbitrary' distinguishes it clearly from the narrow siblings (devices, screenshot, click, keyboard, mouse), which each wrap a single adb operation.

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?

Explains the global-vs-device-scoped split ('without `device` the command runs without -s, so global commands such as `devices` or `version` work'), which is real routing guidance. However, it never tells the agent when to prefer the dedicated siblings (devices, screenshot, click) over shelling out through this generic escape hatch, nor any preconditions for mutating commands.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools