Reference
36 built-in tools
Every interface — plugin, Skill, MCP, CLI and SDK — exposes the same tools with the same schemas. Run adc tool show TOOL for the exact input schema.
Windows Node and Android Node are in testing. They are available to try, but compatibility and reliability are still being validated. An available installer does not mean every system, phone model or operation has been verified.
| Tool | Risk | Purpose |
|---|---|---|
device.list | Read | Discover devices and inspect their current capability. |
device.status | Read | Discover devices and inspect their current capability. |
file.list | Read | List, read and search files inside authorized folders. |
file.read | Read | List, read and search files inside authorized folders. |
file.search | Read | List, read and search files inside authorized folders. |
file.write | Write | Create, replace, edit or patch files atomically. |
file.edit | Write | Create, replace, edit or patch files atomically. |
file.patch | Write | Create, replace, edit or patch files atomically. |
shell.exec | Execute | Run a command supplied by the agent in an authorized working directory. |
command.template.list | Read | List locally configured command templates and their metadata; runs no command. |
command.template.run | Execute | Run a command preset on the device, selected by templateId; the agent cannot replace the command. |
test.run | Execute | Run a preset through the same template executor; defaults to templateId=test and accepts timeoutMs. |
task.status | Varies | Inspect or cancel asynchronous work. |
task.result | Varies | Inspect or cancel asynchronous work. |
task.wait | Varies | Inspect or cancel asynchronous work. |
task.cancel | Varies | Inspect or cancel asynchronous work. |
device.battery.get | Read | Read live state exposed by an authorized mobile device. |
device.info.get | Read | Read live state exposed by an authorized mobile device. |
device.network.get | Read | Read live state exposed by an authorized mobile device. |
device.storage.get | Read | Read live state exposed by an authorized mobile device. |
display.status | Read | Read live state exposed by an authorized mobile device. |
audio.status | Read | Read live state exposed by an authorized mobile device. |
flashlight.status | Read | Read live state exposed by an authorized mobile device. |
location.get | Read | Read live state exposed by an authorized mobile device. |
screen.capture | Read | Read live state exposed by an authorized mobile device. |
ui.inspect | Read | Read live state exposed by an authorized mobile device. |
ui.wait | Read | Read live state exposed by an authorized mobile device. |
notification.show | Write | Present an authorized notification on a mobile device. |
device.navigation | Execute | Operate the visible Android interface within local Accessibility permission. |
screen.control | Execute | Operate the visible Android interface within local Accessibility permission. |
device.vibrate | Execute | Operate the visible Android interface within local Accessibility permission. |
app.open | Execute | Operate the visible Android interface within local Accessibility permission. |
audio.volume.set | Execute | Operate the visible Android interface within local Accessibility permission. |
flashlight.set | Execute | Operate the visible Android interface within local Accessibility permission. |
ui.action | Execute | Operate the visible Android interface within local Accessibility permission. |
ui.gesture | Execute | Operate the visible Android interface within local Accessibility permission. |
Shell, templates and tests
With shell.exec, the agent supplies the command. With a template, the device owner presets it and the agent selects its ID. For example:
adc-node templates add lint --root ROOT_ID --command "npm run lint"
adc-node templates add test --root ROOT_ID --command "npm test"command.template.list only lists these presets. command.template.run with templateId=lint runs npm run lint; test.run without a templateId runs npm test. test.run can also select a different templateId. Its timeoutMs defaults to five minutes and cannot exceed the template's configured timeout.
All three execution tools ultimately run a shell process. Templates limit which command the agent may choose; they do not provide a separate sandbox. The current executor rejects non-empty template parameters.
Rules that apply to every tool
- Write and Execute tools need an idempotency key. Reuse it only to retry the exact same call.
- Paths must be absolute and inside an authorized folder on the target device.
- Local MCP server tools appear namespaced, default to Execute risk and need explicit authorization.
Wait for a running task
task.wait takes jobId and waitMs (0–30000, default 4000) and returns when the task finishes or the wait ends. If it is still running, wait again with the same jobId instead of resubmitting.
adc invoke task.wait --args '{"jobId":"job_example","waitMs":4000}' --json