Skip to main content
Glama

termux-mcp

在同一台 Android 上,让任何 MCP 客户端通过 localhost 直接操作 Termux。

License Node MCP

命令执行、tmux 交互终端、后台任务、文件管理、Android 能力(剪贴板 / 通知 / 电池 / TTS),全部以 Termux 用户身份执行。

⚠️ 默认没有鉴权,只监听 127.0.0.1。 任何能访问该端口的本机进程都拥有 Termux 的完整权限。不要把 server.host 改成 0.0.0.0,也不要暴露到局域网或公网。

特性

  • 三种传输:Streamable HTTP(推荐)、Legacy SSE、stdio

  • 交互式终端:tmux 持久会话,支持 REPL、SSH、密码提示、ncurses/TUI、Ctrl-C

  • 后台任务:detached 进程、日志文件、退出码持久化、增量读取

  • 文件操作:读写、按行编辑、递归搜索、原子写入、base64

  • Android 集成:剪贴板、通知、Toast、振动、打开链接、电池状态、TTS

  • 审计:JSONL 日志,敏感字段自动脱敏

Related MCP server: termux-phone-mcp

环境要求

  • Termux(F-Droid / GitHub 版),Node.js ≥ 18

  • tmux:pkg install tmux

  • 可选:Termux:API(Android 能力)、Termux:Boot(开机自启)

快速开始

cd ~/termux-mcp
npm install
./scripts/doctor.sh     # 环境自检
./scripts/start.sh      # 后台启动 + 唤醒锁 + 恢复自启动
./scripts/status.sh     # 状态与地址
MCP:    http://127.0.0.1:8770/mcp
SSE:    http://127.0.0.1:8770/sse
Health: http://127.0.0.1:8770/health

验证:

curl -s http://127.0.0.1:8770/health

客户端接入

OpenCode

opencode mcp add --global termux --url http://127.0.0.1:8770/mcp

等价的 opencode.json:

{
  "mcp": {
    "servers": {
      "termux": { "type": "remote", "url": "http://127.0.0.1:8770/mcp" }
    }
  }
}

其他 Streamable HTTP 客户端

URL:    http://127.0.0.1:8770/mcp
Accept: application/json, text/event-stream

服务端无状态:每个 POST 独立处理,不要求 Mcp-Session-Id,不需要任何认证头。

stdio(客户端本身运行在 Termux 内)

node ~/termux-mcp/src/server.js --stdio

./scripts/client-config.sh 会打印当前环境适用的完整客户端配置。

工具

类别

工具

Shell

run_command

交互终端

terminal_create terminal_write terminal_read terminal_list terminal_resize terminal_kill terminal_attach_info

后台任务

task_start task_list task_output task_stop task_remove

文件

read_file write_file edit_file list_dir stat_path mkdir copy_path move_path delete_path search_files

Android

clipboard_get clipboard_set notify toast vibrate open battery_status tts_speak termux_api

系统

system_info

资源 / 提示

termux://system/info termux://config termux://audit/recent termux://tasks termux://terminals termux://help、prompt termux_operator

两个容易踩的默认值:terminal_write 的 submit 默认 false,要执行命令必须显式传 true;delete_path 必须显式传 confirm: "DELETE",且拒绝删除 /。

示例

一次性命令:

{ "name": "run_command", "arguments": { "command": "pkg list-installed | head -20" } }

交互式 Python REPL:

{ "name": "terminal_create", "arguments": { "name": "py", "cwd": "~/project", "cols": 120, "rows": 40 } }
{ "name": "terminal_write",  "arguments": { "session": "py", "input": "python3", "submit": true } }
{ "name": "terminal_read",   "arguments": { "session": "py", "expect": "^>>> ", "timeout_ms": 5000 } }

后台构建:

{ "name": "task_start",  "arguments": { "name": "build", "command": "npm run build > build.log 2>&1", "wait_ms": 500 } }
{ "name": "task_output", "arguments": { "id": "t-xxxx", "wait_for": "exit", "wait_ms": 60000, "tail_lines": 200 } }

Android 通知:

{ "name": "notify", "arguments": { "title": "构建完成", "content": "npm run build 已完成", "sound": true } }

安全模型

  • 无 token、无密码、无 OAuth,只监听 127.0.0.1

  • 任何能访问 8770 的本机进程都能执行任意命令、读写任意可访问文件

  • 权限边界是 Termux 用户本身(u0_aXXX),不是这个服务

  • 浏览器来源检查保留:网页无法直接驱动本机命令,原生 App 不受影响

  • 审计日志默认 ~/.local/state/termux-mcp/audit.jsonl,命令全文会记录,不要在里面写密码;security.auditEnabled=false 可关闭

  • 需要远程访问时走 SSH 隧道

配置

~/.config/termux-mcp/config.json,首次启动自动生成;可用 TERMUX_MCP_CONFIG 或 --config 覆盖。常改项:

字段

默认

说明

server.port

8770

监听端口

security.defaultTimeoutSec

120

run_command 默认超时

security.maxOutputBytes

262144

输出截断阈值

security.auditEnabled

true

审计开关

terminal.shell

$SHELL

交互终端 shell;run_command 与后台任务固定用 bash

terminal.useShellRc

false

bash 会话默认 --noprofile --norc,避免 rc 改写行编辑导致 Enter 不执行

tasks.maxTasks

32

后台任务上限

服务管理

脚本

作用

scripts/start.sh

后台启动 + termux-wake-lock + 恢复自启动

scripts/stop.sh

停止服务并暂停自启动(不杀 tmux 会话和后台任务)

scripts/status.sh

状态、自启动状态、地址

scripts/doctor.sh

环境自检

scripts/client-config.sh

打印客户端配置

scripts/install-motd.sh

安装中文登录欢迎语

scripts/install-boot.sh / uninstall-boot.sh

Termux:Boot 开机自启

scripts/autostart-enable.sh / autostart-disable.sh

恢复 / 暂停自启动

scripts/install-termux-api.sh

安装 Termux:API 包装器

后台存活建议:关掉 Termux 的电池优化;start.sh 已自动获取唤醒锁。Android 12+ 的 phantom process killer 可能杀掉后台子进程,需要 adb/root 调整。

许可证

MIT © leemwood

Available Tools

33 tools
battery_statusRead Android battery statusA
Read-onlyIdempotent

Return battery percentage, charging state, temperature and related fields via Termux:API.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds one genuinely useful piece of context — the Termux:API dependency, implying the Termux:API app must be installed/permitted — but says nothing about failure modes when the API is absent or about return shape.

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 front-loaded sentence naming what is returned and how, with no filler. Every clause earns its place.

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 zero-parameter read with no output schema, the description gives the key returned fields plus the transport (Termux:API), which is enough to call it correctly. It could go further by noting that the Termux:API companion app and permission are prerequisites and that the call fails otherwise.

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?

Zero parameters, so there is nothing for the description to disambiguate; baseline applies. No false parameter hints are introduced.

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?

Specific verb (return) plus resource (battery status) with the returned fields enumerated: percentage, charging state, temperature. It doesn't contrast itself with the closest sibling (system_info), which may also surface device-level data, so it stops short of a 5.

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?

Usage is only implied — an agent infers it should call this when it needs battery level or charging state. There is no explicit when-to-use / when-not, and no mention of preferring this over system_info or termux_api generically.

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

clipboard_getRead the Android clipboardA
Read-onlyIdempotent

