ascript-mcp
Provides tools for automating Android devices including screen capture, UI tree analysis, OCR, color matching, project deployment, and device management through AScript API integration.
Provides tools for automating iOS devices (without jailbreak or signing) including screen capture, UI tree analysis, OCR, color matching, project deployment, and device management through AScript API integration.
Provides access to YOLO plugins through AScript's online plugin library for computer vision and object detection capabilities in device automation workflows.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ascript-mcpscan for connected devices and show me the screen of the first Android phone"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ascript-mcp
Chinese | English
AScript MCP Service — Allows AI programming tools (Claude Desktop / Cursor / Trae) to directly query AScript API documentation and control real Android / iOS devices (iOS requires no signing or jailbreaking).
Features
API Documentation Query: Module overview, API search, code examples, and environment setup guides
Online Plugin Query: Real-time query of the AScript plugin library (OCR, YOLO, HID, LLMs, etc.)
Device Interaction: Screenshots, UI trees, OCR, color finding, color comparison, and selector testing
Development & Deployment: Create projects, upload code, run, stop, and view logs
Device Management: LAN scanning, ADB scanning, and automatic connection
Related MCP server: magic-api-mcp-server
Installation
pip install ascript-mcpConfiguring Cursor
1. MCP Configuration
Create .cursor/mcp.json in the project root directory:
{
"mcpServers": {
"ascript": {
"command": "python",
"args": ["-m", "ascript_mcp.local"]
}
}
}2. Rule Configuration
Copy the entire docs/AGENT_RULES.md into the .cursorrules (for Cursor) or CLAUDE.md / AGENTS.md (for Claude Code / other IDEs) in your automation project root.
This rule template includes:
5-stage standard workflow (Observe → Select Strategy → eval_python iteration → Crop if necessary → Upload and Run)
Decision tree for API selection (UI controls → OCR → Image search → Color search)
Orchestration examples for common tasks like auto-login, check-in, and game combat
Anti-pattern list (guessing code, running without verification, hardcoding non-existent image paths, etc.)
Simplified rules (use only if you don't want to copy the full rules):
当用户需要编写设备自动化脚本(Android/iOS/Windows)时,必须先调用 ascript MCP 的 get_device_status 与 list_python_packages,再用 eval_python 在设备 REPL 里 验证关键代码片段,最后才 upload_file + run_project。 禁止凭记忆编写 ascript 代码。
Tool List
API Documentation (5)
Tool | Description |
| Get platform API module overview |
| Get detailed module API documentation |
| Search for APIs by keyword |
| Get code examples |
| Get environment setup guide |
Online Plugins (2)
Tool | Description |
| Query plugin library list |
| Get detailed plugin documentation |
Device Connection (5)
Tool | Description |
| Automatically connect to devices from project configuration |
| Scan LAN + ADB devices |
| Manually connect to a specified device |
| Get full device running status (running mode/permissions/screen/battery/memory/running scripts, etc., Android only) |
| List third-party Python libraries installed on the AScript App (Android + iOS) |
Observation Interface (6)
Tool | Description |
| Capture device screen |
| Get UI control tree |
| Test if a selector matches |
| Screen text recognition |
| Multi-point color search |
| Multi-point color comparison |
Development & Deployment (7)
Tool | Description |
| Create a project on the device |
| Upload files to the device (automatically creates project) |
| Run project |
| Debug mode run (Android + ADB), automatically forwards port 5678 and returns VS Code attach configuration |
| Stop project |
| Get running logs |
| Device Python REPL (Android + iOS): Execute code directly in the main process to get results immediately, with a cycle of a few hundred milliseconds. Suitable for exploratory debugging, complex decision-making, and custom workflows (SoM/intelligent tap/auto-cropping templates, etc.). iOS automatically translates |
File Management (2)
Tool | Description |
| List projects on the device |
| Get project file tree |
Online SSE Mode
If you need to deploy as a public service (API documentation query only):
uvicorn ascript_mcp.server:app --host 0.0.0.0 --port 8000License
MIT License, see LICENSE for details. Copyright © 2026 Beijing Aoyue Technology Co., Ltd.
More Information
AScript Official Website: https://ascript.cn
API Documentation: https://docs.airscript.cn
Plugin Library: https://py.airscript.cn
Community Forum: https://bbs.ascript.cn
Beijing ICP Filing No. 2020040944-4
Available Tools
29 toolsauto_connectA
从当前 AScript 工程目录自动连接设备。 读取 .vscode/settings.json 中的 ascript.deviceId 和 ascript.platform,自动连接对应设备。 VSCode 插件创建工程时会保存这些信息,无需用户手动输入 IP。 传入当前工程的根目录路径即可。
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes | AScript 工程根目录的绝对路径 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the file reading behavior and the automatic nature. It does not cover error cases (e.g., missing settings.json), but for a simple connector, it is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three short sentences, each adding necessary information: purpose, mechanism, and rationale. No redundancy or fillers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter, no output schema, and a simple action, the description covers the core functionality. It could mention expected outcomes or errors, but remains sufficiently complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'project_path' is described in the schema as the absolute path. The description adds value by explaining it is used to locate the .vscode/settings.json for automatic connection, going beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: automatically connect to a device using settings from the AScript project directory. It specifies the resource (device) and the mechanism (reading .vscode/settings.json), which distinguishes it from the sibling 'connect_device' that likely requires manual input.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool: when you have an AScript project created by the VSCode plugin, and it avoids manual IP entry. However, it does not explicitly mention the alternative 'connect_device' or when not to use this tool, though the context implies it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_colorsB
多点比色:检查屏幕指定位置的颜色是否匹配。 返回布尔值。用于判断界面状态。
| Name | Required | Description | Default |
|---|---|---|---|
| colors | Yes | 颜色描述,如 '100,200,#FF0000|102,200,#00FF00' | |
| diff | No | 相似度阈值,默认 0.9 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description states returns boolean but does not mention prerequisites (e.g., connected device), side effects, or whether it captures screen or uses existing data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two simple sentences front-loading the action and purpose. No redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers basic purpose and return type but lacks context on prerequisites, alternate tools, or detailed behavior. Adequate for the tool's simplicity but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%. Description adds an example for 'colors' parameter, enhancing understanding beyond the schema. 'diff' parameter is well-described in schema. Overall, moderate added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool compares colors at multiple screen positions, returns boolean, and is used for UI state determination. It distinguishes from siblings like 'find_colors' which likely searches for colors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only a brief hint ('用于判断界面状态') about usage. No explicit when-to-use or when-not-to-use compared to alternatives like 'find_colors', 'ocr', or 'dump_ui_tree'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_deviceA
连接 Android/iOS 设备。连接后才能使用截图、控件树等设备工具。 局域网设备传 IP,ADB 设备传序列号并设 connection_mode='ADB'。
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes | 设备 IP 地址(局域网)或 ADB 序列号 | |
| port | No | 设备端口,默认 9096(ADB 模式忽略此参数) | |
| password | No | 设备密码(公网模式下需要),默认为空 | |
| connection_mode | No | 连接方式:LocalIP(默认,局域网)或 ADB(USB) | LocalIP |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of behavioral disclosure. It reveals that the tool establishes a connection and enables further device operations, but it does not disclose non-obvious behaviors such as whether it modifies the device's state, requires specific permissions, or handles errors. The absence of details about side effects or failure modes limits transparency. While not incorrect, it could be more explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences in Chinese that convey the purpose and basic usage instructions. The first sentence introduces the tool's function, and the second provides parameter guidance. No unnecessary words or redundant information. This structure efficiently communicates the essential information without burdening the agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema, the description should ideally explain what the tool returns (e.g., connection ID or success status). It does not mention return values or error handling. However, the description covers the core usage pattern and prerequisites. Sibling tools like 'get_device_status' and 'observe_device' imply that connection is a prerequisite, and the description reinforces that. The missing return value info is a minor gap but does not severely impair usability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% description coverage for all four parameters, including default values and enums. The description adds marginal value by stating that the port is ignored in ADB mode and clarifying the required format for 'ip' (IP for LAN, serial for ADB). However, this is already implied by the schema's parameter descriptions. Thus, the description does not significantly enhance understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: connecting Android/iOS devices as a prerequisite for using other device tools like screenshots and UI trees. It distinguishes the tool from siblings by specifying that it is the initial connection step, and it contrasts with tools like 'auto_connect' which might automate the process. The verb 'connect' and resource 'device' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool: before using device-specific tools (screenshots, control tree). It provides guidance on parameter usage: for LAN devices pass IP, for ADB pass serial number and set connection_mode='ADB'. However, it does not mention when not to use this tool or provide alternatives; the sibling list includes 'auto_connect' which may be an alternative in some scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectA
在设备上创建新工程。上传文件前需要先创建工程。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | 工程名称(英文/数字/下划线) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It fails to disclose behavioral traits such as whether the tool requires a connected device, what happens if the project name already exists, or whether it has side effects on existing data. The description is too brief.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with one short sentence, front-loading the core purpose. However, it could include more detail without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one required parameter, no output schema), the description barely meets the minimum viable. It lacks information about return values, failure conditions, or naming constraints beyond the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a description for the single parameter 'name'. The description adds no additional meaning beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('创建新工程') and the context ('在设备上'), and distinguishes from siblings like upload_file which requires a project to already exist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context for when to use this tool: before uploading files. It implies a prerequisite but does not explicitly state alternatives or when not to use it, missing a full 'when-to-use vs alternatives' guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_and_runA
一步完成开发验证循环:上传代码 → 运行 → 收集日志 → 截图验证。 代码会上传为 init.py(入口文件),工程不存在时自动创建。 返回上传结果、运行结果、日志内容和运行后截图。
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | Yes | 工程名称 | |
| code | Yes | Python 脚本代码内容 | |
| log_seconds | No | 收集日志的秒数,默认 5 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that code is uploaded as __init__.py and projects are auto-created. However, it does not mention side effects like overwriting existing files or potential failures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two sentences that first state the main loop (upload→run→logs→screenshot) then detail specifics (upload as __init__.py, auto-create project, return values). No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multi-step) and the absence of an output schema, the description covers the workflow and return values reasonably. It could be improved by mentioning behavior for existing projects and error handling, but is largely complete for a dev loop tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so parameters are documented. The description adds context that code is uploaded as an entry file and that projects are auto-created, which adds meaning beyond the schema. It does not elaborate on the project_name parameter's relation to existing projects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: uploading code, running it, collecting logs, and taking a screenshot in one step. It distinguishes from sibling tools that only handle individual steps (upload_file, run_project, screen_capture, get_run_log).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for rapid development loops but does not explicitly state when to use this tool versus alternatives. It mentions auto-creation of missing projects but lacks clear when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dump_ui_treeA
获取设备当前界面的控件树(UI 层级结构)。返回所有控件的 id、text、desc、className、rect、clickable 等属性。
【Android】调用前必须先调 get_device_status 确认 run_mode,再选对应 mode,否则拿空树:
run_mode.code=accessibility(无障碍模式)→ mode=0/1(简单/复杂),或 2/3(过滤系统层变种)
run_mode.code=root(Root 或激活模式) → mode=9(root 控件)
run_mode.code=hid(HID 控件 / 辅助控件模式)→ mode=6(辅助控件)
run_mode.code=screen_only(图色模式) → 无控件树,跳过 dump,走 OCR/找图 ⚠ Android 命名陷阱:code="hid" 实际是 ASS 枚举(辅助控件,有控件树);code="screen_only" 才是图色模式(无控件树)。 Selector 实例化要传相同的 mode:node.Selector(mode=<dump 的 mode>)。
【iOS】只有 WebDriverAgent 一套引擎,不接 mode 参数(传了被忽略),返回 WDA XML。iOS Selector() 也不接 engine mode;它的 MODE_EQUAL/CONTAINS/MATCHES 是给单个条件的匹配运算符(如 selector.text("x", mode=MODE_CONTAINS)),别和 Android 混。
【写 selector 必看】控件树里有 text/id/desc/className 等属性的元素,必须用 node.Selector() 通过属性定位操作,不要用坐标点击。坐标只用于控件树中确实没有任何可识别属性的元素。 Selector 实例化时也要传相同的 mode:node.Selector(mode=<dump 的同一个 mode>)。
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | 控件检索模式(Android),对应 get_device_status 返回的 run_mode.code: 0 = 无障碍 - 简单(仅重要控件,run_mode=accessibility 时常用) 1 = 无障碍 - 复杂(所有控件含布局节点) 2 = 无障碍 - 简单 + 过滤系统层(状态栏/导航栏,推荐) 3 = 无障碍 - 复杂 + 过滤系统层 6 = 辅助控件(run_mode=hid 时用,对应 Selector.MODE_ASS) 9 = Root 控件(run_mode=root 时用,对应 Selector.MODE_ROOT) Selector 类常量:MODE_ACC_SIMPLE=0 / MODE_ACC_ALL=1 / MODE_ASS=6 / MODE_ROOT=9。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that Android requires mode matching, iOS ignores mode, and that certain run_modes yield empty trees. Warns about the 'hid' naming trap. No annotations provided, so description carries full burden and does so thoroughly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is lengthy but well-organized into sections (Android, iOS, selector notes). Each section earns its place. Could be slightly more concise, but the complexity warrants the detail. Structure aids readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive coverage: explains return attributes, platform behavior, empty tree conditions, and how to use Selector. No output schema, but description conveys enough about return format. Fills all gaps given tool complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with detailed mode descriptions. The description adds value beyond schema by linking modes to device status, naming constants, and explaining platform differences. Some repetition of schema info, but overall adds context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool retrieves the UI control tree (hierarchy) of the current device interface, listing properties like id, text, desc, className, rect, clickable. Distinguished from siblings like scan_devices and screen_capture.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit prerequisites: call get_device_status first. Maps run_mode codes to mode parameter values. Differentiates Android vs iOS handling. Tells when not to use (screen_only mode) and warns about naming pitfalls. Includes Selector usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eval_pythonA
在设备主进程的 Python 上下文中直接 exec 任意代码,立即返回结果(Android + iOS)。 几百毫秒一轮,不需要 upload_file/run_project,适合:
探索性调试:试 selector / 找图 / OCR / 找色 / 一次点击
复合决策:把'看屏幕→判断→点击'打包一段 Python 一次执行
自动裁模板、SoM 标注、智能 tap 路由
任意一次性同步 API 调用:action.click / slide / Selector(任何 mode) / Permission / KeyValue / Sms / Clipboard 等
Android 主进程 client 已本地 stub 化(App.java onCreate 时 bindClient),所有原本走 :py 进程 IPC 的 API 现在 eval 里也能直接调。
⛔ 红线:eval 代码无法外部中断!HTTP 60s 超时只断客户端连接,服务端 Python 仍在跑直到自然返回;卡住 = 整个 App UI 冻住。所有循环必须 range/deadline 限定, sleep ≤ 5s,try/except 整段。超过 30s 的逻辑改用 upload + run_project(可被 stop_project kill)。
⚠ 仍需谨慎的场景:
长循环 / 耗时 > 30s:用 upload+run_project
回调注册(event.on / sensor.on):register 能调用,但 eval 返回时 _result 已定,回调触发的数据拿不回 — 持续监听必须用 upload+run_project
长 session(cloud_control 连云、ESP32 BLE HID 持久会话):建议用工程模式
完整指南见 docs/AGENT_EVAL_GUIDE.md。
代码必须把结果赋给 _result 全局变量。返回值约定:
简单字符串:_result = 'ok'
结构化数据(推荐):_result = json.dumps({'found': True, 'x': 320})
含截图返回:_result = json.dumps({'data': {...}, 'image_base64': '...'}) (MCP 自动识别 image_base64 字段并以图片形式返回给 AI 多模态查看)
image_path 非空时 App 会注入 _im_source 全局变量指向该图片路径; iOS 上若代码中引用 img 变量,会被预读为 cv2 ndarray。
跨平台:iOS 端会自动把 ascript.android. 替换为 ascript.ios.,
并预加载 cv2 / np / Image (PIL) 到执行环境,常用片段几乎无需修改。
完整 API 参见 search_api / get_module_apis(按 platform 选择)。
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | 要执行的 Python 代码。必须将结果赋给 _result 变量。 | |
| image_path | No | 可选:传入已有图片路径,App 会注入为 _im_source 全局变量。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses all critical behaviors: code execution cannot be interrupted, HTTP 60s timeout only disconnects client but server continues, UI freezes if code hangs, platform-specific modifications (iOS replaces ascript.android), image_path injection, and return value conventions. Since no annotations are provided, the description fully covers the behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured with clear sections (use cases, red lines, caution notes, return conventions, cross-platform). Every sentence adds value, though a bit verbose. It could be slightly more concise but remains effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (arbitrary code execution, multiple platforms, safety constraints), the description is exhaustive. It covers security warnings, alternative tools for longer tasks, behavior under timeout, image handling, and platform-specific code replacement. No output schema exists, but return values are fully documented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both code and image_path described), but the description adds significant meaning: code must assign to _result, image_path injects _im_source (and on iOS img is preloaded as ndarray). It also explains the expected return formats (simple string, JSON, image base64) which the schema omits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool execs arbitrary Python code in the device's main process and returns results immediately. It distinguishes itself from siblings like upload_file and run_project by emphasizing fast execution (hundreds of milliseconds) and listing specific use cases such as exploratory debugging and composite decision-making.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides when-to-use scenarios (exploratory debugging, composite decisions, etc.) and when-not-to-use scenarios (long loops >30s, callback registration, long sessions). It also names alternatives: upload+run_project for long tasks and engineering mode for persistent sessions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_colorsB
多点找色:在屏幕上查找符合颜色条件的坐标。 colors 格式:'x,y,#RRGGBB|x,y,#RRGGBB|...',第一个点为锚点,后续为偏移点。 可选带偏差色:'x,y,#RRGGBB-#偏差|...'
| Name | Required | Description | Default |
|---|---|---|---|
| colors | Yes | 颜色描述,如 '100,200,#FF0000|102,200,#00FF00' | |
| rect | No | 搜索区域 [left, top, right, bottom] | |
| diff | No | 相似度 0.0-1.0,默认 0.98 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only explains parameter format but omits details like whether the operation is read-only, blocking, or requires permissions. No mention of side effects or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence for purpose, then parameter format. No extraneous text. Appropriate for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fails to explain the return value or output format. Since there is no output schema, the description should clarify what the tool returns (e.g., coordinates, list). This gap reduces completeness for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds significant value by explaining the colors format with anchors and offsets, which is more detailed than the schema's example. This helps the agent understand how to construct the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds coordinates on the screen matching color conditions, distinguishing it from siblings like compare_colors and screen_capture. The verb 'find' and specific resource 'colors' make purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like compare_colors. The description implies usage for multi-point color matching but does not provide explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_code_exampleB
获取常见自动化任务的可运行代码示例。
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | 任务关键词,如 '点击'、'找图'、'OCR'、'滑动' | |
| platform | Yes | 目标平台 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description is minimal. It does not disclose whether the operation is read-only, requires authentication, or any side effects. The agent has no behavioral context beyond the purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded. Every word is relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks details on return format, limitations, or what constitutes a 'code example'. With two parameters and no output schema, more context is needed for an agent to understand the expected outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers both parameters with descriptions and enum, achieving 100% coverage. The description adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'get runnable code examples for common automation tasks', which is a specific verb and resource. It distinguishes from sibling tools that perform other actions like auto_connect or compare_colors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing code examples for a task, but does not provide explicit guidance on when not to use it or mention alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_device_statusA
获取设备完整运行状态(仅 Android)。一次性返回:
device: 品牌/型号/ABI
system: Android 版本/SDK/语言/时区
screen: 分辨率/dpi/方向
battery / network / storage / memory
permissions: 全部权限授权状态
run_mode: 当前运行模式(root / accessibility / screen_only / hid)— 决定可用的 API 集
runtime: 是否正在跑脚本、当前工程名
tools: 已安装工具配置
强烈建议生成脚本前先调用:根据 run_mode 选择 API(如 node.find 仅在 accessibility 模式可用),根据 permissions 决定是否需要先申请权限,根据 runtime.is_script_running 避免互踩。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It comprehensively describes the output structure and hints at read-only behavior (status retrieval). However, it does not explicitly state there are no side effects or mention any rate limits or authentication needs. Still, it is above average in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with a clear front-loaded purpose and a detailed list of return categories. While somewhat lengthy, each part earns its place by providing meaningful information. Minor room for more concise phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description fully enumerates all returned fields and provides usage context (e.g., relevance of run_mode). This is complete for a status-reading tool and leaves no ambiguity about what the tool provides.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has zero parameters with 100% coverage. Baseline for high coverage is 3. The description adds no parameter info because there are none, which is acceptable but does not provide additional semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves complete device running status for Android devices. It lists all categories returned, distinguishing it from siblings like connect_device or observe_device which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly recommends calling this tool before generating scripts, explaining why: to check run_mode for API selection, permissions for authorization, and runtime to avoid conflicts. This provides clear guidance on when to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_module_apisA
获取指定模块的完整 API 文档,支持模糊匹配。例如 'screen' 可匹配 'ascript.windows.screen'。返回函数签名、参数说明和文档。
| Name | Required | Description | Default |
|---|---|---|---|
| platform | Yes | 目标平台:android、ios 或 windows | |
| module | Yes | 模块名,如 'screen'、'action'、'node' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions the return includes function signatures, parameter descriptions, and documentation, but does not specify if it is read-only, what the source of the docs is, or any authentication or side effects. This leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The purpose and key functionality (fuzzy matching) are front-loaded. Every sentence serves a clear purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a relatively simple tool with two parameters and no nested objects, the description covers the main functionality. However, it lacks comparison to the sibling tool 'search_api' and does not explain the output format in detail (though it mentions what is returned). Minor but acceptable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds value by providing a concrete example ('screen' → 'ascript.windows.screen') that clarifies how fuzzy matching works for the 'module' parameter, going beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves complete API documentation for a specified module with fuzzy matching, using a specific example ('screen' matches 'ascript.windows.screen'). It distinguishes itself from siblings like search_api by focusing on module-level documentation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions fuzzy matching and gives an example, but does not explicitly state when to use this tool versus alternatives like search_api or when not to use it. No context on prerequisites or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_platform_overviewA
获取指定平台(android/ios/windows)的 API 模块概览,包含模块名、描述、类和函数列表。
| Name | Required | Description | Default |
|---|---|---|---|
| platform | Yes | 目标平台:android、ios 或 windows |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals the output composition (module names, descriptions, class and function listings) and implies a read-only operation. While it does not mention side effects, authentication, or rate limits, its explicit listing of returned data provides sufficient transparency for a non-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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the tool's action, resource, and output content. Every part of the sentence is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 required parameter, no output schema), the description adequately covers the purpose and expected output. It does not explain term 'API 模块概览' in detail, but the context is clear. No pagination or size constraints are mentioned, but these are not critical for this simple overview tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (parameter 'platform' has description and enum). The description adds minimal extra meaning beyond the schema, essentially repeating the parameter's allowed values and purpose. Baseline 3 is appropriate as the schema already documents the parameter well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (获取, get) and resource (指定平台的 API 模块概览, API module overview for specified platform) and specifies the platforms (android/ios/windows) and included content (模块名、描述、类和函数列表). This distinguishes it from sibling tools like get_module_apis which may provide more detail on individual modules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing an API module overview for a specific platform, but does not explicitly state when to avoid it or provide alternatives. Given sibling tools like get_module_apis and search_api, the description could offer more guidance on selection, but it is adequate for a straightforward tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_plugin_detailA
获取指定插件的详细文档,包括 API 说明、参数、代码示例和版本历史。 需要先用 list_plugins 查到插件 id。
| Name | Required | Description | Default |
|---|---|---|---|
| plugin_id | Yes | 插件 ID(从 list_plugins 返回的 id 字段) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It reveals the return contents (API, parameters, examples, version history) and implies a read-only operation. It does not mention error behavior or latency, but for a simple retrieval tool the disclosure is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, immediately stating purpose and prerequisite. No superfluous words; efficiently structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description lists what the documentation includes, compensating for missing structure. It also covers the prerequisite. It could mention response format (text, JSON) but is otherwise complete for a simple retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the parameter as the plugin ID from list_plugins (100% coverage). The description reinforces this by naming list_plugins, adding context beyond the schema's field description. The only parameter is fully explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets detailed documentation of a specified plugin, listing exact content (API, params, examples, version history). It is specific and distinguishes from sibling tools like get_code_example or search_api.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the user to first use list_plugins to obtain the plugin_id, providing clear prerequisite guidance. It does not mention when not to use or alternatives, but the instruction is sufficient for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_filesB
获取设备上指定工程的文件树结构。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | 工程名称 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavioral traits. It does not mention what happens if the project name is invalid, whether a device must be connected, or if the operation is read-only. The single sentence only describes the function, not side effects or requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no extraneous words. However, it lacks important behavioral details that would not be overly expansive; it is slightly under-specified for completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter, no output schema, no annotations), the description should cover basic context like error handling, return format, or prerequisites. It does not, leaving significant gaps for an agent invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers the single parameter 'name' with a description, achieving 100% schema coverage. The description adds no additional meaning beyond referencing '指定的工程' (specified project), which aligns with the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the file tree structure of a specified project on a device, using the verb '获取' (get) and explicitly naming the resource (project file tree). It is distinct from siblings like list_projects or deploy_and_run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as when to use list_projects for project listing or deploy_and_run for deployment. No prerequisites or contextual hints are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_run_logA
获取设备运行日志(实时收集指定秒数)。 用于查看脚本运行输出、错误信息和 print 内容。 建议在 run_project 后调用,查看脚本是否正常运行或有报错。
| Name | Required | Description | Default |
|---|---|---|---|
| seconds | No | 收集日志的秒数,默认 3 秒 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only states real-time log collection for specified seconds, omitting side effects or read-only nature. Minimal disclosure of behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: function, purpose, usage recommendation. No redundancy, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers when to use and what it does, but omits return format details. Given low complexity and no output schema, adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema fully describes seconds parameter with default. Description adds 'real-time' context beyond schema but does not significantly enhance semantics. Baseline 3 due to high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'get' and resource 'run logs', specifies real-time collection and purpose to view output/errors. Differentiates from sibling tools like get_device_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly recommends calling after run_project to check script execution, providing clear context for use. Does not mention when not to use, but adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_setup_guideC
获取指定平台的环境搭建和安装指南。
| Name | Required | Description | Default |
|---|---|---|---|
| platform | Yes | 目标平台 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only says 'get', implying a read operation but without explicitly stating it is safe or idempotent, nor mentioning any return format or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence, appropriately sized for a simple tool, though it could include a bit more context without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (single parameter, no output schema), the description adequately conveys the core functionality but lacks information about the return format or any dependencies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all parameter meaning (enum for platform), and the description adds no additional semantic value beyond restating the parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a setup guide for a specified platform, using a specific verb and resource. However, it does not explicitly distinguish it from sibling tools like get_code_example or get_platform_overview, though the scope is distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or context for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pluginsA
查询 AScript 在线插件库,返回所有可用插件列表。 插件提供额外能力:OCR(TomatoOcr)、YOLO 目标检测、HID 硬件控制、AI 大模型、蓝牙通信等。 按下载量排序,包含插件名、作者、描述。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It correctly indicates this is a read operation that returns a sorted list. However, it does not mention potential side effects, authentication requirements, or rate limits. Given the simplicity of the tool, this is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of three sentences in Chinese. The first sentence states the primary function, the second lists example plugin capabilities, and the third specifies sorting and content. While efficient, it could be slightly more structured; however, it earns a 4 for being clear and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description provides essential details: it lists all plugins, sorted by downloads, with name, author, and description. However, it does not specify the exact output format (e.g., JSON array) or mention pagination limits. For a simple list tool, this is moderately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% schema description coverage. Since there are no parameters, the description adds value by explaining what the tool does. The baseline score of 3 is appropriate because the schema already fully describes parameter expectations, and the description adds no additional constraints or semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries the AScript online plugin repository and returns a list of all available plugins. It specifies the sorting order (by downloads) and included fields (name, author, description). This distinguishes it from siblings like get_plugin_detail, which presumably retrieves details for a single plugin.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly provide guidance on when to use this tool versus alternatives like get_plugin_detail or get_module_apis. While the purpose of listing all plugins is clear, it lacks any 'when to use' or 'when not to use' statements, leaving the agent to infer usage context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsA
列出设备上的所有工程。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose any behavioral traits beyond the obvious listing action. Without annotations, it carries the full burden, but it fails to mention what the output looks like or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. It is appropriately sized and front-loaded with the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description is sufficient for a simple list operation. It provides enough context for an AI agent to understand its purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the schema covers 100%. The description does not need to add parameter information. Baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists all projects on the device, using a specific verb and resource. It is distinct from sibling tools like create_project or run_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool vs. alternatives. It is implied that this is the tool for listing projects, but no when-not or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_python_packagesA
列出设备 AScript App 内已安装的 Python 第三方库(Android + iOS)。 AI 在写脚本(尤其是 eval_python 片段)前强烈建议先调用,确认要 import 的 lib 在该设备上可用。
Android: 走 /api/status 的 python.packages(importlib.metadata 实时查询)。 iOS: 借 eval_python 跑 importlib.metadata 实时列出。
常见自带库:opencv-python-headless / numpy / pillow / requests / pandas / openpyxl / pymysql / websockets / cryptography 等,具体清单随 App 版本和用户安装的插件而变化,以本工具实时返回为准。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: it explains the platform-specific implementation (Android via /api/status, iOS via eval_python), lists common libraries, and emphasizes that results depend on version and plugins, providing real-time expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two paragraphs, front-loading the purpose and recommendation. It could be slightly more structured, but it efficiently conveys necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and zero parameters, the description fully covers what the tool does and returns. It explains both platforms and the dynamic nature of the library list, making it complete for an agent to understand the tool's function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and schema coverage is 100%. The description does not need to explain parameters, so it meets the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: listing installed Python third-party libraries in the AScript App. It specifies the scope (Android + iOS) and emphasizes its utility before writing scripts to check import availability, distinguishing it from generic tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly recommends using this tool before writing scripts, providing clear context on when to use it. It does not mention alternative tools, but the recommendation is strong and contextually appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
observe_deviceA
一次性获取设备当前状态:截图 + 控件树,比分开调用更快。 返回截图(PNG 图片)和控件树(Android JSON / iOS XML)。 【重要】拿到控件树后,编写代码必须优先使用控件选择器(通过 text/id/className 等属性定位并操作控件),只有控件树中确实找不到目标元素时才用坐标点击。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses return formats (PNG, JSON/XML) and performance benefit, but does not mention side effects, permissions, or error conditions. Adequate for a read-only observation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus a bolded important note, all essential. Front-loaded with purpose and deliverables. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, output format, and important usage guidance. Lacks prerequisites (e.g., device connection) and potential limitation details, but sufficient given tool simplicity and no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has no parameters, achieving 100% coverage. Baseline of 4 applies as no additional parameter information is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it retrieves both screenshot and UI tree, distinguishing from separate calls to screen_capture and dump_ui_tree. Specific verb 'observe' and resource 'device' with explicit deliverables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly recommends using this tool instead of separate calls for speed. Includes important post-processing guidance about preferring selector-based interaction over coordinate clicks, but does not explicitly state when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ocrA
在设备屏幕上执行 OCR 文字识别。返回识别到的文字、位置坐标和置信度。
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | OCR 引擎:mlkit(默认,快)、paddle_v2、paddle_v3(最新)、tess | mlkit |
| rect | No | 识别区域 [left, top, right, bottom],不传则全屏 | |
| pattern | No | 正则表达式过滤结果 | |
| confidence | No | 置信度阈值 0.0-1.0,默认 0.1 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the output (text, coordinates, confidence) but does not specify if the tool is read-only, requires permissions, or handles edge cases like no text found. The behavioral disclosure is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no wasted words. It front-loads the core action and output, making it efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description mentions the return values (text, coordinates, confidence). For a tool with four parameters that are well-documented in the schema, the description provides sufficient context for the agent to understand the tool's result structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four parameters have descriptions in the input schema (100% coverage). The description adds minimal value beyond the schema (e.g., default engine, default region), so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: perform OCR on the device screen and return recognized text, coordinates, and confidence. It uses specific verbs ('执行 OCR') and nouns ('设备屏幕', '文字识别'), and distinguishes from sibling tools like screen_capture or dump_ui_tree.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for text recognition tasks but does not provide explicit guidance on when to use this tool versus alternatives (e.g., screen_capture or dump_ui_tree). No when-not-to-use or alternative references are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_projectC
在设备上运行指定工程。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | 工程名称 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description should reveal behavioral traits such as side effects, prerequisites (e.g., device connection, project existence), or return values. It only states the basic action, leaving significant ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately conveys the tool's purpose with no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the task (running a project on a device), the description lacks essential context such as expected state of the project, what 'running' entails (e.g., blocking or async), and how it differs from similar tools. The absence of output schema and annotations compounds this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage (parameter 'name' with description '工程名称'), and the tool description adds no further semantic value. Since the schema already explains the parameter, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description '在设备上运行指定工程' clearly states the action (run) and resource (specified project on device). It is specific but does not explicitly differentiate from sibling tools like 'deploy_and_run' or 'run_project_debug', though the name alone suggests a simple run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., deploy_and_run, run_project_debug). The agent receives no context about prerequisites or typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_project_debugA
以调试模式启动 Android 工程,让脚本可被 VS Code / Cursor 通过 debugpy attach 调试。 前提:1) 平台为 Android(iOS 不支持);2) 设备必须通过 ADB 连接(USB / adb tcpip)。 行为:自动 adb forward tcp:5678 → 设备 127.0.0.1:5678 + 调用设备 /api/model/run?debug=1,设备端 :py 进程进入 listen+wait_for_client 阻塞,等待 IDE attach。 返回:本地端口、可直接粘贴到 .vscode/launch.json 的 attach 配置片段、操作提示。 用户在 VS Code 按 F5 attach 后,业务从 main 开始运行,断点会被命中。 停止调试请调用 stop_project(同时停止业务和调试器)。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | 工程名称 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses all behavioral details: adb forwarding, device API call, blocking mode, return values (port and config snippet), and the attach workflow. It also explains how breakpoints are hit and how to stop, leaving no ambiguity about the tool's operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured but somewhat verbose, containing detailed step-by-step behavior. It front-loads the core purpose and prerequisites, but could be slightly more concise by omitting redundant operational details. Still, it remains efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (debugging setup with multiple steps), the description is highly complete. It covers prerequisites, technical process, return values, usage tips, and stop instructions. No output schema exists, but the description compensates by detailing the return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'name' is fully documented in the input schema (100% coverage), so the description does not need to add extra semantics. It uses the parameter in context but does not elaborate on its format or constraints beyond the schema, which is acceptable but adds no additional value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to start an Android project in debug mode for VS Code/Cursor attachment via debugpy. It uniquely identifies the action (debug startup) and resource (Android project), distinguishing it from siblings like run_project (non-debug) and stop_project (stop).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides prerequisites (Android platform, ADB connection), usage context (debugging with IDE), and exclusions (iOS not supported). It also directs the user to call stop_project to stop debugging, offering clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_devicesA
扫描发现所有 AirScript 设备。 同时执行:1) 局域网扫描(WiFi 连接的 Android/iOS 设备)2) ADB 扫描(USB 连接的 Android 设备)。 返回所有发现的设备列表。
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | 局域网扫描端口,默认 9096 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It describes the two scanning processes and states it returns a list, but does not disclose any side effects, safety profile, or return format details. It is decent but could be more explicit about being a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences, front-loaded with the main purpose, and includes key details (simultaneous scans) without any fluff. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple discovery tool with one optional parameter and no output schema, the description adequately covers what the tool does, the two scan methods, and the result. It could benefit from noting the return format (e.g., list of device identifiers), but it is still sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'port', and its description in the schema already explains it. The tool description does not add additional meaning beyond what the schema provides, so it meets the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scans and discovers all AirScript devices via two methods (LAN and ADB), distinguishing it clearly from siblings like connect_device or get_device_status. The verb 'scan' paired with 'devices' is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for discovering devices before connecting, but it does not explicitly state when to use or when to avoid this tool, nor does it mention alternatives like auto_connect. The guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_captureA
截取设备当前屏幕。返回 PNG 图片。用于查看设备当前界面状态。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It states the tool captures the screen and returns a PNG, but does not disclose any behavioral traits such as whether it is read-only, required permissions, or potential side effects. For a simple capture tool, this is minimal but insufficient for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, both front-loaded with the core action and return type. Every word is informative and there is no redundancy. It is well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description is mostly complete for a simple screen capture tool. It covers purpose, output, and use case. However, it could be slightly more detailed (e.g., whether it captures full screen or active window, or any limitations). Overall, it meets minimum viability but leaves minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so no parameter information is needed from the description. The description does not add parameter details, but that is acceptable because none exist. According to guidelines, baseline is 4 with 0 params, and the description adds context about the tool's function.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (截取屏幕, capture screen), the resource (设备当前屏幕, device current screen), and the output (返回 PNG 图片, returns PNG image). It also mentions the use case (查看设备当前界面状态, view current interface state). This effectively distinguishes it from sibling tools like dump_ui_tree or observe_device.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes the purpose '用于查看设备当前界面状态' (used to view current interface state), which implies when to use it. However, it does not explicitly state when not to use it or provide alternatives among the many sibling tools. Some guidance is present but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_apiA
按关键词搜索 API,覆盖函数名、类名和文档说明。当不确定功能在哪个模块时使用。
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | 搜索关键词,如 'click'、'ocr'、'截图' | |
| platform | No | 可选,按平台过滤 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It states the search scope (function names, class names, documentation) but does not mention that it is read-only, any limits, or what happens if no results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences in Chinese, approximately 30 characters, no filler. Front-loaded with action and purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no output schema, the description explains purpose and usage but omits what the search returns (e.g., list of API names or full docs). Could provide more context on output format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters with descriptions. The tool description adds value by explaining the search scope, which gives meaning to the 'query' parameter by hinting it matches against multiple fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states '按关键词搜索 API,覆盖函数名、类名和文档说明' (search APIs by keyword covering function names, class names, and documentation), with a clear verb and resource. It also distinguishes from sibling tools by adding '当不确定功能在哪个模块时使用' (use when unsure of the module).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage context is given: '当不确定功能在哪个模块时使用' (use when unsure of which module). While it doesn't list alternatives or when not to use, this single condition provides clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_projectA
停止设备上正在运行的工程。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only says 'stop the project' without elaborating on side effects, error conditions (e.g., what happens if no project is running), or whether it requires authentication. The behavioral disclosure is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no unnecessary words. It is front-loaded with the action and target.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple stop action with no parameters and no output schema, the description is nearly adequate but lacks details on error states (e.g., no running project) and whether the action is synchronous or asynchronous. Given the sibling tools, more context could help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so description is not required to explain them. Since schema description coverage is 100% (no params), the baseline is 4. The description adds no redundant parameter info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool stops a running project on the device, using a specific verb and resource. This distinguishes it from siblings like 'run_project' or 'deploy_and_run' which start projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a project is running and needs to be stopped, but it does not provide explicit guidance on when not to use it or alternatives. No prerequisites or context are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_selectorA
在设备上实时测试 Selector 选择器,验证是否能精准匹配到目标控件。 传入过滤条件(text/id/type/desc/clickable),返回匹配到的控件及其完整属性。 用于编写代码前验证 node.Selector().text('xxx').find() 等语句是否能定位到正确控件。 条件可组合使用,如同时指定 text 和 clickable。
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | 按文本内容匹配 | |
| id | No | 按资源 ID 匹配,如 'com.tencent.mm:id/xxx' | |
| type | No | 按控件类型匹配,如 'TextView'、'Button'、'ImageView' | |
| desc | No | 按内容描述匹配 | |
| clickable | No | 是否可点击 | |
| mode | No | 检索模式(Android):0=普通,1=复杂,2=简单过滤系统控件 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It states the tool tests selectors and returns matching controls, implying a read-only operation. However, it does not explicitly confirm no side effects or destructive actions, which would strengthen transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four concise sentences, each serving a purpose: stating the primary function, listing filters, explaining the use case, and demonstrating combination. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately explains that the tool returns matching controls with complete attributes. It covers the tool's purpose, parameters (via schema), and usage context, making it complete for the AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, providing baseline 3. The description adds value by explaining how parameters can be combined (e.g., text and clickable) and contextualizing their use for selector verification, going beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool tests a selector on a device to verify it matches the correct control, with specific filter parameters. It distinguishes itself from sibling tools like dump_ui_tree by focusing on live selector testing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly notes this is for verifying selector statements before writing code, providing a clear use case. While it doesn't mention when not to use it or list alternatives, the context is sufficient for an AI agent to understand appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileC
上传文件到设备上的指定工程。content 为文件内容的 base64 编码。
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | Yes | 工程名称 | |
| relative_path | Yes | 文件在工程内的相对路径,如 '__init__.py' 或 'res/img/1.png' | |
| content_base64 | Yes | 文件内容的 base64 编码 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden but only states the action. It does not disclose whether the operation is destructive, overwrites files, requires authentication, or has side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the key purpose. However, it sacrifices necessary detail for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and missing behavioral details. For an upload tool, information about return values, error handling, and file overwrite behavior is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with inline descriptions. The description adds minimal value beyond restating that content is base64 encoded. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (upload a file) and the target (specified project on device). It is specific and distinct from sibling tools like create_project or deploy_and_run, though sibling differentiation is not explicitly addressed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives, no prerequisites (e.g., project must exist), and no exclusions or conditions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clear, distinct purpose. For example, compare_colors checks a specific point, find_colors searches a region, ocr extracts text, and dump_ui_tree vs observe_device differ by output scope. No significant overlap.
All tool names follow a consistent verb_noun pattern with snake_case (e.g., auto_connect, compare_colors, get_device_status). Even 'deploy_and_run' fits the pattern. No mixing of conventions.
With 29 tools, the set is slightly large but well-justified for a broad mobile automation domain covering connection, project lifecycle, UI inspection, code execution, color/OCR, plugins, and more. Could potentially consolidate a few, but still reasonable.
The tool surface covers most essential operations: device connection, project management, UI dump, screenshot, OCR, color ops, code execution, debugging, logs, and plugin listing. Minor gaps like missing a delete_project tool or a disconnect device tool, but overall comprehensive.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Control real Android and iOS devices with LLM agents — tap, swipe, type, automate flows.
Drive real Android & iOS devices and web browsers from natural language for mobile + web QA. 290+ tools across device control, app management, automation sessions, browser automation, and flow recording / replay. Bearer-auth — get a token at robotactions.com → Profile → API Tokens.
Give your AI agents the tools to build, manage, and run automation workflows.
AI agent tools for FreeAppStore: deploy status, SDK docs, app info, platform guide.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI assistants to control mobile and desktop devices with natural language, including running automation tasks, taking screenshots, and managing devices.65MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Magic-API development environment, supporting script syntax query, API management, debugging, and knowledge search for efficient development.MIT
- AlicenseBqualityCmaintenanceEnables Android device control via ADB and scrcpy, including device management, app management, file operations, shell commands, input simulation, screen mirroring, and UI element inspection.25Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables remote control of Android devices via ADB, including screen operations, input, app management, file transfer, and advanced tools like UI testing and performance analysis.24MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ascript-cn/ascript-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server