Return the current Android clipboard text via Termux:API. Requires the termux-api package and Termux:API app.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so safety is covered. The description adds genuinely new behavioral context the annotations lack: the dependency on the termux-api package and companion app, i.e. the condition under which the call fails. It stops short of describing the empty-clipboard case or error payload.

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?

Two short sentences, zero waste: the action first, the prerequisite second. Every clause earns its place.

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 zero-parameter, annotation-rich tool with no output schema, the description covers what it does and what it depends on. The only remaining gap is what the return looks like when the clipboard is empty or the dependency is missing, which is minor given the tool's simplicity.

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 takes zero parameters, so there is nothing for the description to disambiguate; baseline is 4 by rule. No parameter claims are made or needed.

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 (return) and resource (current Android clipboard text), and the direction of the operation is unambiguous against the sibling clipboard_set. An agent can select it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for invocation via the stated prerequisite (termux-api package + Termux:API app), which is the main precondition an agent must check. It does not explicitly name clipboard_set as the alternative for writing, but the read/write split is self-evident from name and verb.

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

clipboard_setWrite the Android clipboardA
Idempotent

Set the Android clipboard text via Termux:API. Requires the termux-api package and Termux:API app.

NameRequiredDescriptionDefault
textYesText to place on the clipboard.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare the safety profile (not read-only, idempotent, non-destructive, open-world), so the description's real contribution is the runtime dependency on the termux-api package and app, which is genuine behavioral context an agent needs before calling. It stops short of describing failure behavior when the dependency is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero waste, with the action front-loaded and the prerequisite following. Nothing repeats structured data.

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 one-parameter write with a complete schema and full annotation coverage, the description supplies the critical missing piece (the Termux:API dependency) and nothing more is needed since there is no output schema. Minor gap: no mention of what happens if the dependency is absent.

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 coverage is 100% and the single 'text' parameter is fully documented in the schema, so the description does not need to restate it. Baseline 3 applies since the description adds no meaning beyond the 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?

States a specific verb and resource ('Set the Android clipboard text') plus the mechanism (Termux:API), making it immediately distinguishable from the clipboard_get sibling. It falls just short of a 5 because it doesn't explicitly frame itself against that sibling or state any scope limits.

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 prerequisites ('termux-api package and Termux:API app') imply when the call will succeed, but there is no guidance on when to prefer this over alternatives such as run_command or termux_api, nor any exclusions. Usage is implied rather than stated.

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

copy_pathCopy a file or directoryA

Copy a file or directory to another path. Directories are copied recursively; existing destinations require overwrite=true.

NameRequiredDescriptionDefault
sourceYesSource path.
overwriteNoReplace an existing destination. Default false.
destinationYesDestination path.

TDQS

A3.8/5.0
Behavior4/5

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

The annotations declare a non-read, non-destructive, non-idempotent mutation, and the description adds real information beyond them: directories are copied recursively, and an existing destination is protected unless overwrite=true, so the agent knows a default call fails rather than silently destroying data. It does not cover permissions, symlink handling, or error/return behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler, front-loading the core action and following with the two behavioral constraints that actually change how an agent calls it.

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 does not say what a successful copy returns (path, byte count, or nothing) or how failures are surfaced. Those are minor gaps for a three-parameter filesystem operation whose safety profile and recursion behavior are otherwise covered.

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 coverage is 100%, so source, destination, and overwrite (including its default) are already fully documented in the schema. The description's mention of overwrite=true reinforces the safety semantics but adds no syntax or format detail beyond the structured fields, so the baseline 3 applies.

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?

States a specific verb and resource ("Copy a file or directory to another path") that an agent can easily distinguish from write_file or edit_file. It does not explicitly name the nearest alternative (move_path), so differentiation is inferred rather than stated.

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 when the tool applies (copying a file or a whole directory tree) and gives a concrete prerequisite for overwriting. But it never contrasts with move_path or write_file, so an agent must work out for itself when copying is preferable to moving.

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

delete_pathDelete a pathA
Destructive

Delete a file, symlink or directory. Destructive: first call with dry_run=true to inspect the target, then call again with confirm="DELETE". The filesystem root / is always refused; all other paths are allowed subject to the Termux user's Android permissions.

NameRequiredDescriptionDefault
pathYesPath to delete.
confirmNoMust be exactly "DELETE" for a real deletion.
dry_runNoOnly report what would be deleted. Default false.
recursiveNoAllow deleting a non-empty directory. Default false.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true, readOnlyHint=false, and idempotentHint=false, but the description adds meaningful safety behavior beyond that: the mandatory dry-run inspection step, the required confirmation token, the hard refusal of /, and the dependence on Termux Android permissions. These are exactly the behavioral details an agent needs before invoking a destructive tool.

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?

Three tight sentences, front-loaded with the action and followed by the safety workflow and scope limit. No repetition, no filler, and the destructive nature is stated immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive filesystem tool with no output schema, this description covers what an agent needs: what gets deleted, the required safety dance, the root-path guard, and the permission model. The remaining parameter details (recursive) are fully documented in the schema.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds sequencing semantics for dry_run and confirm that the schema alone does not convey: dry_run is meant to be used first to inspect the target, and the second call must carry confirm="DELETE" rather than using dry_run. The recursive parameter is left to the schema, which is acceptable given full coverage.

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 opens with a specific verb and resource set ('Delete a file, symlink or directory'), immediately distinguishing it from siblings like copy_path, move_path, and mkdir. An agent knows exactly what this tool does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit two-step procedure (dry_run=true first, then confirm="DELETE") and names a hard refusal condition (root /). It doesn't mention alternatives such as move_path for non-destructive removal, so it falls short of full when/when-not/alternatives guidance, but the intended usage sequence is very clear.

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

edit_fileReplace text in a fileA
Destructive

Replace an exact string in a UTF-8 text file. By default old_string must occur exactly once; use replace_all to replace every occurrence. The file is written atomically.

NameRequiredDescriptionDefault
pathYesAbsolute path or path relative to $HOME.
new_stringYesReplacement text.
old_stringYesExact text to find.
replace_allNoReplace all occurrences. Default false.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is handled. The description adds non-obvious behavior the annotations do not: exact matching, the single-occurrence default that makes calls fail, and atomic writes. It does not cover file-not-found or permission errors, keeping it at 4.

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?

Three short sentences, front-loaded with the core operation, followed by the match constraint and the atomicity guarantee. Every sentence carries information an agent needs.

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?

With four fully documented parameters, annotations and no output schema, the definition covers what to send and the key failure mode (non-unique match). It leaves out edge cases like missing files or encoding problems, so it is not quite complete.

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?

Schema coverage is 100%, so the schema already explains each parameter. The description nonetheless adds meaning the schema lacks: the default requires a unique match, and replace_all is the escape hatch for multiple matches. That is real semantic value beyond the field docs.

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 opens with a precise verb+resource ('Replace an exact string in a UTF-8 text file'), which is specific enough to separate it from read_file or delete_path. It stops short of naming write_file, the closest sibling, so an agent must infer that whole-file overwrites belong there.

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?

It gives one real usage rule ('old_string must occur exactly once; use replace_all to replace every occurrence'), which is genuinely helpful. But it never says when to prefer this tool over write_file or how to handle the not-found/ambiguous-match failure case, so tool-selection guidance is only implied.

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

list_dirList a directoryA
Read-onlyIdempotent

List files and subdirectories with type, size, modification time and permissions. Symlinks are reported but not followed. Hidden entries are skipped unless show_hidden=true.

NameRequiredDescriptionDefault
pathNoDirectory path. Default $HOME.
max_entriesNoDefault 500.
show_hiddenNoInclude names starting with a dot. Default false.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description adds real behavioral detail: symlinks are reported but not followed, and dot-entries are excluded unless show_hidden=true. It omits what happens on a nonexistent path or when max_entries is hit (silent truncation vs error), which is the remaining meaningful gap.

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?

Three short sentences, front-loaded with what is listed and what is returned, then the two behavioral caveats. No filler or redundancy.

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?

With no output schema, the description usefully names the returned fields (type, size, modification time, permissions) and covers symlink and hidden-entry behavior. Truncation at max_entries and error conditions remain undisclosed, which is a modest but real omission for a listing tool.

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 100% and the description adds essentially nothing beyond it; the show_hidden note merely restates the schema default. It gives no additional meaning for max_entries, such as whether exceeding it truncates output or errors.

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?

States a specific verb (list) and resource (files and subdirectories) and enumerates the metadata returned, which distinguishes it from a search or stat tool. It does not explicitly contrast itself with siblings like search_files or stat_path, so an agent must infer that boundary.

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?

Usage is implied by the non-recursive, metadata-returning behavior, but there is no explicit statement of when to prefer this over search_files or stat_path, and no mention of prerequisites such as the path needing to exist and be readable.

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

mkdirCreate a directoryB
Idempotent

Create a directory. Parent directories are created by default.

NameRequiredDescriptionDefault
pathYesDirectory path.
recursiveNoCreate parents and tolerate an existing directory. Default true.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds one genuinely useful behavioral fact — that parent directories are created by default — but omits what happens when the target already exists and recursive is false (error vs. success) and any permission/auth requirements.

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?

Two short sentences, zero filler, with the core action front-loaded and the notable default behavior immediately after. Nothing is wasted.

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 two-parameter, non-destructive, idempotent filesystem tool with full schema coverage and no output schema, the description covers what it creates and the parent-directory default. The only real gap is failure behavior when the directory already exists with recursive=false, which is a minor omission.

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 100%, and the 'recursive' property already documents both 'Create parents' and 'Default true', so the description largely restates structured data. It adds no format, path-style, or absolute-vs-relative semantics beyond the 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?

The description states a specific verb and resource ('Create a directory'), which is unambiguous against filesystem siblings like delete_path, list_dir, or write_file. It does not explicitly name or differentiate itself from any sibling, but the operation is distinct enough that an agent would not confuse it.

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 gives no when-to-use guidance, no prerequisites (e.g., permissions), and never mentions alternatives. It does not say whether to prefer mkdir over letting write_file create parents, nor when recursive behavior should be turned off.

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

move_pathMove or rename a pathA
Destructive

Move or rename a file or directory. Existing destinations require overwrite=true. Cross-filesystem moves fall back to copy + delete.

NameRequiredDescriptionDefault
sourceYesSource path.
overwriteNoReplace an existing destination. Default false.
destinationYesDestination path.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, so the safety profile is known; the description adds genuinely new behavior by disclosing the cross-filesystem copy + delete fallback. It does not say whether the copy+delete path is atomic, whether overwritten data is recoverable, or what happens on partial failure.

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?

Three short sentences, zero filler, with the core action first and the two constraint statements after it. Nothing could be removed without losing information.

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 3-parameter mutation tool with no output schema, the description covers purpose, the overwrite gate, and the cross-filesystem fallback. Missing are failure/partial-failure behavior and return value, which matter for a destructive operation.

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 coverage is 100% and the schema already documents all three parameters, including overwrite's meaning and default. The description's 'existing destinations require overwrite=true' restates that rule in enforcement terms, but adds no syntax, path-format, or relative-vs-absolute detail beyond the 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?

States a specific verb and resource ('Move or rename a file or directory'), which is concrete and unambiguous. It does not explicitly distinguish itself from the neighbouring copy_path or delete_path tools, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Existing destinations require overwrite=true' gives a concrete conditional rule for a non-obvious parameter, which is real guidance. It never names an alternative tool (e.g. copy_path) or states when not to use this one, so exclusions are absent.

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

notifyPost an Android notificationA
Idempotent

Create an Android notification via Termux:API. Requires the Termux:API app and notification permission. Use a stable id to update an existing notification.

NameRequiredDescriptionDefault
idNoNotification id used for updates.
groupNoNotification group key.
soundNoPlay the notification sound.
titleNoNotification title.
contentNoNotification body.
ongoingNoMake the notification ongoing (not dismissible).
vibrateNoVibration pattern, e.g. "100,200,100".
priorityNoNotification priority.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly=false, idempotent=true, openWorld=true and destructive=false, so the safety profile is covered. The description adds genuinely new context: the external app dependency and the notification-permission requirement, plus the update-by-id behavior that explains the idempotent hint. It stops short of 5 only because failure modes (missing app/permission) are not described.

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?

Three short sentences with the core action front-loaded, followed by prerequisites and the id/update tip. No filler, and every sentence carries actionable information.

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?

All 8 optional parameters are schema-documented, the external dependency is disclosed, and no output schema exists so return values need not be explained. The only gap is that with zero required parameters it never says whether an empty call is valid or what a permission-denied call does, which is minor.

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 100%, so every one of the 8 parameters is already documented in the schema, which sets the baseline at 3. The description's note about reusing a stable id restates what the id parameter's own description ('Notification id used for updates') already says, adding no new semantics.

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 a specific verb and resource ('Create an Android notification') plus the mechanism ('via Termux:API'), so the action is unambiguous. It does not differentiate from the closest sibling, 'toast', which is another Android-side message-display tool, so it stops short of a 5.

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?

'Use a stable id to update an existing notification' is a concrete usage rule, and the Termux:API app + permission prerequisite is stated. However, there is no guidance on when to prefer this over toast/vibrate, or when not to use it, so usage is implied rather than fully specified.

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

openOpen a URL or file on AndroidA

Open an http(s) URL in the default browser, or open a local file with Android via Termux:API. Local paths are resolved on the device; Android permissions still apply.

NameRequiredDescriptionDefault
targetYeshttp(s) URL or local file path.
content_typeNoMIME type for local files, e.g. text/plain.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare openWorldHint=true and non-readonly/non-destructive behavior, and the description adds genuinely new context: paths are resolved on-device and Android permissions still apply, which warns of possible failure outside the tool's control. It doesn't describe what a success/failure response looks like, and there is no output schema to cover that gap.

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?

Two sentences, front-loaded with the primary URL case, then the file case, then the caveat. No filler.

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 two-parameter launcher, the description plus annotations cover mechanism, scope, and permission risk adequately. It could be more complete by noting that the open happens in an external app (no return value or confirmation from the tool).

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 100%, so both parameters are already documented with examples (the 'text/plain' MIME example for content_type). The description only implies the target accept-forms already stated in the schema and adds nothing about content_type handling.

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?

Specific verb + two concrete resources: 'Open an http(s) URL in the default browser, or open a local file with Android via Termux:API.' An agent immediately knows this launches external handlers rather than reading/returning content, which separates it from read_file or run_command.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage context by mapping each input form (http(s) URL vs. local path) to the resulting behavior, so an agent knows when this tool applies. It stops short of explicit exclusions, e.g. pointing to read_file when the goal is to inspect a file's contents rather than launch it.

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

read_fileRead a text fileA
Read-onlyIdempotent

Read a file from an allowed directory (home, shared storage or Termux tmp) as text. Supports line offsets and line numbering. Binary files must be read with encoding="base64". Large reads are limited by security.maxReadBytes.

NameRequiredDescriptionDefault
pathYesAbsolute path or path relative to $HOME.
limitNoMaximum number of lines to return. Default 2000.
offsetNoFirst line to return (1-based). Default 1.
encodingNoBuffer encoding, e.g. utf8, latin1, base64. Default utf8.
with_line_numbersNoPrefix every line with its line number.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the safety profile is covered. The description adds useful context beyond that: the directory allow-list, the security.maxReadBytes cap on large reads, and the binary/base64 requirement. What it omits is the actual consequence of hitting the cap (error vs. truncation) and the return shape.

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?

Four short sentences, front-loaded with the verb and scope, then the binary and size caveats. No filler or redundancy; each sentence carries an actionable constraint.

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?

There is no output schema, so the description should describe the return value, and it doesn't — an agent cannot tell whether content comes back as one string, whether line numbers are embedded in the text, or how a too-large read is reported. The input side is fully covered, but for a read tool the missing return semantics are a material gap.

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 100%, so every parameter is already documented in the schema. The description restates offsets and line numbering without adding format or edge-case detail (e.g. 1-based offsets, or interaction between limit and truncation). This is the baseline case where the schema carries the parameter burden.

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?

States a specific verb and resource ('Read a file ... as text') plus the scoping constraint (home, shared storage, Termux tmp). It is distinguishable from write_file/edit_file by the read framing, but it never explicitly contrasts with stat_path or list_dir, so sibling differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete usage rule — binary files must be read via encoding="base64" — and a precondition that the path must be in an allowed directory. It does not say when to prefer stat_path/list_dir instead of reading content, so the exclusions are only partial.

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

run_commandRun a shell command in TermuxA
Destructive

Run a command with bash -c as the Termux user and return exit code, stdout, stderr, duration and truncation flags. Use cwd for the working directory and timeout_sec for long jobs. There is no command allow list: the command runs with the full permissions of the Termux user. A non-zero exit code is returned as data, not as a tool failure. For long-running or interactive work use the task_* or terminal_* tools.

NameRequiredDescriptionDefault
cwdNoWorking directory. Default $HOME.
envNoExtra environment variables.
stdinNoText written to the command standard input.
commandYesShell command to execute with bash -c.
timeout_secNoTimeout in seconds. Default 120, max 600.

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the destructive/openWorld annotations: no command allow list, runs with full Termux user permissions, and non-zero exit codes come back as data rather than tool errors. The explicit statement that failures are data is exactly the kind of thing an agent cannot infer from annotations.

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?

Four tight sentences: behavior and return shape first, then the permissions caveat, then error semantics, then the alternative routing. No filler and nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description supplies the return fields (exit code, stdout, stderr, duration, truncation) and the error-handling contract. Combined with full schema coverage of the five parameters, an agent has everything needed to invoke it safely.

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 coverage is 100%, so cwd, timeout_sec, env and stdin are already documented. The description only echoes cwd and timeout_sec usage without adding format or interaction detail, so the baseline 3 applies.

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 a shell command via bash -c as the Termux user) and even enumerates the returned fields. An agent can distinguish it from read_file/write_file or terminal_* siblings without reading any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes long-running or interactive work to task_* or terminal_* tools, which is real when-to-use guidance. It does not say when to prefer file-oriented siblings (read_file, write_file, list_dir) over a raw shell command, so one gap remains.

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

search_filesSearch files by name or contentA
Read-onlyIdempotent

Recursively search below a root for files matching a glob and optionally a regular expression in their contents. Symlinks are skipped. Returns up to max_results matches.

NameRequiredDescriptionDefault
globNoGlob for names or relative paths, e.g. "*.js" or "src/**/*.ts". Default "*".
rootNoDirectory to search. Default $HOME.
queryNoRegular expression to match in file contents.
max_depthNoDirectory depth limit. Default 12.
max_resultsNoDefault 100.
case_sensitiveNoCase-sensitive content matching. Default true.
include_hiddenNoInclude hidden files and directories. Default false.
max_file_bytesNoSkip content search in larger files. Default 1 MiB.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish readOnly/idempotent/non-destructive, so the bar is lower, and the description still adds real behavior: symlinks are skipped and results are capped at max_results. It stops short of saying how truncation is surfaced or how results are ordered, which matters for a capped search.

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?

Three compact sentences, no redundancy, and the core semantics are front-loaded before the secondary caveats (symlinks, result cap). Every sentence carries distinct information.

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?

With 8 optional params, full schema coverage, and no output schema, the description covers the essential semantics an agent needs to select and call the tool. The remaining gap is the shape/ordering of returned matches, which a capped multi-mode search would ideally state.

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 100%, so every parameter including defaults is already documented in the schema, making 3 the baseline. The description only re-touches glob, query, and max_results in prose without adding format, precedence (glob vs. query), or interaction details beyond the 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?

Specific verb (recursively search) plus resource (files) and two matching modes (glob on names/paths, regex on contents), which is more precise than the title alone. It does not, however, explicitly distinguish itself from nearby siblings like list_dir or read_file, so the agent must infer the boundary.

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 phrase 'optionally a regular expression in their contents' implies the two usage modes (name-only glob vs. content grep), which is useful implied guidance. There is no explicit statement of when to prefer this over list_dir/read_file, nor any exclusion or prerequisite, so usage remains inferred rather than stated.

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

stat_pathInspect a pathA
Read-onlyIdempotent

Return stat information for a file, directory or symlink, including size, permissions, timestamps and the resolved real path.

NameRequiredDescriptionDefault
pathYesAbsolute path or path relative to $HOME.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered; the description's added value is the disclosure that symlinks are resolved to the real path. It says nothing about error handling for nonexistent or permission-denied paths, which is the remaining behavioral gap.

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 front-loaded sentence that declares the operation and enumerates return fields with zero filler. Nothing could be removed without losing information.

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?

With no output schema present, the description usefully enumerates the returned fields and notes real-path resolution. It is nearly complete for a trivial one-parameter read tool; only failure-mode behavior is absent.

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?

Only one parameter and schema description coverage is 100%, with the schema itself defining "Absolute path or path relative to $HOME." The description adds no path syntax, tilde handling, or edge-case guidance beyond that, so the baseline 3 applies.

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?

A specific verb ("Return stat information") applied to a specific resource (file, directory or symlink), plus an enumeration of the returned fields (size, permissions, timestamps, resolved real path). It does not name or distinguish itself from nearby siblings such as list_dir or read_file, so it stops short of a 5.

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?

Usage is only implied: the mention of "stat information" suggests metadata inspection as opposed to content reading, but there is no explicit when-to-use statement, no exclusion of list_dir/read_file, and no note about behavior on missing paths.

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

system_infoInspect the Termux/Android environmentA
Read-onlyIdempotent

Return device model, Android version, Termux paths, CPU/memory/load, storage usage, network interfaces and availability of common tools (node, python, git, tmux, Termux:API).

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds real value by disclosing the breadth of collected information, but says nothing about cost or latency (this likely shells out to many probes) or output size, which an agent planning repeated calls would want.

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 dense sentence with the returned data categories front-loaded and no filler; every clause maps to a distinct part of the response.

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?

With no output schema, the description must carry the return-value burden and largely does by enumerating the reported categories, which is enough for an agent to know whether this tool answers its question. It does not describe the shape of the returned data, which is a minor gap for a multi-section report.

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 input schema has zero parameters, so there is nothing for the description to document and the baseline of 4 applies.

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?

Uses a specific verb (Return) and enumerates the exact resources reported: device model, Android version, Termux paths, CPU/memory/load, storage, network interfaces, and tool availability. This clearly separates it from narrow siblings like battery_status or terminal_attach_info, though it never names those adjacent tools explicitly.

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?

There is no explicit when-to-use statement, no prerequisites, and no mention of alternatives such as battery_status for power details. A useful pre-flight-check use case is only inferable from the listed contents, not stated.

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

task_listList background tasksA
Read-onlyIdempotent

List background tasks with state, PID, exit code, log size and paths. Reads persisted metadata, so tasks started before a termux-mcp restart are included.

NameRequiredDescriptionDefault
limitNoMaximum tasks to return. Default 50.
include_finishedNoInclude finished tasks. Default true.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds real value beyond them: it reads persisted metadata, meaning tasks started before a termux-mcp restart still appear — a non-obvious trait an agent would otherwise guess wrong about.

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?

Two sentences, zero waste, with the core purpose front-loaded and the persistence caveat following. Every clause carries information the agent cannot get from annotations or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations covering the safety profile and a 100%-covered two-parameter schema, the only remaining gap is return shape — and the description compensates by naming the returned fields, so no output schema is needed. Nothing required for a correct call is missing.

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 100%, with limit (max 500, default 50) and include_finished (default true) fully documented in the schema. The description mentions no parameter behavior beyond that, so baseline 3 applies.

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 ('List') and resource ('background tasks') and enumerates the fields returned (state, PID, exit code, log size, paths). The resource domain is clearly distinct from siblings like terminal_list and task_output, so an agent can route without opening a schema.

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?

Usage is only implied: the description establishes this is the enumeration entry point for background tasks, but never says when to prefer it over task_output (read a single task's output) or terminal_list, nor any exclusions. The restart note is behavioral context, not selection guidance.

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

task_outputRead background task outputA
Read-onlyIdempotent

Read a task log, either the last N lines (default) or an incremental byte range via offset. Use wait_ms to wait for new output. The result includes next_offset for cheap incremental polling.

NameRequiredDescriptionDefault
idYesTask id returned by task_start.
offsetNoByte offset to read from. Omit to read the tail.
wait_msNoWait for new output or task exit. Default 0.
wait_forNoWith wait_ms: return on new output/exit (any) or only when the task exits. Default any.
tail_linesNoWhen reading the tail, number of lines. Default 200.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description adds genuinely new context by disclosing that the result includes next_offset, enabling cheap incremental polling. Without an output schema, this return-shape hint is exactly the value the description should supply.

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?

Three short sentences, front-loaded with the core action, then mode selection, then the polling tip. No filler; every sentence adds actionable information.

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?

Covers the calling model (tail vs. offset, blocking via wait_ms) and hints at the return value (next_offset) despite there being no output schema. A slightly fuller explanation of chaining next_offset back into offset would make it fully self-contained, but nothing an agent needs to call it correctly is absent.

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?

Schema coverage is 100%, so baseline is 3, but the description adds meaning beyond the schema by framing offset vs. tail as two alternative read modes and linking wait_ms to the wait-for-new-output behavior. The wait_for parameter and next_offset contract are only partially spelled out (e.g., no explicit tie between offset and next_offset chaining).

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?

States a specific verb+resource ('Read a task log') and immediately names the two read modes (tail lines / byte offset), which cleanly separates it from task_start, task_stop, task_list, and terminal_read. It stops short of explicitly naming those siblings, but the resource is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operational guidance: default is tail-of-log, offset for incremental reads, and 'Use wait_ms to wait for new output' for blocking/polling. No explicit when-not-to-use or named alternative, which keeps it below a 5.

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

task_removeRemove a finished taskA
DestructiveIdempotent

Delete the metadata, log, status and script files of a task that is no longer running.

NameRequiredDescriptionDefault
idYesTask id.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so safety is covered. The description adds valuable detail about exactly which files are removed (metadata, log, status, script) and the 'no longer running' condition, though it does not address irreversibility or permissions directly.

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 front-loaded sentence with zero waste. It states the action and the affected artifacts immediately.

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 one-parameter destructive tool with annotations covering the safety profile and full schema coverage, the description supplies the necessary context: what is deleted and the precondition. It could optionally mention that deletion is irreversible, but the annotations and scope make it sufficiently complete.

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?

There is one parameter ('id') and schema description coverage is 100%, so the schema already documents it. The description adds no parameter-specific syntax or constraints beyond what the schema provides, making the baseline 3 appropriate.

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 a specific verb ('Delete') and resource ('metadata, log, status and script files of a task'), making the operation clear. It does not explicitly distinguish itself from close siblings like task_stop or delete_path, so it falls short of a 5.

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 phrase 'task that is no longer running' implies a precondition for use, but the description does not state when to use task_remove versus task_stop or delete_path, nor does it give explicit exclusions. Usage is only implied.

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

task_startStart a background taskA
Destructive

Start a detached background shell command and return immediately with a task id, PID and log path. The task keeps running if termux-mcp restarts, and its exit code is persisted in a status file. Use task_output to read incremental output and task_stop to terminate it. Background tasks are non-interactive; use terminal_create for prompts and TUI programs.

NameRequiredDescriptionDefault
cwdNoWorking directory. Default $HOME.
envNoExtra environment variables.
nameNoOptional human-readable label.
commandYesShell command to run in the background.
wait_msNoWait this long before returning, so initial output/failures are visible. Default 0.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations, it discloses key behavior: the task is detached, returns immediately, survives termux-mcp restarts, and persists its exit code in a status file. It also warns that background tasks are non-interactive, which is important for correct invocation.

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 front-loaded with the core action and return behavior, then adds operational context and alternatives. Every sentence contributes useful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description appropriately explains the immediate return values: task id, PID and log path. It also covers lifecycle behavior, persisted exit codes, follow-up tools and the non-interactive boundary.

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 100%, so the schema already documents all five parameters. The description adds useful return-value context but does not meaningfully elaborate on parameter semantics 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 states a specific verb and resource: start a detached background shell command. It also distinguishes the tool from terminal_create by calling out non-interactive use and immediate return with a task id, PID and log path.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly names related tools for follow-up actions: task_output for reading output and task_stop for termination. It also gives a useful exclusion for prompts and TUI programs via terminal_create, though it does not explicitly compare against run_command for foreground execution.

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

task_stopStop a background taskA
Destructive

Send a signal to the task process group, wait for the grace period, then force SIGKILL if it is still alive. Defaults to SIGTERM.

NameRequiredDescriptionDefault
idYesTask id.
signalNoInitial signal. Default SIGTERM.
grace_msNoGrace period before SIGKILL. Default 3000.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, so the destructive profile is known; the description adds real value on top by disclosing the escalation behavior — signal the whole process group, wait a grace period, then force SIGKILL — which is exactly the risk an agent needs to understand. It leaves out what happens to the task's record and buffered output afterwards, which keeps it from a 5.

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?

Two tight sentences that front-load the kill sequence and end with the default. Nothing is repeated and nothing is padded.

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 destructive, non-idempotent operation with no output schema and full schema coverage, the description covers the mechanism and defaults adequately. It stops short of describing error conditions (unknown/already-exited task) or whether a follow-up task_remove is needed, which are the remaining gaps.

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 100%, so every parameter (id, signal enum, grace_ms bounds) is already documented in the schema. The description restates the SIGTERM default and the grace-period semantics but adds no new syntax or constraints beyond that, which is the baseline case for high coverage.

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 names a specific action (send a signal to the task process group, escalating to SIGKILL) on a specific resource, and the title/id make the target (a background task) unambiguous. It does not explicitly distinguish itself from task_remove or terminal_kill, but the mechanics described are distinctive enough to identify the tool.

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 explains how the stop happens but never says when to choose this over siblings like task_remove (which presumably cleans up the record) or terminal_kill (which targets terminals). There are no preconditions, no exclusions, and no mention of what to do if the task is already finished.

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

terminal_attach_infoShow how to attach to a sessionA
Read-onlyIdempotent

Return the tmux attach command for a session. Run it from a Termux terminal for direct human interaction; external Android apps should keep using terminal_read/terminal_write.

NameRequiredDescriptionDefault
sessionYesSession name.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description usefully adds that it only returns a command string rather than executing anything, plus the terminal environment requirement. It stops short of saying what happens for an unknown or dead session, which is the remaining behavioral gap.

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?

Two sentences, front-loaded with the return value and followed by environment guidance. No filler and nothing an agent must read past to act.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only helper with no output schema, the description tells the agent what comes back (a tmux attach command) and who should call it instead. Nothing needed to invoke it correctly is missing.

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?

The single 'session' parameter is fully documented in the schema at 100% coverage, so the baseline applies. The description's phrase 'for a session' adds no format, naming convention, or lookup behavior beyond what the schema already states.

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 and resource — returns the tmux attach command for a named session — and immediately contrasts it with terminal_read/terminal_write, so an agent can separate it from its closest siblings without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the condition for use (running from a Termux terminal for direct human interaction) and the condition against it (external Android apps should keep using terminal_read/terminal_write). That is a concrete when/when-not plus a named alternative.

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

terminal_createCreate an interactive terminal sessionA

Create a persistent interactive shell in tmux. Sessions survive termux-mcp restarts and can run REPLs, SSH, TUI programs and prompts. The shell defaults to $SHELL (Termux bash if unset); when bash is selected, startup files are skipped by default because a custom .bashrc can break Enter handling. Set use_rc=true or terminal.useShellRc in the config to load them. Use terminal_write to type and terminal_read to capture output.

NameRequiredDescriptionDefault
cwdNoWorking directory. Default $HOME.
envNoExtra environment variables.
colsNoTerminal width. Default 100.
nameNoSession name. Defaults to term-<timestamp>.
rowsNoTerminal height. Default 30.
shellNoShell or executable path. Default $SHELL or Termux bash.
use_rcNoLoad the shell startup files (.bashrc). Default false.
shell_argsNoExtra shell arguments.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only declare the safety profile (not read-only, open-world, non-idempotent, non-destructive); the description adds real behavioral context beyond that: sessions survive termux-mcp restarts, shell defaults to $SHELL/Termux bash, and bash startup files are skipped by default with the reason given. It does not cover what happens if a session name already exists, nor whether the caller must later use terminal_kill to clean up.

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?

Four sentences, front-loaded with purpose, then capabilities, then the shell/rc caveat, then next steps. No filler and no repetition of annotation or schema 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?

For an 8-parameter, all-optional creation tool with a nested env object and no output schema, the description covers purpose, persistence, and shell behavior well. The one notable omission is what the call returns (presumably the session name/id that terminal_write needs) and the fact that the default term-<timestamp> name makes retrieving that identifier important.

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?

Schema coverage is 100%, so baseline is 3; the description earns above baseline by explaining the rationale behind use_rc (a custom .bashrc can break Enter handling) and the config-level override terminal.useShellRc, which adds meaning the one-line schema description does not convey. It does not touch cwd, env, cols, rows, or shell_args, but those are already documented in 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?

States a specific verb and resource ('Create a persistent interactive shell in tmux') and immediately scopes it to REPLs, SSH, TUI programs and prompts, which separates it from one-shot command execution siblings like run_command. It also names terminal_write and terminal_read as the follow-on tools, so the agent can place this tool in the workflow without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear when-to-use context (persistent shell, REPLs, SSH, TUI) and explicitly routes to terminal_write/terminal_read for subsequent interaction. It does not explicitly say when NOT to use this versus run_command (e.g., for one-off commands), which is the main remaining gap.

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

terminal_killKill a terminal sessionA
Destructive

Kill one terminal session by name, or every session with all=true. Killing a session terminates its shell and any programs running in that pane.

NameRequiredDescriptionDefault
allNoKill every terminal session.
sessionNoSession name.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and non-idempotent, so the safety profile is covered. The description adds real consequence detail beyond that: the shell and any programs running in the pane are terminated, which tells the agent the blast radius extends past the session object.

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?

Two tight sentences, keyed on the parameter name, with the destructive consequence placed immediately after the invocation rule. Nothing redundant.

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 destructive two-parameter tool with full schema coverage and no output schema, the description covers selection and effect. Minor gaps remain: whether a missing session name errors, how a nonexistent session is handled, and whether running tasks are also affected.

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?

Schema coverage is 100%, so both parameters are already documented; the description adds the framing that 'session' and 'all' are alternative modes rather than combinable filters, which is meaning beyond the flat 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?

States a specific verb and resource ('Kill one terminal session by name') plus the alternate bulk mode, which cleanly distinguishes it from terminal_create, terminal_write, terminal_read and terminal_resize among the siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The two invocation modes are spelled out — name a session, or set all=true to kill everything — so an agent knows how to select behavior. It stops short of warning when not to use it (e.g. neither parameter supplied, or preferring task_stop for running tasks), so no explicit exclusions.

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

terminal_listList terminal sessionsA
Read-onlyIdempotent

List tmux-backed terminal sessions with size, current command, PID, alive/dead state and a command for attaching from a Termux terminal.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by disclosing the returned fields, including session state and an attach command, though it does not mention ordering or output format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the resource and then enumerates return values. No filler or repetition; every clause contributes useful information.

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?

With no parameters and no output schema, the description appropriately explains what is returned: session size, command, PID, state, and attach command. It is nearly complete for this simple read-only tool, though it omits ordering or whether all sessions are always included.

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; there are no parameter semantics to explain. The description does not need to compensate for any schema gaps.

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 ("List tmux-backed terminal sessions") and enumerates exactly what is returned, including size, command, PID, state, and attach command. This clearly distinguishes it from siblings like terminal_create, terminal_write, and terminal_kill.

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?

There is no explicit guidance on when to use this tool versus alternatives such as terminal_attach_info or terminal_read. The listing purpose is implied by the verb "List", but no when-to-use or when-not-to-use conditions are given.

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

terminal_readRead terminal outputA
Read-onlyIdempotent

Capture the visible screen and recent scrollback of a terminal session. Use expect with a regex to wait until a prompt or marker appears; if it does not match within timeout_ms, the result has expect_matched=false and timed_out=true. ANSI escapes are stripped by default. full_history=true captures the whole tmux history.

NameRequiredDescriptionDefault
ansiNoKeep ANSI escape sequences. Default false.
linesNoScrollback lines to capture. Default 120.
expectNoRegex to wait for in the captured output.
sessionYesSession name.
wait_msNoWait before the first capture.
timeout_msNoExpect polling timeout. Default 10000.
full_historyNoCapture the entire tmux history. Default false.
join_wrappedNoJoin wrapped lines (tmux -J). Default false.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/destructive=false, so the safety profile is covered. The description adds real behavioral detail: timeout yields expect_matched=false and timed_out=true, ANSI is stripped by default, and full_history pulls the entire tmux history. Possibly missing is pagination or capture size limits, but the core behavior is well disclosed.

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?

Four dense sentences, front-loaded with the core action, then the expect semantics, then two default-behavior notes. No filler or repetition of the title.

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?

With 8 parameters and no output schema, the description compensates by documenting the key return signals (expect_matched, timed_out) and default behaviors. Adequate for correct invocation; a note on what 'visible screen' vs lines bounds mean could add polish.

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?

Schema coverage is 100%, so baseline is 3; the description goes further by explaining the expect/timeout_ms interaction and the return flags it produces, plus the real effect of ansi and full_history. This adds meaning beyond the per-parameter schema text.

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?

States a specific verb and resource – 'capture the visible screen and recent scrollback of a terminal session' – which clearly separates it from terminal_write, terminal_create, and file reads. It does not explicitly name a sibling or state scope boundaries, but the operation is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete conditional guidance: 'Use expect with a regex to wait until a prompt or marker appears' and when to use full_history. This tells the agent when a parameter pattern applies, though it offers no explicit exclusions or alternatives (e.g. vs read_file or task_output).

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

terminal_resizeResize a terminal sessionA
Idempotent

Resize the tmux window/PTY used by a terminal session. Useful before launching TUI programs.

NameRequiredDescriptionDefault
colsYesWidth in columns.
rowsYesHeight in rows.
sessionYesSession name.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that resizing affects the tmux window/PTY of a named session, which is useful beyond the annotations, but it does not say what happens to output or programs already running in the session, nor whether the session must already exist.

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?

Two tight sentences with zero filler; the core action is front-loaded and the usage hint follows. Nothing could be removed without losing information.

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?

All parameters are documented and annotations cover safety and idempotency, so the basics are present. For a tool that mutates a live PTY, however, the description omits what happens to in-flight output or running applications and whether a nonexistent session errors, leaving it adequate but with clear gaps.

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 100% and all three parameters carry both descriptions and value bounds, so the schema does the heavy lifting. The description adds no syntax, format, or defaults beyond what is already structured.

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?

States a specific verb and resource: resizing the tmux window/PTY backing a terminal session. It is clearly distinct from sibling tools like terminal_create, terminal_write, and terminal_read. It stops short of explicitly naming how it differs from those siblings, but the action is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Useful before launching TUI programs" gives an explicit, actionable usage context rather than leaving it implied. There are no exclusions or when-not-to-use conditions, and no mention of how to discover current dimensions before resizing.

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

terminal_writeType into a terminal sessionA

Send literal text, special key names, and/or Enter to a terminal session. Multi-line or large text is pasted through a tmux buffer by default; set paste=false to force literal send-keys. Key names use tmux notation: Enter, Tab, Escape, Up, Down, Left, Right, C-c, C-d, M-x, F1, etc. Set wait_ms to return a capture in the same call.

NameRequiredDescriptionDefault
keysNotmux key names, e.g. ["C-c"] or ["Tab","Enter"].
inputNoLiteral text to type or paste.
pasteNoForce bracketed paste. Default: auto for multi-line/large input.
submitNoSend Enter after the input/keys. Default false.
sessionYesSession name.
wait_msNoWait before capturing output. Default 0.
read_linesNoLines captured when wait_ms > 0. Default 80.

TDQS

A3.8/5.0
Behavior4/5

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

Goes beyond the annotations by disclosing the tmux-buffer paste default for multi-line/large text, the paste=false override, the tmux key-notation convention, and that wait_ms yields a capture in the same call. It does not say what happens on a missing/dead session or whether the call blocks, but the important write-path behavior is covered.

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?

Four front-loaded sentences, each carrying distinct information (what it sends, paste default, key syntax, wait_ms capture). No filler or repetition of the title.

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 7-parameter mutating tool with no output schema, the description covers the main behavior paths and the capture-in-same-call return mechanism. Minor gaps remain around failure modes (invalid session) and interaction between submit and keys, but nothing needed for a correct basic call is missing.

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?

Schema coverage is 100%, so the baseline is 3; the description earns an extra point by adding the tmux key notation vocabulary (C-c, M-x, F1) and the auto-paste condition for multi-line/large input, which clarify how keys/paste/input interact beyond the terse schema strings.

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?

States a specific verb (send) and resource (literal text, key names, Enter to a terminal session), which is clearly distinct from terminal_read and terminal_create. It does not explicitly contrast with run_command, the nearest sibling that also executes things in a session, so a 4 rather than a 5.

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 (type/paste into an existing session) and explains the paste vs literal send-keys choice, but never says when to use this instead of run_command or when to prefer terminal_read. No explicit alternatives or exclusions are named.

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

termux_apiRun a raw Termux:API commandA
Destructive

Advanced escape hatch: run any termux-* command directly (for example command="wifi-connectioninfo", args=["-i"]). No shell is involved, but the command still has the full permissions granted to Termux:API. Privacy-sensitive commands such as SMS, calls, contacts, location, camera and microphone are available if the Termux:API app has been granted those Android permissions; every call is written to the audit log.

NameRequiredDescriptionDefault
argsNoCommand arguments. No shell expansion is performed.
stdinNoText written to standard input.
commandYesCommand name with or without the termux- prefix, e.g. "wifi-connectioninfo".
timeout_secNoTimeout. Default from config.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already flag destructive/openWorld/non-idempotent, and the description adds valuable context beyond them: no shell involvement, that commands inherit full Termux:API permissions, permission-gating for SMS/location/camera/mic, and that every call is audit-logged. It doesn't state concrete side effects or rollback for destructive commands, keeping it below a 5.

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?

Front-loads the core purpose and example, then consolidates permissions/audit caveats efficiently. Slightly dense run-on sentence structure but no wasted 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?

For a raw escape-hatch tool with no output schema and full schema coverage, the description covers permissions, shell behavior, and audit logging. It leaves return-value shape unspecified, but the escape-hatch nature makes that a minor gap.

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 coverage is 100%, so all four parameters are already documented. The description adds a concrete usage example (command='wifi-connectioninfo', args=['-i']) and reinforces that no shell expansion happens, but this is a minor supplement over the schema baseline.

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 any termux-* command directly') and frames it as an 'advanced escape hatch', which implicitly distinguishes it from the shell-executing run_command sibling. An agent knows exactly what this does versus the higher-level tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'advanced escape hatch' framing signals this is a fallback for cases not covered by dedicated tools, and the privacy-sensitive command list hints at when extra care is needed. It stops short of explicitly naming when to prefer system_info/run_command instead.

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

toastShow an Android toastB

Show a short toast message on the device via Termux:API.

NameRequiredDescriptionDefault
textYesToast text.
shortNoUse the short toast duration. Default true.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so safety is covered. The description adds the real behavioral detail that delivery goes through Termux:API, implying an external dependency, but says nothing about failure modes when the API app is missing or whether the call blocks.

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 front-loaded sentence with zero filler; every clause (action, target, mechanism) earns its place.

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?

For a trivial two-parameter side-effect tool with full schema coverage and annotations, the description is nearly sufficient. It omits the one thing an agent might need to know operationally: that it depends on the Termux:API add-on being installed and functional.

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 coverage is 100%: both text (1-500 chars) and the short boolean default are fully documented in the schema. The description adds nothing beyond that, which is acceptable given the schema does the work, so baseline 3 applies.

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?

States a specific verb and resource ("Show a short toast message on the device") and names the transport (Termux:API). It does not, however, distinguish itself from close siblings like notify, vibrate, or tts_speak, which an agent could easily confuse it with.

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?

There is no guidance on when to use a toast versus notify or tts_speak, and no mention of prerequisites (Termux:API app installed, foreground app visibility). Usage is only implied by the name and the word "short".

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

tts_speakSpeak text with Android TTSC

Speak text aloud using the Android text-to-speech engine via Termux:API.

NameRequiredDescriptionDefault
rateNoSpeech rate. Default 1.
textYesText to speak.
pitchNoSpeech pitch. Default 1.
languageNoBCP-47 language tag, e.g. en-US or zh-CN.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, openWorldHint=true, destructiveHint=false, so the description should add context the annotations cannot convey. It says nothing about whether the call blocks until speech finishes, how long a 4000-character utterance takes, that the Termux:API package must be installed, or what a failure looks like. It largely restates the title.

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?

A single front-loaded sentence with no filler. It is efficient, though the brevity shades into under-specification for a tool that produces spoken output with timing side effects.

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?

The schema fully documents the four parameters and there is no output schema, so the input contract is covered. What is missing is behavioral context an agent needs — blocking duration, dependency on termux-api, and whether audio plays locally only — which matters for an open-world, non-idempotent side-effecting tool.

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 100% — text, rate, pitch, and language each carry bounds and defaults ('Default 1', BCP-47 example 'en-US'). The description adds nothing about parameters, so the baseline 3 applies.

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?

Names a specific verb ('Speak text aloud') and a specific resource/engine ('Android text-to-speech engine via Termux:API'), which separates it from audio-adjacent siblings like notify, toast, and vibrate. It stops just short of a 5 because it never explicitly says how it differs from those siblings or what happens to the audio.

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?

There is no when-to-use guidance and no named alternative. An agent must infer that this is for spoken output rather than toast/notify/vibrate notifications, and nothing tells it whether this is appropriate for long text, blocking callers, or repeated invocations.

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

vibrateVibrate the deviceB

Vibrate the device for the given duration via Termux:API.

NameRequiredDescriptionDefault
forceNoVibrate even in silent mode.
duration_msNoDuration in milliseconds. Default 300.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnly=false, idempotent=false, destructive=false, openWorld=true, so the safety profile is covered. The description adds one piece of useful context beyond that: the dependency on Termux:API. It says nothing about blocking behavior or failure when Termux:API is unavailable.

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 front-loaded sentence with zero filler; the action and the controlling parameter lead the sentence.

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 two-optional-parameter side-effect tool with full schema coverage and a complete annotation set, this is largely sufficient. The only meaningful gap is what happens if Termux:API isn't present, which an agent might need.

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 100%, documenting both `duration_ms` (with min/max and default 300) and `force` (silent-mode override). The description adds no meaning beyond that, so baseline 3 applies.

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?

States a specific verb and resource ('Vibrate the device') plus the duration scope and the underlying mechanism (Termux:API). It is clear what the tool does, though it doesn't explicitly contrast with sibling output tools like notify or toast.

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 versus notify/toast/tts_speak, and no prerequisites stated (e.g. Termux:API must be installed). The agent must infer the usage context entirely.

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

write_fileWrite or append to a fileA
Destructive

Create, overwrite or append to a text file inside an allowed directory. Writes are atomic for overwrite mode. Parent directories can be created automatically. Content is returned as a small JSON summary.

NameRequiredDescriptionDefault
pathYesAbsolute path or path relative to $HOME.
appendNoAppend instead of overwriting. Default false.
contentYesFile content.
encodingNoEncoding of content. Default utf8. Use base64 for binary.
create_parentsNoCreate missing parent directories. Default true.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, and the description reinforces this by flagging overwrite semantics without contradicting them. It adds genuinely non-structured context: atomic writes for overwrite mode, automatic parent directory creation, and that a small JSON summary is returned.

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?

Four short sentences with no filler, and the most important information (create/overwrite/append into an allowed directory) is front-loaded. Slightly episodic but every sentence carries information.

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 mutation tool with no output schema, the description covers the destructive overwrite behavior, atomicity, directory creation, and return shape. The main remaining gap is guidance on choosing it over edit_file.

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 100%, so all five parameters are already documented, and the description adds only a loose reference to parent directory creation. It contributes no syntax, defaults, or edge-case behavior beyond what the schema states.

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 names concrete verbs (create, overwrite, append) against a specific resource (text file) and adds a scoping constraint (inside an allowed directory). It does not differentiate from the closely related edit_file sibling, so an agent must still infer which write tool to pick.

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?

Usage is implied by 'create, overwrite or append' and the allowed-directory constraint, but there is no explicit when-to-use or when-not guidance. Nothing tells the agent to prefer edit_file for in-place changes or read_file/stat_path for verification.

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.

  1. 33 tool updatesv1.0.0
    • First observedbattery_status
    • First observedclipboard_get
    • First observedclipboard_set
    • First observedcopy_path
    • First observeddelete_path
    • First observededit_file
    • First observedlist_dir
    • First observedmkdir
    • First observedmove_path
    • First observednotify
    • First observedopen
    • First observedread_file
    • First observedrun_command
    • First observedsearch_files
    • First observedstat_path
    • First observedsystem_info
    • First observedtask_list
    • First observedtask_output
    • First observedtask_remove
    • First observedtask_start
    • First observedtask_stop
    • First observedterminal_attach_info
    • First observedterminal_create
    • First observedterminal_kill
    • First observedterminal_list
    • First observedterminal_read
    • First observedterminal_resize
    • First observedterminal_write
    • First observedtermux_api
    • First observedtoast
    • First observedtts_speak
    • First observedvibrate
    • First observedwrite_file

TDQS

A3.6/5.0

Scored across 33 tools

Disambiguation4/5

Descriptions do a strong job of routing between overlapping entry points: run_command vs terminal_* vs task_* is explicitly explained, and termux_api is framed as an escape hatch for the specific termux-api wrappers. Minor overlaps remain (terminal_attach_info duplicates the attach command already returned by terminal_list, and termux_api can do everything the specific Android tools do), but they are deliberate conveniences rather than confusion.

Naming Consistency4/5

Strong grouping via prefixes (terminal_*, task_*, clipboard_*) and mostly verb_noun naming (read_file, list_dir, task_start, move_path). Deviations: clipboard_get/set use noun_verb ordering while the majority use verb_noun, and a handful are bare verbs (open, toast, notify, vibrate, mkdir) with no consistent noun.

Tool Count3/5

33 tools is at the high end; however the surface is genuinely broad, spanning filesystem CRUD, tmux terminals, background tasks, Android Termux:API, and system info, and the tools are cleanly clustered by subsystem. Each group earns its tools, but an agent must scan a large menu and the count exceeds the comfortable 3-15 range.

Completeness5/5

Lifecycle coverage is thorough in every subsystem: filesystem has read/write/edit/delete/mkdir/copy/move/list/stat/search; terminals have create/write/read/list/resize/kill/attach; tasks have start/list/output/stop/remove; Android has clipboard, notifications, toast, vibrate, open, battery, TTS plus an escape hatch. No obvious dead ends, with run_command and termux_api filling residual gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides Android device and Termux capabilities to RikkaHub via a local MCP server, enabling device info, battery, power sampling, package installs, proot-distro management, brightness/volume control, and optional command execution.
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    A secure MCP gateway for Termux that exposes filesystem, shell, and Termux:API tools over a local HTTP endpoint with admin controls, job management, and upstream support.
    1
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables LLM agents to remotely perform Termux/Android operations through a hosted MCP endpoint, including device status checks, shell command execution, and package management.
    7 npm
    1
    MIT