Skip to main content
Glama

Habitat — Let AI Agents Drive Android

An embeddable Android automation runtime with an on-device MCP server and an autonomous agent (DeepSeek plans, TypeSafe Jev picks each tap, code verifies). Workflows are flat JSON that LLMs can write; execution goes through accessibility + system APIs.

CI Release JitPack Kotlin Min SDK MCP License

中文文档 · 项目介绍(中文,含真机示例)

What you get

  • Tell the phone what to do — "open Settings and go to Bluetooth", "turn brightness to max", "what's my battery?" The agent plans, uses device tools directly when it can, taps through the UI when it must, and verifies the result on screen. On-device eval: with planning, 28/28 for both Jev and DeepSeek executors (2026-10-09, 13–18/28 without) — method and raw data.

  • An MCP server on the phone — Claude Code and Cursor connect over Streamable HTTP (http://127.0.0.1:8931/mcp), Claude Desktop through a bundled stdio bridge: read the screen, call all 88 nodes (each with a parameter schema), start agent tasks. Token-authenticated, dangerous tools off by default — setup.

  • An embeddable engine — drop :lib into your own app (JitPack) and run LLM-generated JSON workflows: triggers, branches, loops, variables, shell, HTTP, sensors, notifications.

Try it in 2 minutes

  1. Install the APK from Releases on Android 10+ — app-standard-arm64-v8a-release.apk fits almost every phone (universal if unsure).

  2. Open Habitat, enable its accessibility service when prompted.

  3. Agent tab → pick an executor (Jev / DeepSeek / Local), paste your API key (stored encrypted on the device), type a goal, tap Start.

    • No key? Choose Local — it runs offline with simple heuristics.

    • Calling Jev from mainland China returns HTTP 451; see Jev network.

Prefer workflows? AI 生成 tab → describe a task in plain language → DeepSeek writes the JSON → save & run.

Use the engine in your app

// settings.gradle.kts
dependencyResolutionManagement { repositories { maven("https://jitpack.io") } }
// build.gradle.kts
implementation("com.github.Allenwang0730:HabitatEngine:v1.9.0")

See docs/ENGINE_USAGE.md for initialization and permissions.


Related MCP server: Mobile Device MCP

Philosophy

Habitat workflows are flat JSON graphs. Every node has exactly two control-flow mechanisms — next (linear) and branches (conditional) — and nothing else.

This is intentional:

  • LLMs are great at generating JSON — the flatter the structure, the fewer mistakes.

  • One variable syntax (${varName}) — no {{}}, [[]], or other delimiters to confuse.

  • Validation is simple — check start_node_id exists, check next references are valid. Errors are descriptive enough to feed back to the LLM for auto-correction.


Quick Start

Minimal Workflow

{
  "start_node_id": "hello",
  "nodes": {
    "hello": {
      "id": "hello",
      "type": "ACTION_TOAST",
      "params": { "message": "Hello, Habitat!" }
    }
  }
}

Execute from Code

val factory = NodeHandlerFactory(
    a11y = AppAccessibilityProvider,
    shell = ShizukuShellExecutor(context),
)
val graph = HabitatJson.fromJson(jsonString)
HabitatExecutionService.start(
    workflowId, jsonString, context, factory,
    onLog = { line -> println(line) },
    onResult = { vars -> println(vars) },   // 工作流结束时的变量快照
)

Why not Tasker / MaaFramework / Auto.js?

Tool

Style

Can you embed it in your app?

Tasker / Automate / MacroDroid

End-user apps with GUI editors

❌

MaaFramework

Embeddable & JSON task graphs, but C++ and image-recognition-first

⚠️

Auto.js / AutoX.js

JavaScript scripting

❌

Habitat

Embeddable Kotlin :lib + flat JSON workflows + LLM generation + accessibility & system-API dual-track

✅

Habitat is the one that is embeddable + LLM-generatable + dual-track. Define workflows as flat JSON designed for LLM output, embed the runtime in your app, and let agents or automation drive the device.


Node Types (88)

Full parameter reference: docs/NODES.md (generated from the node specs). The engine has 88 node types across categories. Common / core ones below (same list is in NodeKnowledge, the single source used for LLM generation — documented once here and in README_CN.md):

Type

Params

Purpose

Requires

ACTION_SET_VARIABLE

name, value, type

set variable

ACTION_LOG

message

log

ACTION_DELAY

millis

delay

CONDITION_SWITCH

expression, branches

conditional branch

ACTION_TOAST

message

toast

ACTION_GET_TIME

format, output_var

get time

ACTION_MATH

operation, a, b, output_var

math

ACTION_TEXT_OPERATION

action, input, output_var

text op

ACTION_CLIPBOARD

action, text, output_var

clipboard

ACTION_PARSE_JSON

json, path, output_var

parse JSON

ACTION_HTTP_REQUEST

url, method, output_var, timeout

HTTP request

needs network

ACTION_LAUNCH_APP

package_name

launch app

ACTION_CLICK

target, region, occurrence, offset_x, offset_y

click

needs a11y

ACTION_INPUT_TEXT

text, mode

input text

needs a11y

ACTION_READ_SCREEN

keyword, output_var

read screen

needs a11y

ACTION_FIND_ELEMENT

selector, search_mode, region, timeout_ms, output_var

find element

needs a11y

ACTION_GLOBAL_KEY

key

global key

needs a11y

ACTION_SHELL

command, mode

shell

needs Shizuku/root

ACTION_GET_BATTERY

output_var

battery

ACTION_NETWORK_STATUS

action

network

ACTION_GET_DEVICE_INFO

device info

ACTION_SCREENSHOT

format, output_var

screenshot

screenshot perm

ACTION_VIBRATE

duration

vibrate

ACTION_TEXT_TO_SPEECH

text, language

TTS

ACTION_FILE_OPERATION

action, path, content, output_var

file

ACTION_AI_CHAT

prompt, output_var

local AI chat

ACTION_CALL_DIRECT

phone_number, sim

direct call

CALL_PHONE

ACTION_CALL_PHONE

phone_number

call

CALL_PHONE

ACTION_SEND_NOTIFICATION

title, message, channel_id

notification

ACTION_SWIPE

x1,y1,x2,y2,duration_ms

swipe

needs a11y

ACTION_MEDIA_CONTROL

cmd

media control

Full categories in each NodeModules; NodeKnowledge is the single source for the AI-generation prompt and the node reference.

Interaction (6)

Type

What it does

ACTION_CLICK

Click coordinates or accessibility element (offset_x/offset_y shift from the target center)

ACTION_SWIPE

Linear swipe gesture

ACTION_LONG_PRESS

Long press

ACTION_INPUT_TEXT

Type text (a11y / shell / clipboard)

ACTION_GLOBAL_KEY

System key (back, home, recents, …)

ACTION_FIND_ELEMENT

Find UI element by selector

System (11)

Type

What it does

ACTION_SHELL

Execute shell command (Shizuku / root)

ACTION_LAUNCH_APP

Launch app by package name

ACTION_FORCE_STOP_APP

Force-stop app

ACTION_SCREEN_WAKE

Wake / sleep / unlock screen

ACTION_WIFI

WiFi on / off / toggle / status

ACTION_BLUETOOTH

Bluetooth on / off / toggle / status

ACTION_VOLUME

Volume set / get / up / down / mute

ACTION_BRIGHTNESS

Brightness set / get / auto

ACTION_FLASHLIGHT

Flashlight on / off / toggle

ACTION_CALL_PHONE

Open dialer with number

ACTION_SHARE

System share sheet

Telephony (2)

Type

What it does

ACTION_CALL_DIRECT

Place call directly via ACTION_CALL (no a11y needed, dual-SIM via sim param) — needs CALL_PHONE

ACTION_WAIT_CALL_END

Block until the call ends (polls TelephonyManager.callState) — needs READ_PHONE_STATE

Data (8)

Type

What it does

ACTION_SET_VARIABLE

Set workflow variable (string / int / float / bool)

ACTION_TEXT_OPERATION

Text replace / split / substring / case

ACTION_MATH

Arithmetic (add / sub / mul / div / mod / pow)

ACTION_CLIPBOARD

Clipboard read / write

ACTION_PARSE_JSON

Parse JSON with dot-notation path

ACTION_PARSE_XML

Parse XML with XPath

ACTION_BASE64

Base64 encode / decode

ACTION_FILE_OPERATION

File read / write / delete / exists / list

Logic (6)

Type

What it does

CONDITION_SWITCH

Branch on expression (branches: {true, false})

CONDITION_ADVANCED_SWITCH

Compare variable (== != > < >= <= contains …)

ACTION_DELAY

Wait (ms, max 60000)

ACTION_LOOP

Counted or expression-based loop (branches: {loop, end})

ACTION_TRY_CATCH

Exception wrapper (branches: {success, error})

ACTION_LOG

Emit log line (debug / info / warn / error)

Sensors (5)

Type

What it does

ACTION_READ_SCREEN

Search screen content via accessibility

ACTION_READ_SMS

Read SMS inbox, extract verification codes

ACTION_GET_APP_INFO

Foreground app package + activity

ACTION_FOREGROUND_APP

Foreground app (enhanced)

ACTION_APP_SEARCH

Search installed apps

Network (2)

Type

What it does

ACTION_HTTP_REQUEST

HTTP GET / POST / PUT / DELETE with headers + body

ACTION_NETWORK_STATUS

Query network type, WiFi IP, mobile IP

Media & UI (8)

Type

What it does

ACTION_SCREENSHOT

Screenshot (base64 or file)

ACTION_TEXT_TO_SPEECH

TTS (zh / en / ja / ko)

ACTION_TOAST

Toast message

ACTION_VIBRATE

Haptic vibration

ACTION_SEND_NOTIFICATION

System notification

ACTION_DYNAMIC_ISLAND

Floating heads-up notification

ACTION_MINI_SCREEN

Floating mini screen: live text / image / progress from a workflow, the agent or an MCP script (draggable, collapsible; moves out of the way of agent taps)

ACTION_WORKSPACE

Local workspace: write / append / read / list / delete results, notes and images (viewed in the app's Workspace tab, on-device only)

AI (1)

Type

What it does

ACTION_AI_CHAT

Local LLM inference (LiteRT-LM / Gemma 4 2B)

Utility (2)

Type

What it does

ACTION_GET_TIME

Current time (custom format)

ACTION_RANDOM

Random number (int / float / bool)

Full parameter reference → HABITAT_API.md Shared contract (client + server) → habitat-server/docs/API_CONTRACT.md in the server repo


Workflow Examples

SMS Verification Code Auto-Fill

{
  "start_node_id": "read",
  "nodes": {
    "read": {
      "type": "ACTION_READ_SMS",
      "params": { "filter_by": "both", "sender": "code", "extract_code": true },
      "next": "check"
    },
    "check": {
      "type": "CONDITION_SWITCH",
      "params": { "expression": "sms_found == true" },
      "branches": { "true": "copy", "false": "fail" }
    },
    "copy": {
      "type": "ACTION_CLIPBOARD",
      "params": { "action": "set", "text": "${verification_code}" },
      "next": "input"
    },
    "input": {
      "type": "ACTION_INPUT_TEXT",
      "params": { "text": "${verification_code}", "mode": "a11y" }
    },
    "fail": {
      "type": "ACTION_TOAST",
      "params": { "message": "No code found" }
    }
  }
}

One-Tap System Setup

{
  "start_node_id": "s1",
  "nodes": {
    "s1": { "type": "ACTION_WIFI",       "params": { "action": "on" },               "next": "s2" },
    "s2": { "type": "ACTION_BRIGHTNESS", "params": { "action": "set", "value": 80 }, "next": "s3" },
    "s3": { "type": "ACTION_VOLUME",     "params": { "action": "set", "stream": "music", "value": 40 }, "next": "done" },
    "done": { "type": "ACTION_TOAST",    "params": { "message": "Configured" } }
  }
}

More examples → HabitatSamples in HabitatJson.kt


DAG Visual Editor

The editor renders workflows as interactive directed acyclic graphs on a custom Canvas view.

Feature

Detail

Layout

Sugiyama-style layered auto-layout

Node colors

Color-coded by category (interaction / system / data / logic / network / sensor)

Edge types

Gray solid (next), green (true branch), red (false branch), orange dashed (loop)

Gestures

One-finger pan, two-finger pinch-zoom, double-tap reset, tap a node for details

Toggle

Switch between raw JSON editor and DAG visualizer

Node-level label and description fields control DAG display labels (optional, fully backward-compatible).

EditorTab (Compose)
  ├── OutlinedTextField: name, description, JSON
  ├── Toggle: "JSON" ↔ "DAG Flowchart"
  ├── AndroidView → DagView (Canvas)
  │     ├── DagLayoutEngine (auto-layout)
  │     └── HabitatDagConverter (WorkflowGraph → DagGraph)
  └── Execution logs (LazyColumn)

AI Workflow Generation (LLM-friendly, core selling point)

Natural language → workflow JSON, generated by DeepSeek (prompt built dynamically from NodeKnowledge, incl. an Android operation guide):

WorkflowAIGenerator.generate(context, "call 10086 and record")  // → GeneratedWorkflow(workflowJson, ...)
  • 13 typical scenarios, 100% generation accuracy (incl. "dial directly via CALL_DIRECT instead of UI simulation", "repeated text uses region")

  • Prompt includes: full node list with parameters (from the node specs) + common package map + priority rule (direct API preferred) + permission prerequisites + few-shot examples

  • Per-generation cost ≈ 0.02–0.05 CNY (DeepSeek)

MCP Mobile Agent (AI controls the phone)

The engine exposes an MCP server (JSON-RPC 2.0):

adb forward tcp:8931 tcp:8931          # the server listens on the phone's 127.0.0.1 by default
http://127.0.0.1:8931/mcp              # Streamable HTTP, Authorization: Bearer <token>
ws://127.0.0.1:8931/mcp?token=<token>  # WebSocket (scripts/mcp_call.mjs)
claude mcp add --transport http habitat http://127.0.0.1:8931/mcp --header "Authorization: Bearer <token>"
  • initialize / tools/list / tools/call standard MCP. Cursor / Claude Desktop config: docs/MCP.md; every node tool carries a JSON Schema generated from the node specs

  • Auth: a random token is generated per install (view / copy / regenerate on the App's Agent page); LAN access is off by default; dangerous nodes (shell, files, SMS, calls, …) are refused for remote callers unless explicitly enabled

  • supports region/occurrence to precisely target repeated text (e.g. "tap the confirm button at the bottom")

  • WeChat reading: only in the wechat build flavor (./gradlew :app:assembleWechatDebug), which adds a reader service named SelectToSpeakService — WeChat only exposes its UI tree to that class name, so this impersonates a Google component: personal use only, not for store distribution. The default standard flavor doesn't include it and falls back to on-device ML Kit OCR

  • PC side scripts/agent_daemon.mjs (persistent connection) / mcp_call.mjs (one-off calls, --full for untruncated fields)

Autonomous mode: planner (DeepSeek) + executor (Jev) + code control

goal ─► DeepSeek plans: a few steps, each with a completion condition visible on screen; uses device tools when possible
          ▼
   each step: tool step calls the device directly / UI step lets the executor (Jev / DeepSeek / local) pick one candidate per screen
          │  stuck (looping / no change / low confidence) → replan the rest from the current screen (≤2 times)
          ▼
   DeepSeek review: checks on-screen evidence that the goal is really done; answers question-style goals
  • Models choose, code controls: the executor only picks from code-built candidates; step progress, navigation stack + page graph, loop detection, recovery and safety gates live in code

  • Device tools: jump straight to 15 settings pages, toggle Wi-Fi / Bluetooth / flashlight / DND, set brightness / volume, read battery / time / device info / network. State-changing tools must be named in the user's own goal

  • Page state: package + activity + title identify the page; switch on/off, slider %, and input contents go into the candidates; the nav stack tells the model where it is, where Back goes, and which entries were already tried

  • Safety: planner output is untrusted — tool/arg allow-lists, typed text must be a substring of the goal, payment buttons / permission dialogs are unlocked only by the user's original goal

  • Entry points: the Agent page (executor Jev / DeepSeek / local, "DeepSeek planning & review" switch); MCP agent_start (goal / provider / max_steps / planner), agent_stop, agent_status

  • Jev from mainland China returns HTTP 451: use a proxy/VPN on the phone, or set "Jev proxy" to 127.0.0.1:<PC proxy port> and run adb reverse tcp:<port> tcp:<port>

On-device evaluation (one vivo phone, Android 16; results verified independently via adb / screen reads, not the agent's own DONE). Method, raw data and limitations: docs/EVAL.md.

Executor

with planner

without

date / commit

Jev

28/28

13/28

2026-10-09 · 09b0632, 7 tasks × 4 runs

DeepSeek

28/28

18/28

2026-10-09 · 09b0632, 7 tasks × 4 runs

DeepSeek

10/10

7/10

2026-10-14 · 9069155, 10 tasks (adds messaging / calling)

Tasks: open Bluetooth page, search inside Settings, open About phone, switch Clock to stopwatch, max brightness, ask battery level, ask Android version; since 2026-10-14 also search without quotes, type a QQ message, call a carrier by name. Reproduce with node scripts/agent_eval.mjs (tasks in scripts/agent_eval_tasks.json). See docs/AGENT.md.

Testing

  • Unit tests (JVM, no device): ./gradlew :lib:testDebugUnitTest :app:testDebugUnitTest (126 tests)

  • Engine self-test: scripts/run_selftest.ps1 (68 regressions = 53 PASS / 0 FAIL / 15 SKIP, needs a device)

  • Autonomous-mode device eval: node scripts/agent_eval.mjs (scripts/agent_eval_show.mjs for details)

  • LLM generation accuracy: scripts/verify_workflow_gen.ps1 (13 scenarios)


Local AI (LiteRT-LM)

Habitat bundles Google LiteRT-LM for on-device LLM inference — no network required.

  • Model: .litertlm format, recommended Gemma 4 2B (~2.4 GB)

  • Path: /storage/emulated/0/Download/llm/

  • Permission: "All files access" needed to read the model file

Use the LLM Console (Profile tab → LLM Console) to load models and test prompts. In workflows, ACTION_AI_CHAT calls the loaded model:

{
  "type": "ACTION_AI_CHAT",
  "params": {
    "prompt": "Summarize: ${screen_content}",
    "output_var": "summary"
  },
  "next": "next_step"
}

Project Structure

Habitat/                          # Root project
├── lib/                          # :lib — engine (zero Android UI deps)
│   └── com/ailun/habitat/
│       ├── api/                  # IAccessibilityProvider, IShellExecutor
│       ├── handlers/             # ~80 INodeHandler implementations
│       ├── HabitatExecutor.kt    # Coroutine-based execution loop
│       ├── HabitatJson.kt        # JSON parser + sample workflows
│       ├── WorkflowGraph.kt      # Graph model (start_node_id + nodes)
│       ├── WorkflowNode.kt       # Node model (id, type, params, next, branches)
│       ├── WorkflowContext.kt    # Per-run state, ${var} interpolation
│       ├── NodeHandlerFactory.kt # Type-string → handler registry
│       └── INodeHandler.kt       # Single-method handler interface
│
├── app/                          # :app — Compose UI, bridges, services
│   └── com/ailun/habitat/app/
│       ├── ui/                   # ProfileTab, HabitatSettingsActivity
│       ├── bridge/               # AppAccessibilityProvider, ShizukuShellExecutor
│       ├── ai/                   # NodeKnowledge(node docs), WorkflowAIGenerator(LLM gen), WorkflowAIClient(DeepSeek), LLMServiceProvider, LiteRtLLMServiceImpl
│       ├── agent/                # autonomous mode: Planner, AgentLoop, ActionCatalog, DeviceTools, NavigationState, ScreenObserver
│       ├── dag/                  # DagView, DagLayoutEngine, DagModel
│       ├── triggers/             # Notification, SMS, Timer, Clipboard, Key
│       ├── HabitatDashboard.kt   # Main scaffold + editor in home card + Agent control entry
│       ├── FloatWindowUI.kt      # Floating overlay ball + panel
│       ├── HabitatFloatService.kt
│       └── HabitatTheme.kt       # Material 3 teal color scheme
│
├── TODO.md                       # Task tracking (client-side)
└── README.md                     # This file

Dependency Decoupling

The engine (:lib) has zero compile-time dependency on the app module (:app). All OS access goes through two interfaces:

INodeHandler
    ↑
    ├── IAccessibilityProvider   (getService, foregroundPackage, foregroundActivity)
    └── IShellExecutor           (exec: suspend (cmd, asRoot) → String)
            ↑
    bridge/  (app module implementations)
    ├── AppAccessibilityProvider   ← weak ref to accessibility service
    └── ShizukuShellExecutor       ← delegates to HabitatShellManager

To use the engine in a different app, implement these two interfaces.


Cloud Backend (Habitat Server)

A Spring Boot 3.5 server provides AI-powered workflow generation and web service publishing. See habitat-server/README.md in the server repository for details.

Feature

Endpoint

AI workflow generation

POST /api/v1/workflows/generate

Workflow CRUD

GET/PUT/DELETE /api/v1/workflows/{id}

API key management

POST/GET/DELETE /api/v1/keys

Publish as web service

POST /api/v1/endpoints


Permissions

Feature

Permission

Click / swipe / read screen / input

Accessibility Service

Read SMS

READ_SMS

Notifications

POST_NOTIFICATIONS

Vibrate

VIBRATE

Shell (system-level)

Shizuku or Root

Screenshot

Accessibility Service

Flashlight

CAMERA

Open dialer

None (ACTION_DIAL)

Direct call (ACTION_CALL_DIRECT)

CALL_PHONE

Wait call end (ACTION_WAIT_CALL_END)

READ_PHONE_STATE


Extending

class MyHandler : INodeHandler {
    override suspend fun handle(node: WorkflowNode, ctx: WorkflowContext): String? {
        val param = ctx.interpolate(node.params?.get("key")?.toString() ?: "")
        ctx.variables["result"] = "done"
        return node.next
    }
}

// Register
factory.register("MY_ACTION", MyHandler())

⚠️ Handler thread constraint: handlers run on Dispatchers.Default (background coroutine thread, no Looper). Use synchronous queries (e.g. TelephonyManager.callState) or bring your own Executor/HandlerThread; do not use APIs that depend on Looper.myLooper() (e.g. PhoneStateListener) — will crash because Looper is null. See docs/ENGINE_EXTENDING.md.


FAQ

Problem

Solution

Workflow won't start

Check start_node_id exists in nodes

Variables resolve to "null"

Check the variable was set via ACTION_SET_VARIABLE

Infinite loop

Check loop condition; hard cap is 1000 steps

Accessibility actions fail

Confirm accessibility service is running

Shell commands return empty

Check Shizuku / root is connected

WiFi / Bluetooth operations fail

Android 10+ restrictions may apply


Habitat · 88 node types · LLM-friendly · MCP agent · embeddable · accessibility + system API · habitat-server companion backend

Available Tools

78 tools
ACTION_AI_CHATA

调用端侧本地大模型对话,回复存入变量(需宿主注入 LLM 服务且本地模型已加载)。输出:llm_success, llm_result, llm_error。模型未加载时 llm_success=false 并写 llm_error;推理抛错时错误文本也会写进 output_var,判断成败看 llm_success。Habitat 自带实现推理失败会返回以 "Error:" 开头的文本且 llm_success 仍为 true。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
promptYes提示词,支持 ${var}
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
output_varNo回复存到的变量名(默认 llm_result)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.6/5.0
Behavior4/5

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

With zero annotations the description carries the full burden and does substantial work: it names the output fields (llm_success, llm_result, llm_error), explains what happens when the model is not loaded versus when inference throws, and warns about the Habitat built-in quirk where 'Error:'-prefixed text is returned with llm_success=true. It stops short of stating any authorization or cost/latency characteristics.

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

Conciseness3/5

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

Purpose and prerequisites are front-loaded, which is good, but the text is dense and contains a doubled punctuation artifact ('。。') plus a redundant re-explanation of the failure path after the output-field list. Every idea is relevant, yet the packaging is less tight than it could be.

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

Completeness4/5

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

There is no output schema and no annotations, so the description must explain the return contract — and it does, covering success flag, result, error text, and the misleading-success edge case. Minor gaps remain around how 'require' and node_timeout_ms interact with the described failure handling, though those are documented in the schema.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters including the on_error enum and the output_var default. The description adds only that string parameters support ${var} interpolation (already noted on 'prompt') and that results are returned as a variable-snapshot JSON, which is marginal added meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: invoke an on-device local LLM for a chat turn and store the reply into a variable. Among the siblings (HTTP request, TTS, text operations) it is clearly the LLM-inference tool, though it never explicitly names a contrasting sibling.

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

Usage Guidelines3/5

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

Prerequisites are given in parentheses (host must inject an LLM service and the local model must be loaded), which implies when the tool can be used at all. However there is no explicit 'use this instead of ACTION_HTTP_REQUEST' guidance and no statement of when this tool is inappropriate.

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

ACTION_ARRAYA

数组变量操作:建立、追加、弹出、取值、长度、拼接、清空、删除、包含。输出:array_result。value、item、index 不做 ${var} 插值;元素一律按字符串存。数组本体存回 var。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
varYes数组变量名(不要写 ${})
itemNopush/remove/contains:元素
indexNoget/remove:下标,负数从末尾数;get 默认 0,remove 不填则按 item 删除
valueNoset:按 delimiter 分隔的文本,或 JSON 数组字符串
actionYes操作类型
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
delimiterNoset/join:分隔符(默认 ,)
output_varNo结果变量名:set/push/clear/length 为长度,pop/get 为元素,remove 按下标为元素、按 item 为布尔,join 为字符串,contains 为布尔(默认 array_result)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations supplied, the description carries significant behavioral context: it discloses that value, item, and index do not perform ${var} interpolation, elements are always stored as strings, and the array is written back to var. It also names the output variable and says results are returned as a variable snapshot JSON, though it does not describe error handling or timeout behavior beyond what the schema already provides.

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

Conciseness4/5

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

The description is compact and front-loads the operation list, so an agent can quickly see the tool's scope. There is minor redundancy between the output note and the final result-return sentence, plus a duplicated punctuation mark, but the wording is otherwise efficient.

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

Completeness4/5

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

For a 10-parameter tool with no annotations and no output schema, the description supplies the key operational and interpolation behavior needed to call it correctly. It does not repeat all action-specific parameter mappings, but those are fully documented in the schema, so the definition is largely complete.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter schema already documents each parameter well. The description adds meaningful semantics beyond the schema by stating that value, item, and index are not interpolated, that string parameters do support ${var} interpolation, and that array elements are stored as strings.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific resource, array variables, and enumerates operations including create, push, pop, get, length, join, clear, remove, and contains. It does not explicitly differentiate itself from related siblings such as ACTION_SET_VARIABLE or ACTION_PARSE_JSON, which keeps it below a 5.

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

Usage Guidelines2/5

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

The description identifies the domain as array variable operations but gives no explicit when-to-use or when-not-to-use guidance relative to sibling tools. It also does not state prerequisites or exclusions, leaving the agent to infer usage from the operation list.

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

ACTION_ASSERTA

断言:条件为假时让本节点失败,进入错误处理。失败按节点出错处理,可被 on_error、ACTION_TRY_CATCH、ACTION_RETRY 捕获。运算符 ==、!=、>、<、>=、<=(无 contains);两边先按变量名取值,取不到当字面值;不支持 ${var},值不加引号。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
messageNo失败时的错误信息(写入 last_error)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
conditionYes条件:变量名 运算符 值(如 x == 6),或布尔变量名
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does substantial work: it discloses failure semantics, the catch mechanisms, the supported operator set (and that contains is absent), operand resolution order (variable first, then literal), and the return shape (variable snapshot JSON). Missing pieces are permission/timeout behavior, but node_timeout_ms is documented in the schema, so the gap is small.

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

Conciseness4/5

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

The purpose and failure consequence are front-loaded in the first clause, and the description is compact for the amount of rule detail it conveys. It is marred by a doubled full stop ('。。') and by packing operator rules, resolution order, and interpolation into one dense run, which slightly hurts readability.

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

Completeness4/5

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

For a five-parameter, mutation-of-control-flow tool with no annotations and no output schema, the description covers the essentials: what failure means, how it is caught, how operands are evaluated, and that results come back as a variable snapshot. Only minor gaps remain, such as interaction with the require parameter, which the schema already documents.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all five parameters already carry descriptions and the baseline is 3. The description adds real meaning about the condition syntax and the variable-vs-literal resolution rule, but that overlaps with the schema's own condition description, and it never explains require or message beyond what the schema says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: an assertion that fails the node when the condition is false and routes to error handling. That is clearly distinguishable from data-manipulation siblings like ACTION_SET_VARIABLE or ACTION_MATH. It stops short of naming CONDITION_SWITCH/CONDITION_ADVANCED_SWITCH, the closest alternatives, so it doesn't earn a 5.

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

Usage Guidelines3/5

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

It explains the failure path concretely (on_error, ACTION_TRY_CATCH, ACTION_RETRY can catch it), which tells an agent how this fits into control flow. However, there is no explicit statement of when to choose ASSERT over CONDITION_SWITCH, nor any when-not guidance. Usage is implied rather than prescribed.

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

ACTION_BASE64A

Base64 编码或解码(UTF-8 文本)。输出:base64_result, base64_success。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
dataYes要编码/解码的文字(支持 ${var})
actionYesencode=编码,decode=解码
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
output_varNo结果存到的变量名(默认 base64_result)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses that results are returned as a variable snapshot JSON with base64_result/base64_success, and that the scope is UTF-8 text (implying binary payloads aren't supported). It says nothing about failure behavior, the require/on_error semantics, or timeout defaults beyond what the schema already states.

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

Conciseness4/5

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

Compact and front-loaded: purpose first, then outputs, then interpolation/return-shape notes. Every sentence carries information; only minor gain from splitting the output-variable details.

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

Completeness4/5

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

For a six-parameter action tool with a fully documented schema and no output schema, the description covers purpose, return variables, and result delivery. The remaining gap is error/timeout behavior, which the schema partly covers and which is unlikely to block correct invocation.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already defines all six parameters including action enum values. The description adds modest value by noting ${var} interpolation in string parameters and naming the default result variable, but does not explain require or on_error behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb pair (encode/decode) and resource (Base64, UTF-8 text), which is distinctive against siblings like ACTION_TEXT_OPERATION or ACTION_PARSE_JSON. It does not explicitly name an alternative tool, but the resource itself is unambiguous.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer it should call this when it needs Base64 conversion of UTF-8 text. There is no explicit when-to-use/when-not-to-use guidance or pointer to a sibling for related text operations.

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

ACTION_BLUETOOTHA

蓝牙开关、切换、查询状态(开关需 Shizuku 或 root(Android 13+ 系统 API 对普通应用无效);status 不需要)。输出:bluetooth_success, bluetooth_enabled。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
actionYeson/off/toggle 开关;status 查询(只有 status 写 bluetooth_enabled)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and discloses privilege requirements, an Android-version limitation, output variable names, interpolation, and variable-snapshot JSON returns. It could be more precise that only status writes bluetooth_enabled and explain success/failure semantics, although the schema partially supplies the former.

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

Conciseness5/5

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

The description is compact and front-loads the tool’s purpose before prerequisites, outputs, and return conventions. Despite the nested parenthetical, each clause contributes actionable information and there is no filler.

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

Completeness5/5

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

Together with the fully described schema, the definition covers invocation, platform prerequisites, error and timeout controls, variable interpolation, and result variables. The absence of an output schema is adequately mitigated by the stated output names and snapshot JSON format.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the action, require, on_error, and node_timeout_ms parameters are already well documented. The description adds meaningful cross-parameter behavior by stating that string parameters support ${var} interpolation and by tying privilege requirements to the selected action.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening “蓝牙开关、切换、查询状态” clearly identifies Bluetooth control and status querying, with the schema supplying the exact on/off/toggle/status actions. It does not explicitly differentiate itself from related siblings such as ACTION_WIFI, though the distinct resource makes confusion unlikely.

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

Usage Guidelines4/5

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

It gives concrete usage context: switching requires Shizuku or root, ordinary-app system APIs are ineffective on Android 13+, and status queries do not require those privileges. It does not provide broader when-not guidance or name an alternative tool, but the operation-specific prerequisites are genuinely useful.

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

ACTION_BRIGHTNESSA

屏幕亮度:设置、读取、开关自动亮度(set/auto_on/auto_off 需「修改系统设置」权限(WRITE_SETTINGS);get 不需要)。输出:brightness_success, brightness_error, brightness_value, brightness_mode。自动亮度开着时 set 的值可能被系统改掉,要固定亮度先 auto_off。brightness_mode 为 auto/manual。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
valueNo亮度 0-255(超出截断),action=set 时必填
actionYesset=设置亮度;get=读取亮度和模式;auto_on/auto_off=开/关自动亮度
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does well: it discloses the permission requirement per action, the risk that a set value gets overridden while auto mode is on, the exact output variable names, and that results come back as a variable-snapshot JSON. It leaves out failure modes (e.g. what happens when WRITE_SETTINGS is denied) and any timeout/rate behavior.

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

Conciseness4/5

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

The text is dense and front-loaded: operation list first, then permissions, outputs, the auto-brightness caveat, and the interpolation note. It is efficient overall, though the trailing '。' duplication and the slightly jumbled ordering of outputs vs. caveat keep it from being perfectly polished.

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

Completeness4/5

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

There is no output schema, so the description correctly compensates by naming the four returned fields and the brightness_mode values. Combined with the permission note and the auto-mode caveat, an agent has what it needs to call this correctly; only error/denial handling is unspecified.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents value range, action meanings, require, on_error and node_timeout_ms; that sets a baseline of 3. The description adds only marginal parameter-level value, mainly that string parameters support ${var} interpolation and which action values need permission.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource statement (screen brightness) and enumerates the exact operation set: set, get, auto_on, auto_off, matching the action enum. An agent can immediately distinguish this from neighbors such as ACTION_VOLUME or ACTION_FLASHLIGHT, which control different hardware.

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

Usage Guidelines4/5

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

It gives real when-to-use guidance: set/auto_on/auto_off require WRITE_SETTINGS while get does not, and it explicitly says to call auto_off before set if you want a fixed brightness because the system may override the value. It does not discuss cases where a different tool (e.g. ACTION_GET_SCREEN_STATE) should be preferred, but the hardware scope makes that mostly moot.

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

ACTION_CLICKA

点击:按坐标、界面文字或 resource-id 点击目标(需无障碍)。输出:click_success。同一文字可能多处出现(多个「确定」「发送」):用 region 限定区域或 occurrence 取第 N 个,避免点错。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
regionNo仅文字/id 匹配:限定目标中心所在区域,top/bottom/left/right/center 或归一化 "x1,y1,x2,y2"(如 "0,0.5,1,1"=下半屏);解析不了则不限定
targetYes"x,y" 像素坐标;或界面文字(不区分大小写的子串匹配);或 "id:包名:id/xxx" 按 resource-id 匹配。支持 ${var}
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
offset_xNo仅文字/id 匹配:点击点相对目标中心的水平偏移像素(默认 0)
offset_yNo仅文字/id 匹配:点击点相对目标中心的垂直偏移像素(向下为正)(默认 0)
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
occurrenceNo仅文字/id 匹配:region 过滤后取第几个(屏幕从上到下,0 起;0=第一个可见的);越界直接失败(默认 0)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations at all, the description does real work by disclosing the accessibility dependency and the click_success output variable. It does not cover what a failed or ambiguous click looks like, whether it waits for the element, or that out-of-range occurrence fails (that lives only in the schema). Solid but incomplete for a mutation tool with zero annotation coverage.

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

Conciseness4/5

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

Front-loaded with the targeting modes, then the disambiguation warning — good ordering. Slightly redundant ending: '输出:click_success' and '结果以变量快照 JSON 返回' restate the same return channel, and there is a stray doubled period.

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

Completeness4/5

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

For an 8-parameter mutation tool with no output schema and no annotations, the description covers the essentials: the three input modes, the multi-match pitfall, the permission requirement, and the success variable. Missing is any statement of failure behavior or the fact that offset/region only apply to text/id matching — though the schema fields do carry that.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does explain why region and occurrence exist (disambiguating repeated text) and that string parameters accept ${var} interpolation, but it adds no format or precedence detail beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (点击) and three concrete targeting modalities: pixel coordinates, on-screen text substring, or resource-id. An agent can tell this apart from neighbors like ACTION_LONG_PRESS or ACTION_FIND_ELEMENT by the matching mode, though no sibling is named explicitly.

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

Usage Guidelines4/5

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

Gives a concrete usage rule that an agent would otherwise get wrong: when the same text appears multiple times (多个「确定」「发送」), use region to narrow or occurrence to pick the Nth. It also flags the accessibility prerequisite. It stops short of when-not guidance or routing to alternatives such as find-element then click.

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

ACTION_CLIPBOARDA

读取或写入系统剪贴板。输出:clipboard_content, clipboard_success, clipboard_error。Android 10+ 应用在后台时系统禁止读剪贴板,get 可能得到空串而 clipboard_success 仍为 true。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
textNo要写入的文字(action=set 时必填,支持 ${var})
actionYesget=读取,set=写入
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
output_varNo读取结果存到的变量名(默认 clipboard_content)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations supplied, the description carries the burden and does well: it discloses the Android 10+ background read restriction and the trap that get can return an empty string while clipboard_success is still true. It also names the three output fields, which the agent would otherwise have to guess. It stops short of permissions behavior for write or failure semantics, so not a 5.

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

Conciseness4/5

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

The description is short and front-loaded with the core purpose before the caveats. There is a stray doubled period ('。。') and the output-field list competes with the behavioral warning, but nothing is padded.

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

Completeness4/5

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

There is no output schema, and the description compensates by naming clipboard_content, clipboard_success, and clipboard_error, plus the most important edge case for this platform. For a six-parameter tool with fully documented schema, this covers what an agent needs to call it correctly, with only write-side failure behavior left implicit.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter already carries its own description and the baseline is 3. The description adds that string parameters support ${var} interpolation and that results are returned as a variable-snapshot JSON, which is a modest but real addition over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'read from or write to the system clipboard', and the get/set split is explicit. It does not explicitly contrast with nearby siblings like ACTION_INPUT_TEXT or ACTION_READ_SCREEN, but the purpose is unambiguous on its own.

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

Usage Guidelines3/5

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

Usage is implied by the 'read or write clipboard' framing and the action enum, but there is no explicit when-to-use guidance and no named alternative. The Android 10+ background caveat is context, not routing guidance.

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

ACTION_DELAYA

暂停指定毫秒数。超过 60 秒的等待用 ACTION_WAIT_UNTIL_TIME。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
millisNo延迟毫秒数,上限 60000(超出截断),支持 ${var}(默认 0)(也认:ms)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does add real behavioral value by disclosing that string parameters accept ${var} interpolation and that results come back as a variable-snapshot JSON, but it never says the call blocks execution or how on_error/require change control flow, which are the most consequential behaviors for a delay node.

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

Conciseness4/5

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

It is short and front-loads the core purpose plus the sibling routing rule. It loses a point for a stray doubled punctuation ('。。') and for compressing three unrelated facts into one run-on line.

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

Completeness4/5

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

For a four-parameter, zero-required utility with no output schema, the description covers purpose, the size limit alternative, interpolation, and the return shape — enough to call it correctly. The gaps around blocking semantics and require/on_error behavior keep it from a 5.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, including the 60000 ms cap/truncation and the ms alias, so the schema already documents the parameters. The description only restates the ${var} interpolation support at a general level, adding little beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource (pause for a given number of milliseconds) and explicitly names the sibling it is not for long waits (ACTION_WAIT_UNTIL_TIME), so an agent can distinguish it from the other wait/action tools without opening any schema.

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

Usage Guidelines4/5

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

It gives an explicit routing rule: waits longer than 60 seconds should use ACTION_WAIT_UNTIL_TIME instead. That is clear alternative-selection guidance, though the description does not discuss when a delay is inappropriate altogether or how it interacts with retry/loop nodes.

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

ACTION_DND_MODEA

免打扰:查询或切换模式(on/off/priority/alarms 需免打扰权限(ACCESS_NOTIFICATION_POLICY,授了通知使用权也算);get 不需要)。输出:dnd_success, dnd_error, dnd_state。dnd_state 取值 off/on/priority/alarms/unknown(off=未开免打扰)。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
actionNoget/query=只查询;on=完全静音;off=全部允许;priority=仅优先;alarms=仅闹钟(默认 get)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does well: it discloses the permission prerequisite per action, the exact output keys (dnd_success, dnd_error, dnd_state), the full dnd_state value set including the unknown sentinel, and the ${var} interpolation plus variable-snapshot return convention. It does not state whether a mode change persists across reboots or how failures surface beyond dnd_error, which keeps it from a 5.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause, followed by permission, output, and interpolation details in a logical order with no filler sentences. It is dense parenthetical prose with a stray doubled period ('。。') that slightly hurts readability, but every clause carries information.

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

Completeness4/5

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

For a tool with no output schema, the description compensates by documenting the return keys and value domain, and it covers the one real hazard (the permission gate). The only omissions are the generic workflow parameters and post-failure behavior, which are consistent across the ACTION_* family and thus reasonably assumed.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuinely new meaning by mapping the permission requirement to specific action values (all except get) and by noting that string parameters accept ${var} interpolation — neither is in the schema. The workflow-level params (require, on_error, node_timeout_ms) are left to their schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb pair plus resource: query or switch Do Not Disturb mode. It enumerates the concrete mode values (on/off/priority/alarms) and names the output fields, so an agent can tell exactly what the tool does without opening the schema. No sibling in the list overlaps with DND, so differentiation is moot.

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

Usage Guidelines4/5

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

It gives explicit conditional guidance: on/off/priority/alarms require ACCESS_NOTIFICATION_POLICY (or notification-access grant), while get does not. That tells the agent when the call will succeed versus fail. It stops short of naming any alternative tool, but none exists among the siblings, so the gap is minor.

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

ACTION_DYNAMIC_ISLANDA

屏幕顶部弹出灵动岛样式的胶囊提示,到时自动消失(宿主 App 注册;需悬浮窗权限)。duration_ms 必须是数字,写成字符串会被忽略按 3000。不阻塞,显示后立即执行下一节点;没有悬浮窗权限时静默失败,不写任何变量。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
messageYes显示的文字(单行,过长截断),支持 ${var}
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
duration_msNo显示毫秒数(默认 3000)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations supplied, the description carries the full burden and does so well: it discloses the overlay-permission prerequisite, that failure without permission is silent and writes no variables, that execution is non-blocking, and that the result is a variable-snapshot JSON. It also flags the duration_ms type trap (string values are ignored and fall back to 3000), which is exactly the kind of behavior an agent could not guess.

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

Conciseness4/5

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

The purpose is front-loaded in the first clause, and every later sentence carries operational value (permission, non-blocking, type gotcha, interpolation). Minor deductions for a stray doubled period ('。。') and for mixing parameter-level detail into the prose body.

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

Completeness5/5

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

There is no output schema, and the description compensates by stating that the result comes back as a variable snapshot JSON. Permission requirements, failure semantics, blocking behavior, and the key parameter pitfall are all covered, which is enough for an agent to call a 5-parameter, 1-required tool correctly.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: duration_ms must be a numeric literal or it is silently replaced by 3000, and string parameters accept ${var} interpolation. require, on_error, and node_timeout_ms are only covered by their schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: it pops up a Dynamic Island style capsule at the top of the screen and auto-dismisses. That is concretely distinct from a generic notification. It never distinguishes itself from near-identical siblings such as ACTION_TOAST or ACTION_SEND_NOTIFICATION, so an agent must infer which popup tool to pick.

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

Usage Guidelines3/5

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

Usage is only implied through behavioral facts: it is non-blocking, so the next node runs immediately, and it requires host-app registration plus overlay permission. There is no explicit when-to-use or when-not-to-use guidance, and no sibling is named (ACTION_TOAST, ACTION_SEND_NOTIFICATION, ACTION_MINI_SCREEN are the obvious alternatives).

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

ACTION_FIND_ELEMENTA

找元素:限时轮询查找界面元素,输出是否找到、边界和文字(需无障碍)。输出:element_found, element_error, element_bounds, element_text, element_clickable。element_bounds 是 "left,top,right,bottom" 四个数,不能直接当 ACTION_CLICK 的 target(会点到左上角)。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
regionNo限定元素中心所在区域:top/bottom/left/right/center 或归一化 "x1,y1,x2,y2";解析不了直接失败并写 element_error
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
selectorYes要找的文字 / 完整 viewId / 类名 / 内容描述(按 search_mode)。支持 ${var}
output_varNo可选:把元素详情 map(found/bounds/text/clickable/contentDescription/className/packageName)存到这个变量
timeout_msNo最长查找毫秒(每 100ms 重试一次)(默认 3000)
search_modeNotext=界面文字(不区分大小写的子串)、id=完整 viewId、class=类名子串、content_desc=内容描述子串;主方式找不到会自动换其它方式再找(默认 text)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses time-limited polling, the accessibility-service requirement ('需无障碍'), that results come back as a variable-snapshot JSON, and the exact output field names. It omits failure/retry semantics, but those are largely covered by the require/on_error schema fields.

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

Conciseness3/5

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

Front-loaded with the core verb and the output list, which is good, but the sentence order is somewhat scattered and a duplicated '。。' punctuation error slightly hurts readability. Nothing is grossly verbose, but the structure could be tighter.

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

Completeness4/5

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

There is no output schema, and the description compensates by enumerating all five returned fields and explaining the bounds format. Combined with the accessibility prerequisite and variable-snapshot return note, an agent has nearly everything needed to call and interpret this tool; only sibling differentiation and failure behavior are thin.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents selector, search_mode, region, timeout and the rest in detail. The description adds only the general '${var} interpolation for string parameters' rule, which is marginal value on top of the schema's own per-parameter notes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: '限时轮询查找界面元素' with polling semantics and outputs. It does not, however, distinguish itself from the very similar sibling ACTION_WAIT_FOR_ELEMENT, leaving the agent to guess which finder to pick.

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

Usage Guidelines3/5

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

Provides one concrete usage caveat (element_bounds cannot be passed directly as ACTION_CLICK's target, or you hit the top-left corner), which is genuinely useful. But it gives no guidance on when to use this over ACTION_WAIT_FOR_ELEMENT, ACTION_READ_SCREEN, or ACTION_CLICK, so alternatives are only implied.

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

ACTION_FLASHLIGHTA

手电筒开关。输出:flashlight_success, flashlight_on。系统没有同步查询手电状态的 API:toggle 按本次运行记录的 flashlight_on 取反,没记录时一律打开。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
actionYeson/off/toggle
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does add real behavioral detail: toggle is stateful per run and defaults to on without a prior record, there is no way to read the current flashlight state, string parameters accept ${var} interpolation, and results come back as a variable-snapshot JSON. It omits device-permission requirements and whether the light persists after the workflow ends.

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

Conciseness4/5

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

Four compact clauses with the purpose front-loaded and no filler; the output variable names are stated up front where an agent will see them first. Minor blemishes: a duplicated "。。" and a slightly abrupt jump from toggle semantics to interpolation/return format.

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

Completeness4/5

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

There is no output schema, and the description compensates by naming both return variables (flashlight_success, flashlight_on) and the snapshot-JSON shape. For a simple one-enum actuator with fully documented parameters this is nearly sufficient, though it could note what happens on failure or whether the light state survives run completion.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by explaining the semantics of the `toggle` enum value (invert run-recorded state, else turn on) which the schema only labels as "on/off/toggle". It also clarifies that ${var} interpolation applies to string parameters such as `require`.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first clause "手电筒开关" names a specific resource plus the concrete action set (on/off/toggle) resolved through the `action` enum, so the agent knows exactly what the tool controls. It does not explicitly differentiate itself from adjacent hardware-control siblings such as ACTION_BRIGHTNESS or ACTION_SCREEN_WAKE, which keeps it one step below a 5.

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

Usage Guidelines3/5

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

The note that no synchronous state-query API exists, and that toggle inverts the run-recorded flashlight_on (defaulting to on), implicitly steers the agent toward on/off when state is known. However, it never states the condition explicitly ("prefer on/off when you know the current state") and gives no exclusions or error-handling guidance for the non-toggle actions.

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

ACTION_FOREGROUND_APPA

获取前台应用包名/Activity(先无障碍,拿不到再走 shell dumpsys)(需无障碍或 Shizuku/root)。输出:foreground_package, foreground_success, foreground_activity, foreground_class。拿不到时写 unknown 且 foreground_success=false;foreground_class 为短类名。节点必须带 params(可为 {}),缺 params 字段时什么都不做。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
use_shellNotrue=跳过无障碍,直接用 shell(默认 false)
output_varNo包名另存到的变量名(默认 foreground_package)
activity_varNoActivity 类名另存到的变量名(默认 foreground_activity)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose the permission prerequisites (accessibility or Shizuku/root), the fallback chain, the failure sentinel (unknown plus foreground_success=false), and the short-class-name format of foreground_class. It does not describe latency or whether the accessibility path consumes events, so it stops short of full disclosure.

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

Conciseness4/5

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

Front-loads the core purpose and output contract before the cross-cutting boilerplate about params, ${var} interpolation, and snapshot return. Slightly overpacked into one paragraph with a duplicated '。。' typo, but no substantive waste.

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

Completeness4/5

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

There is no output schema, so the description correctly enumerates the returned variables and the failure-state values. Combined with the disclosed permission requirements and params requirement, an agent has enough to call it correctly; only latency and side effects are unstated.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters including require, on_error, use_shell, and the two _var names are already documented in the schema. The description mainly restates defaults and adds the foreground_class short-name detail, which maps only indirectly to the activity_var parameter. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: '获取前台应用包名/Activity', and enumerates the exact output fields (foreground_package, foreground_success, foreground_activity, foreground_class). An agent can tell this reports the current foreground app rather than app metadata or launching apps.

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

Usage Guidelines4/5

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

Gives the acquisition strategy (accessibility first, shell dumpsys fallback), the prerequisite (accessibility or Shizuku/root), and points to the use_shell parameter to force the fallback. It does not explicitly say when to prefer sibling tools such as ACTION_GET_APP_INFO, but the operating context is clear.

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

ACTION_GEOCODEA

地址与经纬度互查(OpenStreetMap Nominatim,免 key)(需网络)。输出:geocode_success, geocode_error, latitude, longitude, address。地址查询取第一个结果写 latitude/longitude,逆查写 address,会覆盖同名变量(如 ACTION_GET_LOCATION 写的 latitude/longitude)。境外第三方服务,可能慢或不可达;连接/读取超时固定各 10 秒。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
addressNo地址 → 查经纬度,支持 ${var};与坐标同时给时优先用地址
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
latitudeNo纬度 → 逆查地址,支持 ${var};不给 address 时与 longitude 一起必填
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
longitudeNo经度 → 逆查地址,支持 ${var};不给 address 时与 latitude 一起必填
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does a lot: it lists the exact output variables, states only the first match is used for address lookups, warns that same-named variables get overwritten, flags the third-party overseas service as possibly slow or unreachable, and fixes connect/read timeouts at 10s each. It stops short of Nominatim's rate-limit/usage policy and says nothing about what a partial or empty result looks like beyond the geocode_error variable.

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

Conciseness4/5

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

The description is information-dense and front-loaded with the core address↔coordinate purpose, then output variables, then caveats. It is slightly cramped, with a doubled period and several clauses packed into one run-on sentence, but almost every clause carries operational value.

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

Completeness4/5

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

For a 6-parameter tool with no output schema, the description compensates well by enumerating the returned variable snapshot and its error variable. Remaining gaps—rate limits, behavior with multiple matches, and interaction with the workflow-level require/on_error controls—are minor rather than blocking.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all six parameters are already documented, including the address-over-coordinates precedence rule the description repeats. The description adds only the ${var} interpolation note, and says nothing extra about require, on_error, or node_timeout_ms beyond what the schema states, so this is the baseline-3 case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb-pair and resource: bidirectional lookup between address and latitude/longitude, via OpenStreetMap Nominatim, key-free but network-required. It explicitly names ACTION_GET_LOCATION as the source of conflicting latitude/longitude variables, so an agent can distinguish the two geo tools without opening a schema.

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

Usage Guidelines4/5

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

Direction is clear: supply address to get coordinates, supply latitude/longitude to reverse-lookup an address, and address wins when both are present. What is missing is an explicit exclusion ('do not use this for device GPS position – use ACTION_GET_LOCATION'), which is only hinted at through the variable-overwrite warning.

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

ACTION_GET_APP_INFOA

读取前台应用包名和 Activity(经无障碍)(需无障碍)。输出:current_app, current_activity。无障碍未开时写 unknown;需要 shell 兜底请用 ACTION_FOREGROUND_APP。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
output_varNo包名存到的变量名(默认 current_app)
activity_varNoActivity 类名存到的变量名(默认 current_activity)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A4.3/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden, and it discloses the key traits: accessibility dependency, the 'unknown' fallback value, ${var} interpolation in string params, and JSON variable-snapshot output. It doesn't cover latency, extra permissions, or whether reading is side-effect free, which keeps it below a 5.

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

Conciseness4/5

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

The purpose and the accessibility requirement come first, followed by output and fallback guidance, which is a sensible order. There is minor redundancy in listing the output variable names already covered by the schema, and a stray double punctuation mark ('。。'), but no real padding.

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

Completeness4/5

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

For a five-parameter read tool with no output schema, the description covers the return values, the failure mode, and the alternative tool, and the fully-documented schema handles the rest. Only minor behavioral details such as side-effect freedom are absent.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters including the output_var/activity_var defaults. The description only restates the default output variable names and notes interpolation for string params, adding marginal meaning beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: reading the foreground app's package name and Activity, and it names the mechanism (accessibility). It also distinguishes itself from the sibling ACTION_FOREGROUND_APP, so an agent can choose between them without opening either schema.

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

Usage Guidelines5/5

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

The description states the accessibility prerequisite, describes the degradation behavior when accessibility is off, and explicitly routes the agent to ACTION_FOREGROUND_APP when a shell fallback is needed. This gives both the when-to-use and a concrete alternative.

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

ACTION_GET_AUDIO_STATEB

读取是否在播放音乐、是否连着耳机。输出:music_active, headset_connected, audio_state_success, audio_state_error。headset_connected 含有线/USB 耳机和蓝牙 A2DP。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does meaningful work: it lists the four result variables including an explicit success/error pair, and clarifies that headset_connected covers wired/USB and Bluetooth A2DP. It omits anything about permissions, foreground requirements, latency, or what audio_state_error contains when the read fails.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause, followed by the output variable list, then the interpolation/return-format note. Dense and largely waste-free, though the closing sentence reads as framework boilerplate rather than tool-specific information.

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

Completeness4/5

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

No output schema exists, so the description must name return values and it does, covering both the data variables and the error variable, plus the JSON-snapshot return form. For a simple boolean-state reader this is nearly sufficient; only failure modes and preconditions are unaddressed.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the three framework parameters (require, on_error, node_timeout_ms) are already documented, and the baseline is 3. The note that string parameters support ${var} interpolation adds a small amount of meaning beyond the schema, but nothing tool-specific about require or on_error is elaborated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a concrete read action and names the exact states read (music playback, headset connection), which an agent can distinguish from the mutating siblings ACTION_MEDIA_CONTROL and ACTION_PLAY_MEDIA. It never explicitly names those siblings, so differentiation is by implication rather than statement.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, no mention of prerequisites, and no pointer to ACTION_MEDIA_CONTROL for the action side. The only cue is that it is a state query, which an agent must infer from the verb.

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

ACTION_GET_BATTERYA

读取电量和充电状态。输出:battery_level, battery_charging, battery_success, battery_error。battery_level 为 0–100;充满时 battery_charging 也为 true。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
output_varNo电量另存到的变量名(battery_level 总会写)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does a fair job: it discloses the output variable contract, the 0–100 range of battery_level, the edge case that battery_charging stays true when full, the presence of success/error variables, and that results arrive as a variable-snapshot JSON with ${var} interpolation in string params. It never states that the operation is read-only/no-permission, but the wording 读取 makes the read semantics unambiguous.

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

Conciseness4/5

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

Front-loaded with the action, then the output contract, then the interpolation/return-format note — logical order with no padding. Minor defect: a doubled period ("。。") and the output-variable list slightly duplicates the schema's output_var note.

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

Completeness5/5

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

No output schema exists, so the description must define the return surface itself — and it names every returned variable, their ranges and edge cases, plus the snapshot/interpolation behavior. Combined with 100% schema coverage of the four generic control params, an agent has everything needed to call and consume this tool.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the four parameters (require, on_error, output_var, node_timeout_ms) are already fully documented in the schema and the description adds nothing about them. It does add meaning about the return values and interpolation, but that is output-side, not parameter-side; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource (读取电量和充电状态) and enumerates the exact output variables (battery_level, battery_charging, battery_success, battery_error), so the agent knows precisely what this tool produces. It does not explicitly differentiate itself from nearby siblings such as ACTION_GET_DEVICE_INFO or ACTION_GET_STORAGE_INFO, so it falls short of a 5.

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

Usage Guidelines3/5

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

Usage is only implied by the resource name — an agent can infer 'call this when you need battery state' but there is no explicit when-to-use/when-not guidance and no named alternative for richer device queries. No prerequisites or preconditions are stated.

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

ACTION_GET_CALL_STATEA

读取当前电话状态(需 READ_PHONE_STATE 权限)。输出:call_state, call_state_name, call_success, call_error。call_state:0=空闲 1=响铃 2=通话中;call_state_name:idle/ringing/offhook。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations supplied, the description usefully discloses the required permission, the four output variables, all call-state values, and the variable-snapshot JSON return form. It could further explain what happens when permission is denied and how call_success and call_error are populated.

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

Conciseness4/5

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

The purpose and permission requirement are front-loaded, followed by compact output definitions and return-format details. The text is efficient overall, though the duplicated punctuation and generic interpolation boilerplate slightly reduce polish.

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

Completeness5/5

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

For a simple read tool with no required parameters or annotations, the description supplies the key permission, state vocabulary, output names, and return representation needed to invoke and interpret it. The input schema separately covers assertion, error handling, and timeout controls, leaving no major invocation gap.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the three workflow-control parameters need little additional explanation. The description nevertheless adds useful invocation semantics not present in the schema by stating that string parameters support ${var} interpolation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool reads the current phone call state, and the idle/ringing/offhook mappings clarify its exact scope. It does not explicitly distinguish this instantaneous state read from siblings such as ACTION_WAIT_CALL_ANSWER or ACTION_WAIT_CALL_END.

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

Usage Guidelines3/5

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

Usage is implied for inspecting the call state at the current moment, and the READ_PHONE_STATE permission prerequisite is stated. However, there is no explicit guidance on when to use this tool rather than waiting for call events or reading related device audio state.

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

ACTION_GET_DEVICE_INFOB

读取设备型号、Android 版本和屏幕尺寸。输出:device_model, device_manufacturer, device_brand, device_android_version, device_sdk, device_screen_width, device_screen_height, device_density, device_success, device_error。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden. It does disclose useful behavior beyond the schema: the exact output field names and the fact that results are returned as a variable-snapshot JSON and that string parameters support ${var} interpolation. However, it says nothing about permissions, timing/cost of the call, or whether the snapshot persists across nodes.

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

Conciseness4/5

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

Two compact sentences, front-loading the purpose before the output-field enumeration and the interpolation note. The long run of device_* field names is dense but functional; nothing is redundant filler.

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

Completeness4/5

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

With no output schema, the description compensates well by enumerating all returned device_* fields, so an agent knows exactly what it gets back. Tool complexity is low and the schema covers the execution-control parameters, so only the missing when-to-use context keeps this from a 5.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the three parameters (require, on_error, node_timeout_ms) are already fully documented in the schema — baseline 3 applies. The description adds only the generic note that string parameters accept ${var} interpolation, which is a marginal addition rather than parameter-specific meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource in '读取设备型号、Android 版本和屏幕尺寸', and the enumerated output fields (device_model, device_sdk, device_screen_width, etc.) further pin down the scope. This distinguishes it from the many other readers in the sibling list (ACTION_GET_APP_INFO, ACTION_GET_SCREEN_STATE, ACTION_GET_BATTERY), though it never names a sibling explicitly.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives — no mention of prerequisites, no exclusion of overlapping tools like ACTION_GET_SCREEN_STATE or ACTION_GET_APP_INFO, and no guidance on whether it must precede other device-info calls. Usage must be inferred from the enum of returned fields.

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

ACTION_GET_LOCATIONA

读取系统最后一次已知位置(GPS/网络取较新者)(需定位权限)。输出:location_success, location_error, latitude, longitude, location_accuracy, location_time, location_summary。不主动定位:从没定位过会失败,结果可能是旧位置(看 location_time 毫秒时间戳)。location_accuracy 单位米。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
output_varNo"纬度,经度" 字符串存到的变量名(默认 location_summary)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden; it does disclose the permission requirement, the no-active-fix behavior, possible staleness, and units for accuracy and the millisecond timestamp. It does not say what location_error contains on permission denial or how the variable snapshot is scoped, which leaves gaps for a mutation-free but environment-dependent read.

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

Conciseness4/5

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

The core constraint (last known, not active) is front-loaded, and the enumerated output fields earn their place since no output schema exists. Minor waste from the doubled full stop and the slightly dense run-on parenthetical structure.

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

Completeness4/5

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

With no output schema, listing the seven returned fields is genuinely necessary and is provided; staleness and permission caveats round it out. It would be complete with guidance on recovery when location_success is false, e.g. advising a fallback or an active-fix path.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the four workflow parameters (require, on_error, output_var, node_timeout_ms) are already documented inline. The description adds only the generic note that string parameters accept ${var} interpolation and that results return as a variable snapshot, which is useful but not parameter-specific.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a precise verb and resource: it reads the system's last known location, explicitly noting that the newer of GPS/network is chosen. The emphasis on 'last known / cached' rather than an active fix distinguishes it from any active-locate or geocoding sibling such as ACTION_GEOCODE.

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

Usage Guidelines4/5

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

It clearly states the precondition (requires location permission) and the key exclusion ('does not actively locate'), plus the failure case if the device has never been located. It stops short of naming alternatives or telling the agent what to do when it fails, so no explicit routing to a fallback tool.

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

ACTION_GET_SCREEN_STATEB

读取屏幕是否亮着、是否锁屏。输出:screen_on, screen_locked, screen_state_success, screen_state_error。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description has to carry the full burden of disclosure. It does useful work by naming the four output variables and saying that results come back as a variable snapshot JSON. It does not say whether the call is read-only, whether it needs any permissions, or how long it takes.

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

Conciseness4/5

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

The description is short and front-loaded: the read purpose comes first, followed by outputs and the interpolation note. Every sentence adds information. The wording is dense but not padded.

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

Completeness4/5

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

There is no output schema, but the description compensates by enumerating the return variables (screen_on, screen_locked, screen_state_success, screen_state_error). Parameters are fully covered by the schema. The remaining gap is the absence of any pointer to alternatives among the many screen-related siblings.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents require, on_error, and node_timeout_ms, and a baseline of 3 is appropriate. The one addition beyond the schema is that string parameters support ${var} interpolation, which is genuinely useful. The description does not explain which parameters the interpolation applies to.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: reading whether the screen is on and whether it is locked. That is enough for an agent to know what the tool does. However, it does not distinguish the tool from related siblings such as ACTION_READ_SCREEN, ACTION_SCREEN_WAKE, or mini_screen_status, so the agent has to infer the difference.

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

Usage Guidelines2/5

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

The description says what the tool reads but never says when to use it, when not to use it, or which sibling to choose instead. With several screen-related siblings, an agent that wants to know whether the screen is lit receives no guidance on whether to use this tool, ACTION_SCREEN_WAKE, or mini_screen_status.

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

ACTION_GET_SENSORA

读取一次光线、距离或加速度传感器的值。输出:sensor_value, sensor_type, sensor_success, sensor_error。只取首个读数的第一个分量(加速度为 X 轴);3 秒内没有读数即失败。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
typeNo传感器类型(默认 light)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
output_varNo读数另存到的变量名(sensor_value 总会写)(默认 sensor_value)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the full disclosure burden and does well: it declares the 3-second no-reading failure, the first-component-only behavior (X axis for accelerometer), the ${var} interpolation support, and the snapshot JSON return. It omits permission/auth requirements and does not explain what makes the read succeed or fail beyond the timeout.

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

Conciseness4/5

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

Front-loaded with the core action, then output fields, then constraints, with no filler sentences. A minor formatting blemish: a doubled Chinese full stop ('。。') and the trailing interpolation note sits slightly out of order.

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

Completeness4/5

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

There is no output schema, and the description fills that gap by enumerating sensor_value, sensor_type, sensor_success, and sensor_error. Since no annotations exist, the disclosed timeout and failure behavior is necessary and present. It is not fully complete because sensor-specific semantics (for example, what a proximity value represents) and permission needs are unstated.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all five parameters are already documented, establishing a baseline of 3. The description adds only the ${var} interpolation note and the first-component behavior, which is marginally useful but does not deepen the meaning of type, require, on_error, output_var, or node_timeout_ms.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: reads one value from a light, proximity, or accelerometer sensor. That is clearly distinct from siblings such as ACTION_GET_BATTERY or ACTION_GET_DEVICE_INFO, though it never names an alternative or boundary.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance, and no sibling alternative is mentioned. Usage is only implied by 'reads a single value', which an agent must infer.

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

ACTION_GET_SETTINGA

读取一项系统设置(只读)。输出:setting_value, setting_key, setting_namespace, setting_success, setting_error。值总是字符串;键不存在或无权读取时 setting_success=false(新版 Android 限制读取部分 secure/global 键)。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
keyYes设置键名,如 screen_off_timeout、adb_enabled;支持 ${var}
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
namespaceNo设置表(默认 system)
output_varNo结果变量名(默认 setting_value)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden and does well: it declares read-only semantics, lists the five result fields, states that values are always strings, and explains that setting_success=false covers both missing keys and permission denials under newer Android restrictions. It also discloses ${var} interpolation and that results are returned as a variable snapshot JSON. Missing only retry/timeout behavior, which the schema covers instead.

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

Conciseness4/5

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

It is front-loaded with the purpose, then outputs, then failure semantics, then interpolation, which is a sensible order. There is a stray doubled period ('。。') and the five-field output enumeration is dense, but since no output schema exists the enumeration earns its place.

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

Completeness4/5

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

For a six-parameter tool with no annotations and no output schema, the description covers the essential ground: what is returned, that values are strings, how failure is signalled, platform restrictions, and interpolation/return format. Only the interaction between require and on_error failure handling is left entirely to the schema, a minor gap.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter including key, namespace, require, on_error, output_var and node_timeout_ms is already documented, giving a baseline of 3. The description adds some meaning by noting string parameters support ${var} interpolation and that secure/global keys may be unreadable, but the interpolation note largely repeats the key schema description and it says nothing extra about namespace choice or output_var.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource, '读取一项系统设置(只读)' (read one system setting, read-only), so an agent immediately knows what the tool does and that it has no side effects. It does not differentiate from nearby siblings such as ACTION_GLOBAL_KEY or ACTION_SET_VARIABLE, which is the only thing keeping it from a 5.

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

Usage Guidelines3/5

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

Usage is implied by the read-a-setting purpose and the note that newer Android restricts reading certain secure/global keys, which hints at when reads may fail. There is no explicit 'use this when…, use X instead' routing against any of the dozens of sibling ACTION_* tools, so the agent must infer placement itself.

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

ACTION_GET_SIM_INFOA

读取 SIM 卡数量、运营商、号码(需 READ_PHONE_STATE 权限)。输出:sim_count, sim_carriers, sim_numbers, sim_summary, sim_success, sim_error。sim_carriers / sim_numbers 为逗号分隔;很多 SIM 卡不存本机号码,sim_numbers 常为空。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
output_varNo概要字符串存到的变量名(默认 sim_summary)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden. It does well on prerequisites (READ_PHONE_STATE) and on output shape and formatting (comma-separated lists, possible empty sim_numbers, variable-snapshot JSON return), but it says nothing about failure behavior, whether a permission denial throws or returns sim_error, or interaction with the require/on_error parameters.

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

Conciseness4/5

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

Dense and front-loaded: capability, permission, outputs, then caveats. The only blemishes are a doubled full stop and a slightly cluttered inline enumeration of output fields, but no sentence is wasted.

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

Completeness4/5

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

With no output schema, the description correctly compensates by listing the returned fields and their formats. Since all four input parameters are fully described in the schema, the remaining omission (error semantics when permission is missing) is minor for a read-only probe tool.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns an extra point by documenting cross-cutting behavior not in the schema, namely that string parameters support ${var} interpolation and that results are persisted as a variable snapshot.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: reading SIM count, carrier and phone number, and it enumerates the exact outputs (sim_count, sim_carriers, sim_numbers). It does not explicitly distinguish itself from nearby siblings such as ACTION_GET_DEVICE_INFO, ACTION_GET_CALL_STATE or ACTION_NETWORK_STATUS, which an agent could plausibly confuse with SIM data.

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

Usage Guidelines3/5

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

Usage context is implied by the READ_PHONE_STATE permission note and the caveat that many SIMs do not store a local number, so agents know to expect empty results. There is no explicit when-to-use or when-not-to-use guidance relative to the other device/network state tools.

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

ACTION_GET_STORAGE_INFOB

读取内部存储空间(字节)。输出:storage_total, storage_available, storage_used, storage_available_percent, storage_success, storage_error。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden, and it does add real value: the exact output variable names (including storage_success and storage_error) and the fact that results are returned as a variable-snapshot JSON object. However, it says nothing about permissions, platform constraints, or whether a failed read still returns partial fields, which matters for a device-state query.

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

Conciseness4/5

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

Front-loaded with purpose in the first clause, followed by output fields and then a workflow-behavior note; no filler sentences. The output-field enumeration is long but earns its place since there is no output schema.

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

Completeness4/5

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

For a zero-required-parameter device-state read with no output schema, the description covers purpose, returned fields, and variable-snapshot semantics, which is what an agent needs to invoke and consume it. The remaining gap is the lack of any routing guidance against the many sibling read tools.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the three parameters (require, on_error, node_timeout_ms) are already fully documented in the schema, establishing a baseline of 3. The description adds only an adjacent note that string parameters support ${var} interpolation, which is useful context but does not deepen any individual parameter's meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: read internal storage space, with units (bytes) made explicit. It is clearly distinct from siblings such as ACTION_GET_DEVICE_INFO or ACTION_GET_TRAFFIC, though it never names those alternatives directly.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus similar read tools like ACTION_GET_DEVICE_INFO or ACTION_GET_TRAFFIC, and no prerequisites or exclusions are stated. The agent must infer that this is a straightforward storage-status read from the purpose line alone.

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

ACTION_GET_TIMEA

获取当前时间及年月日时分秒。输出:current_time, current_timestamp, current_year, current_month, current_day, current_hour, current_minute, current_second, current_weekday, time_success。current_weekday 0=周日…6=周六(与 ACTION_PARSE_DATETIME 的 1=周一不同)。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
formatNo时间格式(SimpleDateFormat 模式)(默认 yyyy-MM-dd HH:mm:ss)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
timestampNo目前不影响输出;毫秒时间戳总写在 current_timestamp(默认 false)
output_varNo格式化时间另存到的变量名(current_time 总会写)(默认 current_time)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description meaningfully discloses the output variables, variable-snapshot JSON return format, ${var} interpolation, and the potentially error-prone Sunday-based weekday numbering. It does not explicitly discuss timezone behavior or state that the operation is side-effect free, but it covers the important behavior of this simple read-oriented tool.

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

Conciseness4/5

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

The description is front-loaded with the operation and then moves efficiently through outputs, compatibility details, and invocation behavior. The output enumeration is dense but justified by the absence of an output schema; the duplicated “。。” punctuation is a minor polish issue.

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

Completeness5/5

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

For a simple tool with no required parameters, the combined definition covers invocation defaults and error handling through the schema while the description supplies output names, return structure, and interoperability semantics. Enumerating the outputs is especially valuable because no output schema is provided.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already well documented. The description adds value beyond that baseline by explaining that string parameters support ${var} interpolation, a cross-cutting invocation behavior absent from the individual parameter schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening “获取当前时间及年月日时分秒” clearly states that the tool retrieves the current time and its date/time components. It does not differentiate its purpose from siblings such as ACTION_WAIT_UNTIL_TIME; the ACTION_PARSE_DATETIME reference concerns weekday encoding rather than tool selection.

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

Usage Guidelines3/5

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

Retrieving the current time provides an implied use case, but there is no explicit guidance on when to choose this tool over parsing, waiting, or other time-related actions. The sibling cross-reference is still useful because it prevents incorrect weekday interpretation.

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

ACTION_GET_TRAFFICB

读取开机以来整机累计收发流量(字节)。输出:traffic_rx, traffic_tx, traffic_total, traffic_summary, traffic_success, traffic_error。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
output_varNo可读汇总字符串存到的变量名(默认 traffic_summary)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden. It does disclose the returned field names and the snapshot-JSON result format, which is useful, but it says nothing about permissions, whether counters span all SIMs/interfaces, or how the schema's require/on_error behavior interacts with the read.

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

Conciseness4/5

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

Three short clauses: purpose first, then output fields, then interpolation/result-format note. Nothing is redundant, though the output enumeration is a dense list that could be trimmed.

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

Completeness4/5

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

For a simple read tool with no output schema, the description covers what is read, the fields returned, and the variable-snapshot result shape. The remaining gap is error/requirement semantics that the schema exposes but the description does not discuss.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3; the description adds a genuinely new cross-cutting fact - that string parameters accept ${var} interpolation - which the schema does not state. It still does not explain output_var/require interactions, so it is not a full 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: read the device-wide cumulative RX/TX byte counters since boot. That clearly separates it from neighbors like ACTION_GET_STORAGE_INFO or ACTION_NETWORK_STATUS, though it never names an alternative explicitly.

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

Usage Guidelines2/5

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

There is no guidance on when to choose this over sibling tools that also report connectivity or device state (ACTION_NETWORK_STATUS, ACTION_GET_SIM_INFO), nor any prerequisite or exclusion. The agent must infer usage entirely from the purpose sentence.

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

ACTION_GET_WEATHERA

按经纬度查当前天气(Open-Meteo,免 key)(需网络)。输出:weather_success, weather_error, weather_temperature, weather_wind_speed, weather_wind_direction, weather_code, weather_json。温度 ℃、风速 km/h;连接/读取超时固定各 10 秒。weather_code 为 WMO 代码:0 晴,1–3 多云/阴,45/48 雾,51–67 毛毛雨/雨,71–77 雪,80–82 阵雨,85/86 阵雪,95–99 雷暴。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
latitudeYes纬度 -90–90,支持 ${var}
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
longitudeYes经度 -180–180,支持 ${var}
output_varNo原始响应 JSON 存到的变量名(默认 weather_json)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full load and does so: it discloses the provider, that no API key is needed, the network prerequisite, fixed 10s connect/read timeouts, the exact output variable names, and that results are returned as a variable-snapshot JSON. It also decodes the weather_code field, which is genuinely behavior-level information an agent could not infer.

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

Conciseness4/5

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

Front-loaded with the core action, then progressively discloses outputs, units, timeouts, and the WMO code table — every block is useful. Minor blemishes: a duplicated period ('。。'), a stray trailing sentence, and the full output-variable enumeration is slightly bulky.

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

Completeness5/5

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

There is no output schema, so the description must explain return values, and it enumerates every returned variable plus units (℃, km/h) and the WMO code semantics. Combined with error variables and timeout behavior, an agent has everything needed to call and interpret this tool.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents latitude/longitude ranges, on_error, require, and output_var. Beyond that the description explains that string parameters accept ${var} interpolation and that weather_json is the default sink for the raw response, adding operational meaning on top of the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: fetch current weather by latitude/longitude, and names the backing provider (Open-Meteo, key-free). This clearly separates it from siblings such as ACTION_GET_LOCATION (device coordinates) or ACTION_GEOCODE (place name to coordinates).

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

Usage Guidelines3/5

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

The description implies context (you must already have coordinates, and network access is required) but never says when to prefer this over ACTION_GET_LOCATION, ACTION_GEOCODE, or ACTION_HTTP_REQUEST for arbitrary weather APIs. Usage is inferable rather than stated.

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

ACTION_GLOBAL_KEYA

全局按键:返回、桌面、最近任务、通知栏、回车等(需 Shizuku/root 或无障碍(见 key 说明))。输出:key_success。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
keyYes按键。back/home/recents/notifications:先 shell keyevent,失败退回无障碍;quick_settings/power_dialog:仅无障碍;screenshot_toggle/enter/delete/space/tab:仅 shell
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose meaningful behavior: the privilege prerequisite (Shizuku/root or accessibility), a shell-keyevent-then-accessibility fallback chain for the four navigation keys, and which keys are accessibility-only or shell-only. It does not cover failure reporting beyond naming the key_success output variable.

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

Conciseness4/5

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

Very compact and front-loaded: purpose first, then prerequisite, then output contract, then interpolation note. The nested parenthetical ("(需...(见 key 说明))") is slightly dense but every clause carries information.

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

Completeness4/5

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

There is no output schema, but the description names the return contract (key_success) and the variable-snapshot JSON shape, and it covers prerequisites and per-key channel constraints. The main remaining gap for an agent is disambiguation from ACTION_GLOBAL_NAV.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the per-key channel semantics in the enum description already do the heavy lifting and the baseline is 3. The description adds only marginal meaning beyond the schema in this dimension, namely the ${var} interpolation support and that string params are interpolated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("全局按键" – press global hardware/navigation keys) and enumerates the supported keys (back/home/recents/notifications/enter). However, it never distinguishes itself from the sibling ACTION_GLOBAL_NAV, which by name sounds like it covers the same navigation-key territory, so an agent cannot route between the two from the description alone.

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

Usage Guidelines3/5

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

Conveys the precondition ("需 Shizuku/root 或无障碍") and, via the key description, which keys work through which channel with fallback ordering. It gives no explicit when-to-use vs when-not guidance and names no alternative tool, so routing between this and ACTION_GLOBAL_NAV remains inference.

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

ACTION_GLOBAL_NAVA

无障碍全局动作:返回、桌面、最近任务、通知栏、快捷设置、电源菜单、锁屏、截屏(需无障碍)。输出:nav_success, nav_error。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
actionYes全局动作(纯无障碍 performGlobalAction,不需要 Shizuku)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the accessibility requirement, the output variables (nav_success, nav_error), ${var} interpolation, and that results come back as a variable-snapshot JSON — useful context beyond the schema. However it omits risk profile for disruptive actions (power_dialog, lock_screen) and any failure/timeout behavior for the navigation itself.

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

Conciseness4/5

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

A single dense paragraph that front-loads the action list, then the prerequisite, then output and interpolation semantics. No filler, though the output-variable note could be separated for scannability.

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

Completeness4/5

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

For a four-parameter action dispatcher with no output schema, the description names the result fields (nav_success, nav_error), states the prerequisite, and explains interpolation. It lacks only risk/lifecycle detail for the more disruptive actions.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so action, require, on_error, and node_timeout_ms are already documented in the schema. The description adds only the ${var} interpolation note, which lightly relates to string parameters like 'require', but explains nothing about the workflow-control parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (accessibility global actions) and enumerates the eight operations (back, home, recents, notifications, quick settings, power menu, lock, screenshot), matching the enum in the schema. It hints at differentiation via '(需无障碍)' against siblings like ACTION_SCREENSHOT or ACTION_GLOBAL_KEY, but never names them explicitly.

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

Usage Guidelines3/5

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

It conveys the prerequisite (accessibility service required, no Shizuku) and implied usage — pick one of these eight global navigation actions. There is no explicit when-to-use versus ACTION_GLOBAL_KEY or ACTION_SCREENSHOT, and no guidance on which actions are destructive (power menu, lock screen).

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

ACTION_HTTP_REQUESTA

发送 HTTP 请求,响应体存入变量(需网络)。输出:http_success, http_error, http_status_code, http_response, http_truncated。headers / body 要写成字符串(JSON 转义成字符串);写成嵌套 JSON 对象会被转成 {k=v} 文本而失效。请求失败不抛错:看 http_success(状态码 200–399 为 true),要按节点出错处理可加 require=http_success。对不稳定的第三方服务设合理 timeout(失败默认跳过继续)。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
urlYes请求 URL,支持 ${var}
bodyNo请求体字符串,支持 ${var};只在 POST/PUT/PATCH 发送,未设 Content-Type 时按 application/json
methodNoGET / POST / PUT / DELETE / PATCH 等(PATCH 以 POST + X-HTTP-Method-Override 发送)(默认 GET)
headersNo请求头字符串:JSON 对象字符串(如 {"Authorization":"Bearer x"})或 Key:Value;Key2:Value2,支持 ${var}
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
timeoutNo连接/读取超时毫秒(最小 1000)(默认 30000)
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
output_varNo响应体另存到的变量名(http_response 总会写)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟
max_response_bytesNo响应体上限字节,超出截断并置 http_truncated=true(默认 5242880)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: it discloses that failures do not throw, defines http_success as status 200–399, notes default skip-on-failure, and warns that headers/body must be JSON-escaped strings or they silently degrade to {k=v} text. It does not cover redirect handling, auth requirements beyond the header example, or rate limits, so it stops short of a 5.

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

Conciseness4/5

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

It is front-loaded with purpose, then output fields, then failure semantics, then parameter gotchas — a sensible order with no filler sentences. It is dense to the point of being run-on and contains a duplicated sentence terminator ('。。'), but nothing is wasted.

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

Completeness5/5

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

For a 10-parameter tool with no output schema, the description supplies exactly what is otherwise missing: the names and meaning of the returned variables (http_success, http_error, http_status_code, http_response, http_truncated) and the shape of the return (a variable snapshot JSON). Combined with the error-handling and interpolation notes, an agent has enough to invoke it correctly without further context.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: the string-vs-nested-object gotcha for headers and body is a behavioral trap the schema does not flag, and it explains the require=http_success idiom. That is genuine added value over the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb and resource — send an HTTP request and store the response body in a variable — plus the precondition (network required). No sibling tool in the list performs HTTP requests, so no disambiguation is needed; an agent knows immediately this is the outbound-network action.

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

Usage Guidelines4/5

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

It gives concrete when-to guidance: set a reasonable timeout for unstable third-party services, add require=http_success when a failed request should be treated as a node error, and rely on the default skip behavior otherwise. It lacks an explicit 'when not to use' clause, but with no competing HTTP sibling there is little to exclude.

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

ACTION_INPUT_TEXTA

输入文字:写入输入框,可选输入后回车提交(需无障碍(mode=shell/ime 需 Shizuku 或 root))。输出:input_success。a11y 模式会读回输入框核对内容。shell/ime 的 input text 打不出中文等非 ASCII 字符。QQ/微信等输入框点过后常不报告焦点,传 target 坐标才写得进去。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
modeNoa11y=无障碍写入(未生效时退回剪贴板粘贴,中文可用);shell/ime=shell `input text`(默认 a11y)
textNo要输入的文字,支持 ${var};为空时须 submit=true(只提交)或 allow_empty=true(清空)
submitNo输入后触发 IME 回车(搜索/发送);优先无障碍 IME_ENTER,不支持时退回 shell keyevent 66(默认 false)
targetNo"x,y" 坐标:定位包含该点的输入框并先聚焦(a11y 写入和 submit 用,shell/ime 写入不看它);不传用当前焦点输入框。支持 ${var}
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
allow_emptyNo允许 text 为空时把输入框设为空串(清空)(默认 false)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does substantial work: it discloses the return value (input_success), that a11y mode reads back to verify content, the privilege requirement for shell/ime, the non-ASCII limitation, and the focus-reporting quirk. It does not say whether typed text replaces or appends to existing content, which is a meaningful behavioral gap for an input tool.

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

Conciseness4/5

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

Purpose and output are front-loaded, then caveats follow in a compact sequence. It is dense and mostly earns its sentences, though there is minor clutter such as a stray double period and a slightly run-on mode/parenthesis clause.

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

Completeness4/5

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

For an 8-parameter, 3-mode action with no output schema, the description covers output name, verification behavior, platform prerequisites, non-ASCII limits, and interpolation. The main missing piece is the replace-vs-append semantics of the text parameter.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains every parameter and the baseline is 3. The description adds a little (mode requirements, why target matters, ${var} interpolation applied to all string parameters) but mostly restates what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opening clause gives a specific verb+resource (write text into an input box) plus the optional submit behavior, so the agent immediately knows what the tool does. It never names a sibling such as ACTION_CLICK or ACTION_TEXT_OPERATION to draw a boundary, so it stops short of full differentiation.

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

Usage Guidelines4/5

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

Gives concrete selection guidance: use a11y mode for Chinese/non-ASCII, shell/ime only when Shizuku or root is available, and pass target coordinates for QQ/WeChat inputs that do not report focus. No explicit exclusions or named alternative tools are given, so it is clear context rather than a full when/when-not rule set.

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

ACTION_LAUNCH_APPA

打开应用,或打开系统设置的某一页。输出:launch_success, launch_error, launch_has_overlay, launch_package。Android 10+ 后台启动可能被系统静默拦截而 launch_success 仍为 true;launch_has_overlay 表示是否有悬浮窗权限(后台启动的豁免条件之一)。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
activityNo可选:完整 Activity 类名,直接启动该页面
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
package_nameNo应用包名,支持 ${var};不给 intent_action 时必填
intent_actionNo打开系统设置页,只允许 android.settings.*(如 android.settings.BLUETOOTH_SETTINGS)或 android.intent.action.POWER_USAGE_SUMMARY;给了就忽略 package_name
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does substantial work: it names the output variables, warns that on Android 10+ a background launch may be silently blocked while launch_success still returns true, and explains that launch_has_overlay reflects overlay permission as a background-launch exemption. That is exactly the kind of non-obvious failure mode an agent needs. It stops short of stating required permissions, whether an overlay prompt is triggered, or any timing/latency expectations, so not a 5.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause, followed by return values and then the critical Android 10+ caveat — a sensible order. It is compact for the amount of behavioral content packed in, though the doubled period ('。。') and the slightly run-on caveat sentence show minor polish issues.

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

Completeness4/5

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

There is no output schema, and the description compensates by enumerating the four returned variables and their meanings, including the counterintuitive launch_success caveat. Combined with a fully documented six-parameter schema, an agent has enough to call this correctly; only permission prerequisites and failure-handling behavior (beyond on_error) are left unstated.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters (including the on_error enum and node_timeout_ms default) are already documented in structured form, making 3 the baseline. The description adds only the cross-cutting note that string parameters accept ${var} interpolation, which is genuinely useful but does not deepen any individual parameter's meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and two concrete resources: launch an app (package_name) or open a system settings page (intent_action). An agent can immediately tell this is a launch/activation action rather than a query or search. It does not explicitly differentiate itself from look-alike siblings such as ACTION_APP_SEARCH or ACTION_FOREGROUND_APP, which keeps it at 4 rather than 5.

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

Usage Guidelines3/5

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

Usage is implied through the two modes ('open app' vs 'open a settings page'), and the schema clarifies that intent_action overrides package_name. However, there is no explicit when-to-use guidance against alternatives — an agent must infer on its own whether to call this versus ACTION_APP_SEARCH, ACTION_GET_APP_INFO, or ACTION_FOREGROUND_APP when it wants to know or confirm the foreground app.

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

ACTION_LOGA

输出一条调试日志。只写 Logcat(tag HabitatLog),不进工作流运行日志;要让用户看到请用 ACTION_TOAST 或 ACTION_WORKSPACE。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
levelNo日志级别(默认 info)
messageNo日志内容,支持 ${var}
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does disclose the key traits: output destination (Logcat, tag HabitatLog), exclusion from the workflow run log, ${var} interpolation in string parameters, and a variable-snapshot JSON result. It does not discuss failure semantics of the node itself (that lives only in the schema's on_error/require fields), which keeps it just short of a 5.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause, followed by the destination constraint and the alternative routing, then the interpolation/return notes. It is compact and earns its sentences, but the stray doubled punctuation and the dense packing of three distinct facts into one line slightly reduce polish.

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

Completeness4/5

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

For a five-parameter tool with no annotations and no output schema, the description covers the essentials an agent needs: where the log goes, what it does not do, how interpolation works, and what shape the result takes (variable snapshot JSON). Only the per-node error/timeout behavior is left entirely to the schema, which is acceptable given 100% coverage there.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so level, require, on_error and node_timeout_ms are already fully documented in the schema. The description adds only the ${var} interpolation note, which the schema also mentions for message, so it contributes little beyond the structured fields; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

"输出一条调试日志" gives a specific verb plus resource, and the description immediately bounds the scope: it writes only to Logcat under tag HabitatLog and never to the workflow run log. It also names the sibling actions to use instead when the goal is user-visible output, so an agent can separate it from ACTION_TOAST/ACTION_WORKSPACE without inspecting schemas.

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

Usage Guidelines5/5

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

The description states an explicit when-not condition (do not use this if the user should see the message) and names the concrete alternatives, ACTION_TOAST and ACTION_WORKSPACE. It also implicitly scopes use to developer/diagnostic tracing by calling it a debug log written only to Logcat.

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

ACTION_LONG_PRESSA

长按:按坐标或界面文字 / viewId 长按目标(需无障碍)。输出:long_press_success。target 含逗号一律按坐标解析,解析失败直接失败(不像 ACTION_CLICK 会退回文字匹配);不支持 region/occurrence。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
targetYes"x,y" 像素坐标;或界面文字 / 完整 viewId(如 com.pkg:id/xxx,不加 id: 前缀)。支持 ${var}
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
durationNo按住时长毫秒(坐标模式和手势兜底时生效),限制 1-60000(默认 800)
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does most of it: it discloses the accessibility dependency, the strict parse-failure semantics (deliberately different from ACTION_CLICK), unsupported region/occurrence options, ${var} interpolation for string parameters, and that results are returned as a variable snapshot JSON. It omits side effects/rollback and any rate or timing caveats, which keeps it short of a 5.

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

Conciseness4/5

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

It is front-loaded with the verb and target modes, then the key behavioral caveat, then output and interpolation notes — a sensible ordering with no filler. It loses a point for a duplicated punctuation artifact ('。。') and a slightly run-on sentence that merges the failure-mode, unsupported-options, and interpolation topics.

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

Completeness4/5

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

For a 5-parameter action tool with no output schema and no annotations, the description covers the critical unknowns: prerequisite (accessibility), output variable name and return shape (variable snapshot JSON), and the failure contract. Remaining gaps (interaction of duration with the text-matching path, timeout behavior interplay) are partially covered by the input schema.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents target, require, duration, on_error, and node_timeout_ms. The description adds genuine meaning only for target (comma implies coordinate mode, parse failure is fatal) and a general note that string params support ${var}; the other four parameters get no added semantic context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource (长按 / long press) and states the two target resolution modes (coordinates or UI text/viewId), plus the accessibility prerequisite. It explicitly contrasts its parsing behavior with the sibling ACTION_CLICK (no fallback to text matching), so an agent can distinguish the two without opening either schema.

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

Usage Guidelines4/5

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

It gives clear operating context: requires accessibility service, and comma-containing targets are always parsed as coordinates with hard failure rather than falling back to text matching. It also rules out region/occurrence options, implicitly routing those needs elsewhere, but it never names a positive alternative tool or states explicitly when a caller should prefer ACTION_CLICK instead.

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

ACTION_LOOPA

计数或条件循环:每次进入判断是跳进循环体还是走 next 结束。输出:loop_index。循环体最后一个节点的 next 要指回本循环节点;本节点的 next 是循环结束后的去向。count 模式结束时 counter_var 重置为 0。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
modeNocount=计数循环,while=条件循环(默认 count)
timesNocount 模式:循环次数,支持 ${var}(默认 1)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
body_nodeYes循环体第一个节点的 id
counter_varNocount 模式:当前轮次(从 1 起)写到的变量名(默认 loop_index)
condition_exprNowhile 模式:条件,只支持 变量名 == 值 / 变量名 != 值
max_iterationsNowhile 模式:最多迭代次数(默认 100)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description usefully discloses non-obvious behavior: the body’s final next must point back to the loop, the loop node’s own next is the exit path, and counter_var resets to 0 after count mode. It also mentions interpolation and variable-snapshot JSON output, though failure and iteration-limit behavior are left to the schema.

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

Conciseness4/5

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

The description is compact, front-loaded with the purpose, and devotes nearly every sentence to invocation-critical behavior. The duplicated Chinese full stop and the slightly dense presentation are minor polish issues.

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

Completeness4/5

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

Together with the fully described schema, the description covers the essential information needed to configure and wire this comparatively complex control-flow node, including output behavior despite the absence of an output schema. A small ambiguity remains between “输出:loop_index,” support for a custom counter_var, and the later statement that the result is a variable snapshot JSON.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already well documented. The description adds meaningful lifecycle and structural semantics for body_node and counter_var, especially the required back-edge and post-loop counter reset, rather than merely repeating parameter definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening “计数或条件循环” clearly identifies the tool as a count-based or condition-based workflow loop, and the next sentence explains its body-versus-exit control flow. It does not explicitly differentiate itself from siblings such as ACTION_RETRY or CONDITION_SWITCH.

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

Usage Guidelines4/5

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

The description gives clear usage contexts—counted iteration and conditional iteration—and supplies essential wiring guidance for constructing a loop body. It does not state when not to use a loop or name an alternative for retries or ordinary conditional branching.

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

ACTION_MATHA

两个数的四则、取模、乘方运算。输出:math_result。结果总是小数(如 5.0),CONDITION_SWITCH 用 == 比较时要写 5.0,或改用 > / <;除数为 0 时结果为 0;无法解析的操作数按 0。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
aNo第一个操作数:数字、${var} 或数字变量名(默认 0)(也认:operand1_var)
bNo第二个操作数:数字、${var} 或数字变量名(默认 0)(也认:operand2、operand2_var)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
operationYes运算类型
output_varNo结果变量名(默认 math_result)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does well: it discloses that all results are decimals, that division by zero yields 0, that unparseable operands are treated as 0, that ${var} interpolation is supported, and that output is a variable-snapshot JSON. It does not explain the error-flow semantics of require/on_error, but those are documented in the schema.

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

Conciseness4/5

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

Content is front-loaded and dense, with the operation scope first and caveats after; every clause conveys real information. Minor blemishes: a stray doubled period ('。。') and a run-on sentence chained with semicolons that mixes output type, comparison caveats, and error behavior.

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

Completeness5/5

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

For a 7-parameter math node with no annotations and no output schema, the description covers the essentials an agent needs: output variable, return format, numeric type coercion, interpolation, and zero/parse failure edge cases. The remaining parameters (require, on_error, node_timeout_ms) are fully described in the schema, so nothing critical is missing.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter already carries its own description, which sets the baseline at 3. The description adds only marginal extra meaning, notably that string parameters support ${var} interpolation, a point the schema also touches on.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb+resource: arithmetic on two numbers covering the four basic operations, modulo, and power, and names the default output variable math_result. An agent can tell this apart from siblings like ACTION_TEXT_OPERATION or ACTION_ASSERT, though it never explicitly contrasts itself with them.

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

Usage Guidelines3/5

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

Usage guidance is indirect: it warns that results are always floats and that CONDITION_SWITCH must compare with 5.0 under == or use > / <, which is genuinely actionable downstream advice. However, it never states when to pick this tool over alternatives such as ACTION_RANDOM, ACTION_SET_VARIABLE, or ACTION_ASSERT, so guidance is implied rather than explicit.

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

ACTION_MEDIA_CONTROLA

媒体控制:向当前播放的应用发送播放/暂停/切歌等媒体键(需 Shizuku 或 root)。输出:media_success, media_error。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
cmdNo媒体键;play_pause=播放/暂停切换,prev 与 previous 相同(默认 play)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the Shizuku/root permission requirement, the output variables (media_success, media_error), and that results are returned as a variable-snapshot JSON. It omits what happens when no media session is active or how failures are reported beyond the error variable.

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

Conciseness4/5

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

Three short clauses, front-loaded with purpose then prerequisite then output/interpolation behavior. No filler, though the interpolation remark is dense shorthand an agent must parse.

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

Completeness4/5

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

For a 4-optional-parameter, no-annotation, no-output-schema action, the description covers what it does, what it needs (Shizuku/root), what it returns, and templating support. Remaining gaps (no-active-session behavior, error semantics) are minor against a fully documented schema.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the enum, defaults and per-parameter meanings are already documented in the schema. The description adds one genuine cross-cutting fact — string parameters support ${var} interpolation — but says nothing about cmd/require/on_error semantics beyond that, so baseline 3 fits.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'send media keys (play/pause/track skip, etc.) to the currently playing app'. The scope 'currently playing app' distinguishes it from siblings like ACTION_PLAY_MEDIA, ACTION_VOLUME or ACTION_GLOBAL_KEY without naming them explicitly.

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

Usage Guidelines3/5

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

Gives a real prerequisite ('requires Shizuku or root'), which is useful context for selecting the tool. However it never says when to prefer this over ACTION_PLAY_MEDIA, ACTION_VOLUME, or ACTION_GLOBAL_KEY, and gives no exclusions or failure conditions.

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

ACTION_MINI_SCREENA

悬浮小屏:给用户实时显示文字、图片、进度(宿主 App 注册;需开启 Habitat 无障碍服务或悬浮窗权限)。输出:mini_screen_success, mini_screen_shown, mini_screen_error。show/append 时 text、image、title、progress 至少给一个。不阻塞。用户在本次运行中关掉小屏后,后续写入只更新内容不再弹出(mini_screen_shown=false)。来源标签由系统标注,不能用参数指定。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
textNo正文,支持 ${var},最多 4000 字
imageNo图片:绝对路径(经路径守卫)或 base64(可带 data:image/...;base64, 前缀),支持 ${var}
titleNo标题,支持 ${var},最多 60 字
actionNoshow=替换内容,append=追加一段,progress=只更新进度(和标题),hide=隐藏但保留内容,clear=隐藏并清空(默认 show)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
positionNo位置;不填沿用上次(初始 top),用户拖动过则按用户位置
progressNo进度 0–100;action=progress 时必填
duration_msNo大于 0 时到时自动隐藏;0=一直显示(默认 0)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does substantial work: it declares non-blocking behavior, the permission prerequisite, that output is returned as the variables mini_screen_success/mini_screen_shown/mini_screen_error, and — importantly — that once a user dismisses the overlay during the run, later writes only update content and do not re-pop (mini_screen_shown=false). It also notes the source label cannot be set via parameters. What it omits is whether concurrent invocations create multiple overlays and any cost/rate implications of repeated writes.

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

Conciseness4/5

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

The structure is front-loaded and logical: purpose and prerequisite, then output variables, then input constraints, then behavioral traits. Sentences are dense but each carries information; the parenthetical prerequisites and the trailing interpolation note are slightly compressed but nothing is redundant.

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

Completeness4/5

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

For a 10-parameter, zero-required, no-output-schema tool, the description covers the essentials an agent needs: what it renders, permission gating, non-blocking semantics, the minimum-content rule, dismissal persistence, and the names of the result variables. The main remaining gap is interaction with the mini_screen_status sibling and any multi-overlay behavior, which matters given the tool's UI side effects.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline would be 3; the description adds real meaning beyond it by stating the cross-parameter rule that show/append requires at least one of text, image, title, or progress — a constraint the schema does not encode since zero parameters are marked required. It also documents ${var} interpolation across string parameters and that results come back as a variable snapshot JSON, both of which are semantic additions rather than restatements.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific resource and capability: a floating mini-screen that shows text, images, and progress to the user in real time. It is clear enough to distinguish from most siblings, but it never names mini_screen_status (the natural query counterpart) or explains how it differs from ACTION_TOAST or ACTION_SEND_NOTIFICATION, so the differentiation is left implicit.

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

Usage Guidelines3/5

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

Usage is implied by 'show text/images/progress to the user in real time' plus the stated prerequisite (Habitat accessibility service or overlay permission), which is genuinely useful context. However, there is no explicit when-to-use vs. when-not guidance and no routing to mini_screen_status for reading current state, leaving the agent to infer the boundary.

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

ACTION_NETWORK_STATUSA

查询是否联网、网络类型,可选查 IP。输出:network_connected, network_type, wifi_ip, mobile_ip, network_success, network_error。network_type:wifi / cellular / ethernet / other / none。mobile_ip 实为第一个非回环 IPv4 地址,连着 WiFi 时可能就是 WiFi 地址。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
actionNostatus=只查连接与类型;ip / all=另外写 wifi_ip、mobile_ip(默认 status)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.7/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden and does reasonably well: it enumerates the output variables (network_connected, network_type, wifi_ip, mobile_ip, network_success, network_error), lists the possible network_type values, and discloses a non-obvious quirk that mobile_ip is actually the first non-loopback IPv4 address and may equal the WiFi address. It also notes that results are returned as a variable-snapshot JSON. It does not cover permission requirements or whether the call 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.

Conciseness4/5

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

The purpose is front-loaded, followed by output fields, then the mobile_ip caveat, then the interpolation note; every sentence carries information. Minor polish issues remain, such as the doubled '。。' punctuation, but there is no filler.

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

Completeness4/5

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

There is no output schema, so the description appropriately enumerates the returned variables and their likely values, and it flags the mobile_ip edge case that would otherwise mislead an agent. The omission of permission or side-effect information is minor for what is fundamentally a read-only status probe.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already documented in the schema and the baseline is 3. The description adds marginal value by noting that string parameters support ${var} interpolation, which is not visible in the schema, but it does not expand on require, on_error, or node_timeout_ms.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb-and-resource combination: query whether the device is online, the network type, and optionally the IP. The action enum values (status/ip/all) make the scope precise enough that an agent can distinguish this read-only status tool from ACTION_WIFI or ACTION_GET_TRAFFIC. It stops short of explicitly naming a sibling tool as the alternative.

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

Usage Guidelines3/5

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

The description implies usage through the action breakdown (status = connectivity only, ip/all = also return addresses), but it never states when an agent should pick this tool rather than ACTION_WIFI, ACTION_GET_SIM_INFO, or ACTION_GET_TRAFFIC. The guidance is implied rather than explicit.

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

ACTION_PARSE_DATETIMEA

取当前时间、解析或格式化日期时间,可加减偏移。输出:datetime_result, datetime_epoch, datetime_year, datetime_month, datetime_day, datetime_hour, datetime_minute, datetime_second, datetime_weekday, datetime_success, datetime_error。按 LocalDateTime 解析,input_format 必须含时间部分(纯日期如 yyyy-MM-dd 会失败);datetime_weekday 1=周一…7=周日。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
inputNoparse/format 时必填:日期时间字符串,format 也可给毫秒时间戳;支持 ${var}
actionNonow=当前时间,parse=解析字符串,format=格式化(默认 now)
formatNo输出格式(java.time 模式)(默认 yyyy-MM-dd HH:mm:ss)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
add_daysNo加减天数(可为负)(默认 0)
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
add_hoursNo加减小时(可为负)(默认 0)
output_varNo格式化结果变量名(默认 datetime_result)
add_minutesNo加减分钟(可为负)(默认 0)
add_secondsNo加减秒数(可为负)(默认 0)
input_formatNoinput 的格式(java.time 模式)(默认 yyyy-MM-dd HH:mm:ss)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does a fair job: it discloses the parse engine (LocalDateTime), the hard failure mode for date-only formats, weekday numbering (1=Monday…7=Sunday), ${var} interpolation on string params, and that results are returned as a variable snapshot JSON rather than a direct return value. It does not discuss what happens on error beyond the schema's on_error, but the mutation-to-workflow-variables side effect is disclosed.

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

Conciseness3/5

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

Purpose is correctly front-loaded in the first clause, but the middle is a flat run-on enumeration of eleven output field names that interrupts the flow, and there is a stray doubled period ('。。'). The output list is justified because no output schema exists, yet it could have been condensed into a pattern like datetime_{result,epoch,year,...}.

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

Completeness4/5

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

For a 12-parameter, annotation-free tool with no output schema, the definition covers the essentials: what it does, the parse constraint, output variable names, and the interpolation convention. The main remaining gap is the total absence of routing guidance versus ACTION_GET_TIME, which an agent could easily pick instead for a simple 'now' read.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 12 parameters and the baseline is 3. The description adds real value on input_format (must contain a time part, date-only will fail) and on ${var} interpolation across string parameters, but says nothing about the offset params (add_days/hours/minutes/seconds), output_var, require, or node_timeout_ms beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: get current time, parse or format a datetime, with optional offset arithmetic. That is clearly distinct from data-shaping siblings like ACTION_PARSE_JSON or ACTION_MATH, though it never distinguishes itself from the obvious sibling ACTION_GET_TIME, which overlaps on 'now'.

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

Usage Guidelines3/5

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

Usage is only implied — the reader can infer parse vs format vs now from the action semantics. There is one genuinely useful usage constraint (input_format must include a time component, so pure yyyy-MM-dd fails), but no statement of when to prefer this over ACTION_GET_TIME or ACTION_WAIT_UNTIL_TIME.

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

ACTION_PARSE_JSONA

解析 JSON 字符串并按路径取值。输出:parsed_json, parsed_value, parse_success, parse_error。结果都是字符串(对象/数组为格式化 JSON);路径不存在时结果是字符串 null,但 parse_success 仍为 true。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
jsonYesJSON 文本(支持 ${var})或存着 JSON 的变量名
pathNo取值路径,如 data.items[0].name;不填返回整个 JSON
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
output_varNo结果变量名(默认 parsed_json)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.9/5.0
Behavior4/5

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

No annotations are supplied, so the description carries the full disclosure burden — and it does real work here: it enumerates the four output fields, states that every result is a string, and flags the counterintuitive edge case that a missing path yields the string value null while parse_success stays true. It also discloses ${var} interpolation and that results are returned as a variable snapshot, though it does not explain what happens to pre-existing variables on failure.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause, followed by outputs and then edge cases — a sensible order with little waste. Minor blemishes: a duplicated sentence-ending punctuation mark ('。。') and slight redundancy between the null-path note and the general 'results are strings' statement.

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

Completeness4/5

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

With no output schema and no annotations, the description adequately enumerates return fields and covers the important null-path edge case. What is missing is minor but real: whether output_var overwrites existing variables and how require failures surface to the agent.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description goes beyond it by generalizing ${var} interpolation to all string parameters (the schema notes it only for json) and by clarifying the path parameter's failure semantics. It does not elaborate on require or on_error, which the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('解析 JSON 字符串并按路径取值') and names the exact output fields. The resource (JSON) alone distinguishes it from ACTION_PARSE_XML and ACTION_PARSE_DATETIME, so an agent can select it without opening the schema.

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

Usage Guidelines2/5

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

The description explains behavior but never says when to use this tool rather than alternatives (for example, extracting a field from an HTTP response, versus using ACTION_TEXT_OPERATION or ACTION_ARRAY), and it never names a when-not condition. Usage is implied by context, but no explicit guidance is provided.

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

ACTION_PARSE_XMLA

解析 XML 字符串,按标签路径取元素文本或属性。输出:xml_parsed_value, xml_success, xml_error。匹配到多个元素时结果是 JSON 数组字符串。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
xmlYesXML 文本(支持 ${var})或存着 XML 的变量名
xpathNo点分标签路径,如 root.item.name(不是真正的 XPath);不填返回根元素全部文本
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
attributeNo取该属性值而不是元素文本
output_varNo结果另存到的变量名(xml_parsed_value 总会写)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description has to disclose behaviour, and it does: it names the output variables (xml_parsed_value, xml_success, xml_error), explains that multiple matches come back as a JSON array string, and says results are returned as a variable snapshot. It could say more about how writing to variables affects the workflow state, but the key observable behaviour is covered.

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

Conciseness4/5

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

The purpose comes first, then the output keys, then the multi-match behaviour, then interpolation. Every sentence carries information. Minor noise remains, such as a doubled Chinese full stop and the output list being repeated in prose.

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

Completeness4/5

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

For a seven-parameter tool with complete schema descriptions and no output schema, the description is nearly complete: it summarises the return values and the multi-match edge case. It could say more about on_error and require in workflow terms, but those are documented in the schema.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all seven parameters — including the dot-path, require and on_error semantics — are already documented in the schema. The description adds only the ${var} interpolation note, which the schema also states, so it adds little beyond the schema. A 3 baseline is right.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: parse an XML string and extract element text or an attribute by tag path. That makes it easy to pick out against siblings, unlike ACTION_PARSE_JSON or ACTION_TEXT_OPERATION. It never names those neighbouring tools, though, so there is no explicit contrast.

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

Usage Guidelines3/5

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

When to use the tool is only implied: you have XML text (or a variable containing XML) and need a value out of it. Nothing states when not to use it, and nothing points to ACTION_PARSE_JSON or other alternatives. The note that a missing path returns the root element's text does help with how to call it.

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

ACTION_PLAY_MEDIAA

播放本地媒体文件(只出声),播完或超时才继续。输出:play_success, play_error, play_completed, play_duration_ms。到超时就停止播放。play_success 只表示开始播放成功,是否自然播完看 play_completed;loop=true 时永远播不完,到 timeout_ms 停止且 play_completed=false。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
loopNo循环播放(默认 false)
pathYes媒体文件路径,支持 ${var}
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
output_varNo成功时额外写 true 的变量名
timeout_msNo等待播放结束的毫秒数(最小 1000);不填=文件时长+3 秒,时长未知时 60 秒
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it enumerates the output variables (play_success, play_error, play_completed, play_duration_ms), clarifies that play_success only means playback started, and describes how loop=true interacts with timeout_ms (play_completed=false). It does not describe failure conditions for bad paths or unsupported formats beyond the play_error variable.

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

Conciseness3/5

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

The core purpose is front-loaded, but the body is a run-on chain of clauses with a duplicated period ('。。') and the output list wedged mid-paragraph. Every sentence earns its place content-wise, yet the ordering and punctuation could be tightened considerably.

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

Completeness4/5

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

There is no output schema, and the description compensates by naming all four return variables and their semantics. With 7 parameters at full schema coverage, the remaining gaps (require/on_error/output_var behavior) are documented in the schema itself, so the definition is essentially complete for correct invocation.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: the loop/timeout interaction and the distinction between 'started' and 'completed' are not derivable from the parameter docs alone. It also reiterates ${var} interpolation for string parameters, which is already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: plays a local media file, audio-only, and blocks until playback finishes or times out. An agent can immediately tell what it does. It does not explicitly distinguish itself from the sibling ACTION_MEDIA_CONTROL, so it stops short of a 5.

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

Usage Guidelines4/5

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

Explains the execution model clearly: it blocks, resumes only on completion or timeout, and stops playback when the timeout fires. That is enough to know when this node fits in a workflow. No explicit when-not guidance or named alternative (e.g. ACTION_MEDIA_CONTROL) is given.

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

ACTION_RANDOMB

生成随机整数、小数或布尔值。输出:random_value, random_success。int 含两端,float 为 [min, max);min > max 时自动交换。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
maxNo最大值(只取整数部分)(默认 100)
minNo最小值(只取整数部分)(默认 0)
typeNo结果类型(默认 int)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
output_varNo结果变量名(默认 random_value)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does add real value: int is inclusive at both ends, float is [min, max), and min > max swaps automatically. However, it does not disclose permission/auth needs, rate limits, how require/on_error/timeout failures surface, or what random_success means on failure.

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

Conciseness4/5

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

It is front-loaded with the core purpose and stays to four short clauses, but there is a stray double period ('。。') and the trailing interpolation note feels appended rather than structured.

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

Completeness4/5

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

For a 7-parameter tool with no output schema, the description covers the main output keys (random_value, random_success) and the range edge cases. Gaps remain on the control-flow parameters (require, on_error, node_timeout_ms) and on the failure semantics of random_success.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description earns some credit for clarifying range semantics (inclusive vs half-open) and the auto-swap rule, which the schema does not state, but it adds nothing about require, on_error, output_var, or node_timeout_ms.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb and resource set: generate random int, float, or boolean values. That is recognizable against siblings such as ACTION_MATH, though the description never explicitly distinguishes itself from ACTION_MATH or ACTION_SET_VARIABLE.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no exclusions, and no routing to alternatives like ACTION_MATH. The only usage-adjacent content is the interpolation note and the default on_error behavior, which is context but not selection guidance.

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

ACTION_READ_NOTIFICATIONSA

读取通知栏当前通知列表(JSON 数组)(需通知使用权)。输出:notifications_success, notification_success, notifications_json, notification_count, notification_error。每项含 package、title、text、post_time。notification_success 是 notifications_success 的旧名,值相同。宿主未注入通知监听源时只能读到本应用自己的通知,并按失败处理。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
limitNo最多条数,范围 1–50(默认 20)
packageNo只要该包名的通知(精确匹配),支持 ${var}
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
output_varNoJSON 另存到的变量名(notifications_json 总会写)(默认 notifications_json)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden, and it discloses real behavior: it needs notification access permission, it reads a snapshot rather than a live stream, it explains the degraded mode when no listener source is injected and says that case counts as failure, and it documents the legacy alias notification_success. What is missing is any mention of latency, rate limits, or freshness of the snapshot, which is why the score is not 5.

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

Conciseness3/5

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

The purpose is front-loaded, which is good. However, the middle section reads like a raw log: the list of output fields includes a duplicated legacy alias explanation, and a stray double period ('。。') appears mid-sentence. The sentence about ${var} interpolation and the variable-snapshot return could be merged with the output sentence.

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

Completeness4/5

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

There is no output schema and there are six parameters, so the description has to describe the return shape itself. It does: it names the output variables (notifications_json, notification_count, notification_error, ...) and the per-item fields (package, title, text, post_time). That is enough for an agent to use the result. The only gap is that it doesn't say how limit and package interact with the count returned.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters (limit, package, require, on_error, output_var, node_timeout_ms) are already documented in the schema. The description adds only the general note that string parameters support ${var} interpolation, which is cross-cutting and not parameter-specific. A baseline 3 is right here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: '读取通知栏当前通知列表(JSON 数组)' (read the current notification list from the notification bar). This is clearly distinct from a sibling such as ACTION_SEND_NOTIFICATION, which writes a notification. It does not name the counterpart tool directly, but the read-versus-send distinction is unambiguous.

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

Usage Guidelines3/5

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

The description states the prerequisite (notification access permission) and describes one fallback condition (when the host has not injected a listener it can only see its own app's notifications and reports failure). It never says when an agent should choose this tool over a sibling such as ACTION_SEND_NOTIFICATION, or over the generic screen-reading tools. The usage guidance is therefore only implied.

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

ACTION_READ_SCREENA

在当前界面找关键字,或抓取全屏可见文字(需无障碍)。输出:screen_data。screen_data 是「是否找到 keyword」的布尔值,不是屏幕文字;要文字请设 output_var。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
keywordNo要找的文字(不区分大小写,匹配文本或描述),支持 ${var};为空时 screen_data 恒为 false
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
output_varNo给了就把全屏可见文字(换行分隔)存到该变量
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and discloses several non-obvious traits: it requires accessibility, screen_data is a boolean detection result rather than screen content, output is delivered as a variable-snapshot JSON, and string parameters accept ${var} interpolation. What is missing is timing behavior (does it wait/retry or take a single snapshot) and the format of the snapshot beyond the output_var newline-separated text.

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

Conciseness5/5

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

Very tight: purpose first, then the output-semantics caveat, then the interpolation note. Every clause disambiguates something an agent would otherwise get wrong, with no filler.

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

Completeness4/5

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

For a five-parameter, annotation-less tool with no output schema, the description covers the environment prerequisite, the true return semantics, and how results land in variables. Only the timing/waiting behavior and the concrete shape of the variable snapshot remain unstated.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented, setting the baseline at 3. The description reinforces the schema's subtle points (keyword empty ⇒ false, output_var receives the text) and notes ${var} interpolation, but adds no new constraints or value formats beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States two specific capabilities with a verb and resource: locate a keyword in the current UI, or capture all visible screen text (requires accessibility). It also pre-empts the most likely misreading by declaring that screen_data is a found/not-found boolean rather than the captured text. It never names the closest alternatives (ACTION_FIND_ELEMENT, ACTION_SCREENSHOT, ACTION_WAIT_FOR_ELEMENT), so a sibling-differentiation point is lost, but the tool's own scope is unambiguous.

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

Usage Guidelines3/5

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

Implied routing is present: for text use output_var, and an empty keyword forces screen_data to false. The accessibility-service prerequisite is a useful usage gate. However there is no explicit statement of when to pick this over ACTION_FIND_ELEMENT or ACTION_WAIT_FOR_ELEMENT for element lookup, nor whether this tool polls or waits.

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

ACTION_RETRYA

失败重试:反复执行目标节点(链),直到成功或次数用完。目标链最后一个节点的 next 要指回本节点;链上有节点失败就重试,成功或用完次数后走本节点 next。多数节点出错只是 xxx_success=false,要给它加 require(如 require=file_success)才算失败。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
timesNo总尝试次数(含第一次,至少 1)(默认 3)
targetYes要重试的第一个节点 id
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
interval_msNo两次尝试的间隔毫秒(默认 1000)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden, and it does well: it discloses the control-flow contract (next-back wiring), the failure detection model (xxx_success=false vs. require), and that exhausted attempts still fall through to the next node rather than erroring. It omits what happens if target is missing/invalid and whether exhaustion is signalled anywhere, leaving a small gap.

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

Conciseness4/5

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

Purpose is front-loaded, followed by mechanics and then the failure-detection gotcha, with no filler sentences. There is a minor formatting blemish (a doubled '。。') and the interpolation/return-format note is appended a bit abruptly, but overall it is dense and scannable.

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

Completeness5/5

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

For a 6-parameter control-flow node with no output schema, the description covers the wiring contract, failure semantics, retry-exhaustion behavior, variable interpolation, and the return shape. An agent can call this correctly and diagnose the most common mistake (missing require) from the description alone.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains the require parameter's purpose in depth (most nodes only set xxx_success=false, so require=file_success is needed to treat it as failure), notes that string parameters support ${var} interpolation, and states results are returned as a variable snapshot JSON. That is genuine value beyond the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb+resource pairing ('failure retry: repeatedly execute the target node chain until success or attempts are exhausted') and describes the retry mechanism concretely. It does not name related control-flow siblings such as ACTION_LOOP or ACTION_TRY_CATCH, so the agent must infer the distinction itself, which keeps it below a 5.

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

Usage Guidelines4/5

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

It gives clear wiring instructions (the last node of the target chain must point its next back to this node), states that the run proceeds to this node's next on success or exhaustion, and explains the common pitfall that most nodes only set xxx_success=false so a require must be added. It stops short of explicitly comparing against alternative control-flow tools for 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.

ACTION_SCREENSHOTA

截取当前屏幕(shell screencap),输出 base64 JPEG 或文件路径(需 Shizuku 或 root(screencap))。输出:screenshot_success, screenshot_error, screenshot_width, screenshot_height, screenshot_base64。截图文件写在 DCIM/habitat_screenshot_<时间戳>.png,不会自动删除。节点必须带 params(可为 {}),缺 params 字段时什么都不做。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
formatNobase64=JPEG 的 base64 字符串,file=PNG 文件绝对路径(默认 base64)
qualityNobase64 时的 JPEG 质量 1–100(默认 80)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
output_varNo结果存到的变量名(format=file 时存的是路径)(默认 screenshot_base64)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the privilege requirement, names the side-effect file (DCIM/habitat_screenshot_<时间戳>.png), states that file is never auto-deleted, and warns that omitting params causes a no-op. It does not cover failure modes such as what happens if Shizuku is unavailable beyond the generic on_error parameter.

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

Conciseness3/5

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

The purpose is front-loaded and the sentences are short, but the enumeration of output fields duplicates information an output schema would normally carry, and the nested parenthetical '(需 Shizuku 或 root(screencap))' plus a doubled '。。' make it read as unedited. Tightening would improve it without losing content.

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

Completeness4/5

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

For a 6-parameter, no-annotation tool with no output schema, the description covers the essentials: privilege requirement, both output formats, side-effect files, the params requirement, variable interpolation, and the returned field names. What is missing is error behavior detail and guidance relative to sibling screen tools.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents format, quality, require, on_error, output_var, and node_timeout_ms, so baseline is 3. The description adds only the default output variable name implicitly via the output field list, not meaningful semantics for the remaining parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('截取当前屏幕(shell screencap)') plus its two output forms (base64 JPEG or file path), so an agent knows exactly what happens. It does not, however, differentiate itself from nearby siblings such as ACTION_READ_SCREEN, screen, or debug_screen, which an agent could easily confuse with a screenshot action.

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

Usage Guidelines3/5

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

It gives a real prerequisite ('需 Shizuku 或 root'), which is useful routing guidance, and warns that the node must carry a params field. But it never says when to prefer this over ACTION_READ_SCREEN or the other screen-related siblings, leaving the main selection decision to inference.

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

ACTION_SCREEN_WAKEA

亮屏、息屏、亮屏并解锁(sleep 和解锁需 Shizuku 或 root;wake 无 shell 时退回 WakeLock)。输出:screen_wake_success。wake_and_unlock 不核对是否真的解锁(按键序列发完即算成功);图案锁解不了。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
actionYeswake=亮屏;sleep=息屏;wake_and_unlock=亮屏后发菜单键划开锁屏,给了 password 再输入并回车
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
passwordNo可选:wake_and_unlock 的锁屏密码,只能是 1-64 位字母数字(格式不对整个节点直接失败)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does substantial work: it discloses the WakeLock fallback when no shell is available, that wake_and_unlock does not verify the screen actually unlocked (it counts success as soon as the key sequence is sent), that pattern locks are unsupported, that the returned variable is screen_wake_success, and that results come back as a variable snapshot JSON. Remaining gaps are minor — no statement about timing/asynchronous delivery of the result or behavior when the screen is already on.

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

Conciseness5/5

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

It is two compact clauses: the three modes with their permission requirements first, then caveats and output. Every sentence carries new information — the fallback behavior, the non-verification caveat, the pattern-lock limitation, the return value, and interpolation — with no restatement of the tool name or filler. There is a stray doubled full stop at the end, a trivial cosmetic issue.

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

Completeness4/5

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

For a mutation tool with five parameters, no annotations and no output schema, the description covers the essential unknowns: permission requirements, the failure mode of wake_and_unlock, the limitation that could cause silent wrong behavior (pattern lock), and the name/shape of the returned value. It is nearly complete; only the timing of when screen_wake_success becomes observable and the no-op case of waking an already-on screen are unaddressed.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the per-parameter meanings of action, password, require, on_error and node_timeout_ms are already documented, and the baseline would be 3. The description adds information the schema does not contain: that string parameters support ${var} interpolation and that results are returned as a variable snapshot JSON, which changes how an agent should write call arguments. It does not add anything new about the password format (already in schema), so it stops short of 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete verb+resource set — 亮屏 (wake), 息屏 (sleep), 亮屏并解锁 (wake and unlock) — that maps directly to the three action enum values, so an agent knows exactly what capability this tool exposes. It is clearly distinct from the state-query sibling ACTION_GET_SCREEN_STATE, though the description never explicitly names that sibling or any other to contrast against, which keeps it at 4 rather than 5.

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

Usage Guidelines3/5

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

It states prerequisites for each mode (sleep and unlock require Shizuku or root; wake falls back to WakeLock without shell) and notes that pattern locks cannot be unlocked, which does guide mode selection. What is missing is explicit routing advice — nothing tells the agent to prefer ACTION_GET_SCREEN_STATE to check state first, or when wake+unlock should be used versus ACTION_SWIPE / ACTION_GLOBAL_KEY. Usage is therefore implied rather than prescribed.

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

ACTION_SEND_NOTIFICATIONA

发一条系统通知(宿主 App 注册;Android 13+ 需通知权限(POST_NOTIFICATIONS))。title / message 原样显示,不做 ${var} 插值。不写任何输出变量。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
titleNo通知标题(默认 Habitat 通知)
messageNo通知正文(默认 这是一条来自 Habitat 的消息。)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden, and it does add real context: the host App must be registered, Android 13+ needs POST_NOTIFICATIONS, and no output variables are written. However, the two interpolation statements ('title / message 不做 ${var} 插值' vs '字符串参数支持 ${var} 插值') and the '不写任何输出变量' vs '结果以变量快照 JSON 返回' pairing read as internal contradictions, leaving the agent unsure which parameters interpolate and whether anything is emitted.

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

Conciseness3/5

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

Short, but poorly ordered: the permission note is buried in a parenthetical, there is a stray double period ('。。'), and the interpolation statements are split across the beginning and end of the description, which produces the contradiction rather than a coherent rule. Content is not padded, but structure undercuts clarity.

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

Completeness4/5

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

For a 5-parameter action with no annotations and no output schema, the description covers the important unknowns: platform permission requirement, verbatim rendering, no output variables, and the snapshot return form. The remaining gap is the ambiguity in the interpolation and output-variable statements rather than missing subject matter.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3, but the description adds genuine semantics the schema does not: title and message are rendered verbatim with no ${var} interpolation. It says nothing extra about require, on_error, or node_timeout_ms, which are covered by their own schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 发一条系统通知 (send a system notification), which is unambiguous about what the tool does. It does not distinguish itself from nearby siblings such as ACTION_TOAST, ACTION_LOG, or ACTION_READ_NOTIFICATIONS, so an agent must infer the boundary itself.

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

Usage Guidelines3/5

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

Usage is only implied by the nature of the action; there is no explicit 'use this when…' statement and no mention of when to prefer ACTION_TOAST or ACTION_LOG instead. The Android 13+ POST_NOTIFICATIONS prerequisite is a useful precondition but is not usage routing.

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

ACTION_SET_ALARMA

设闹钟:打开系统时钟的新建闹钟(带时间和标签)。输出:alarm_success, alarm_error。通过 Intent 调起系统时钟应用(不是静默创建),后台启动受限时可能没弹出来。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
hourYes小时 0-23
labelNo可选:闹钟标签,支持 ${var}
minuteYes分钟 0-59
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that the alarm is created by firing an Intent at the system clock app rather than silently, that background launch restrictions can cause the screen not to appear, and that the outcome surfaces as alarm_success / alarm_error variables. It omits permission prerequisites and whether the user must confirm the alarm manually.

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

Conciseness4/5

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

Front-loaded with the purpose, then explicitly separated into input mechanism, output variables and caveats, so an agent can scan it quickly. Minor waste: a duplicated period ('。。') and a run-on final clause about interpolation and variable snapshots.

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

Completeness4/5

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

For a 6-parameter, annotation-free tool with no output schema, the description covers the essential gaps: it names the two output variables and explains the non-silent Intent mechanism and its failure mode. The generic workflow controls (require, on_error, node_timeout_ms) are left entirely to the schema, which is acceptable at full coverage but leaves nothing in prose about how a failed alarm interacts with on_error.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents hour, minute, label, require, on_error and node_timeout_ms in detail. The description's only added semantics are ${var} interpolation for string parameters — which the schema already states for label — and the variable-snapshot return format. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('设闹钟' – set an alarm) and specifies the mechanism and payload: opens the system clock app's new-alarm screen with hour, minute and label. No sibling tool covers alarms, so there is no ambiguity to resolve, and an agent knows exactly what will happen without opening the schema.

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

Usage Guidelines3/5

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

The description implies the operating context (must be able to launch the system clock UI) and warns that background launch restrictions may prevent the dialog from appearing, which helps an agent judge feasibility. It does not, however, name any alternative (e.g. ACTION_WAIT_UNTIL_TIME for a purely scheduled wait) or state when an agent should prefer a different approach.

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

ACTION_SET_VARIABLEB

设置一个变量。含 ${var} 的值插值后是字符串;后续要做数字运算/比较时设 type=int 或 float。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
nameYes变量名(也认:key)
typeNo类型转换,auto=保持原类型(默认 auto)
valueNo变量值,任意 JSON 值;字符串支持 ${var};为 null 或转换失败时删除该变量
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations at all, the description must carry the behavioral load, and it does disclose two non-obvious traits: ${var} interpolation always yields a string, and the result is returned as a variable snapshot JSON. It says nothing about failure handling, overwriting existing variables, or the effect of require/on_error, all of which are mutation-relevant behaviors left entirely to the schema.

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

Conciseness3/5

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

Three short clauses, but interpolation is stated twice ("含 ${var} 的值插值后是字符串" and "字符串参数支持 ${var} 插值") and there is a stray double period ("float。。"). The most useful fact — the returned variable snapshot JSON — is buried at the end rather than front-loaded.

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

Completeness4/5

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

For a 6-parameter workflow mutation tool with 100% schema coverage and no output schema, the description covers the core semantics plus the return shape (variable snapshot JSON), which is what an agent most needs. The gaps are failure/overwrite behavior and the require/on_error interaction, but those are documented in the schema.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does add a rationale the schema lacks — that type=int/float is needed specifically for later arithmetic/comparison — and generalizes ${var} interpolation to string parameters, but it never touches name, require, on_error or node_timeout_ms.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ("设置一个变量" / set a variable), which unambiguously separates it from data-producing siblings like ACTION_MATH, ACTION_ARRAY or ACTION_PARSE_JSON. It does not, however, name any sibling or state its scope relative to them (e.g. workflow-local vs global variables).

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

Usage Guidelines3/5

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

Usage is only implied: the mention that you should set type=int or float when later steps need numeric operations/comparison gives a real decision rule for one parameter. There is no statement of when to use this tool versus alternatives such as ACTION_ARRAY or ACTION_WORKSPACE, and no exclusions or prerequisites.

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

ACTION_SHAREA

分享文字:弹出系统分享面板。输出:share_success, share_error。只通过 EXTRA_TEXT 分享文字,不附带文件;改 type 也发不了图片。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
textYes要分享的文字,支持 ${var}
typeNoMIME 类型(默认 text/plain)
titleNo分享面板标题,支持 ${var}(默认 分享)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
subjectNo可选:主题(如邮件标题),支持 ${var}
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose the output variables (share_success, share_error), the EXTRA_TEXT-only limitation, ${var} interpolation, and that results come back as a variable snapshot JSON. It does not say whether the call blocks until the user picks a target or what happens if the share sheet is dismissed, which is the main remaining behavioral unknown for a UI-interactive action.

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

Conciseness4/5

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

The purpose is front-loaded in the first clause and the size is compact. There is minor redundancy ('只通过 EXTRA_TEXT…不附带文件;改 type 也发不了图片') and a doubled sentence terminator ('。。') that slightly hurts polish.

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

Completeness4/5

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

For a 7-parameter UI action with no output schema, the description covers purpose, return variables, interpolation, and the key limitation, which is enough to call it correctly. Missing details are the blocking/await-user behavior and error-surface semantics beyond the listed variable names.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so per-parameter meaning is already documented in the schema; the description only reinforces that string parameters accept ${var} and that 'type' does not enable image sharing. It adds nothing about 'require', 'on_error', 'node_timeout_ms', or 'subject', so it sits at the baseline for a fully-documented schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('分享文字:弹出系统分享面板') and immediately bounds the scope to text-only sharing, which no sibling tool covers. An agent can distinguish this from ACTION_MEDIA_CONTROL or ACTION_SEND_NOTIFICATION without opening the schema.

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

Usage Guidelines4/5

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

It gives clear conditions for use (share text via the system share sheet) and an explicit negative constraint: no file attachments, and changing 'type' will not make images shareable. There is no named alternative for the file/image case, so it stops short of full when/when-not/alternative guidance.

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

ACTION_SWIPEA

滑动:从 (x1,y1) 直线滑到 (x2,y2)(需无障碍)。输出:swipe_success。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
x1Yes起点 x(像素)
x2Yes终点 x(像素)
y1Yes起点 y(像素)
y2Yes终点 y(像素)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
durationNo滑动时长毫秒,限制 1-60000(默认 400)
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does reasonably well: it states the accessibility dependency, names the output variable (swipe_success), and explains that results are returned as a variable snapshot JSON — none of which is in the schema. It stops short of saying whether the call blocks until the gesture finishes or what a failed swipe returns.

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

Conciseness4/5

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

The text is compact and front-loaded: the gesture and its endpoints come first, followed by the prerequisite, output variable, interpolation rule, and return format. Each clause carries distinct information, though the trailing three clauses are terse enough that their ordering feels slightly list-like.

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

Completeness4/5

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

For an eight-parameter tool with no annotations and no output schema, the description covers the essentials: what the gesture is, the accessibility prerequisite, the result variable, and the return shape — partially compensating for the missing output schema. Gaps remain around blocking behavior and error semantics, but the fully-described schema picks up most of that slack.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all eight parameters are already documented, setting the baseline at 3. The one piece of added meaning is that string-typed parameters accept ${var} interpolation, which the schema's 'string|number' typing does not convey; the coordinate and timing semantics come entirely from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource — a straight-line swipe from (x1,y1) to (x2,y2) — which an agent can distinguish from taps or long-presses without opening the schema. It never names a sibling such as ACTION_CLICK or ACTION_LONG_PRESS, so the differentiation is inherent rather than explicit.

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

Usage Guidelines3/5

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

It discloses the key prerequisite ('需无障碍' / requires accessibility service), which is genuine usage context. However, it gives no guidance on when to prefer a swipe over ACTION_CLICK or ACTION_LONG_PRESS, no when-not conditions, and no note on failure behavior beyond the 'require' parameter documented in the schema.

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

ACTION_TEXT_OPERATIONA

文本处理:替换、截取、拆分、大小写、去空白、拼接。输出:text_output。split 的结果是用换行连接的一个字符串,不是数组;要真正的数组用 ACTION_ARRAY(action=set)。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
endNosubstring:结束下标(不含),默认到末尾
newNoreplace:替换成的文字,支持 ${var}(也认:replace_with)
oldNoreplace:要被替换的文字,支持 ${var}(也认:search)
textNoappend/prepend:要拼接的文字,支持 ${var}
inputNo输入:变量名(取其值)或字面文本(支持 ${var})(也认:source_var)
startNosubstring:起始下标(含)(默认 0)
actionYes操作类型(也认:operation)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
delimiterNosplit:分隔符(默认 ,)
output_varNo结果变量名(默认 text_output)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and discloses several non-obvious traits: split returns a newline-joined string rather than an array, string parameters accept ${var} interpolation, and results come back as a variable snapshot JSON with the default output name text_output. It does not explain how errors interact with on_error or the node timeout, leaving that to the schema.

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

Conciseness4/5

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

Front-loads the operation list, then the output contract, then the caveats, which is the right order for scanning. It is dense but nearly every clause carries information; the doubled '。。' punctuation and the slightly redundant 'output: text_output' / 'results returned as variable snapshot JSON' pairing are minor blemishes.

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

Completeness4/5

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

There is no output schema, so the description must cover return behavior, and it does: named result variable, snapshot JSON shape, and the surprising string-vs-array split result. Combined with a fully documented 12-parameter schema, an agent has enough to call this correctly; only error-path semantics are left implicit.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: all string parameters support ${var} interpolation and the result variable defaults to text_output. It adds nothing about start/end indexing beyond what the schema already documents, so it sits just above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific resource (text) and enumerates the exact operations (replace, substring, split, case conversion, trim, concat) that map onto the action enum. It also explicitly distinguishes itself from ACTION_ARRAY for the array-producing case, so an agent can separate the two without reading either schema.

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

Usage Guidelines4/5

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

Gives an explicit routing rule for the one ambiguous case: if a real array is wanted rather than a newline-joined string, use ACTION_ARRAY (action=set). It does not cover when to prefer ACTION_PARSE_JSON, ACTION_SET_VARIABLE, or ACTION_ASSERT for related string work, so the guidance is clear but not exhaustive.

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

ACTION_TEXT_TO_SPEECHA

用系统 TTS 朗读文本,读完才继续(需系统已装 TTS 引擎)。输出:tts_success, tts_error。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
textYes要朗读的文本,支持 ${var}
pitchNo音调,1.0 正常,范围 0.1–4.0(默认 1.0)
speedNo语速,1.0 正常,范围 0.1–4.0(默认 1.0)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
languageNo语言代码,支持 ${var};不填或不支持时用系统语言
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
timeout_msNo初始化+朗读总超时毫秒(最小 1000)(默认 120000)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does disclose real behavioral traits: blocking until speech finishes, an environment prerequisite, and the two result variables (tts_success, tts_error). It omits error-handling/timeout semantics that appear only in the schema, keeping it from a 5.

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

Conciseness4/5

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

A single compact sentence that front-loads the core action, then the blocking behavior, then prerequisites and outputs. Every clause carries information; only mild density from cramming output keys and interpolation into one line.

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

Completeness4/5

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

For an 8-parameter side-effecting tool with no output schema, it covers the essential context: what happens, that it blocks, that an external engine is required, and what result keys come back. Missing detail on failure/timeout behavior is partly recoverable from the schema's on_error and timeout_ms entries.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter including ${var} support and enum values, which sets a baseline of 3. The description only restates the ${var} interpolation rule at a generic level and adds the return-variable names, so it adds little beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('用系统 TTS 朗读文本') and adds the distinctive blocking semantic ('读完才继续'), which no sibling such as ACTION_TOAST or ACTION_MEDIA_CONTROL shares. It stops short of naming any sibling for differentiation, so a 4 rather than a 5.

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

Usage Guidelines3/5

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

It gives a prerequisite ('需系统已装 TTS 引擎') and the implied usage of synchronous narration in a workflow, but there is no explicit when-not guidance and no pointer to alternative tools for audio output, leaving selection to inference.

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

ACTION_TOASTA

弹出一条短提示。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
messageNo提示文字,支持 ${var}
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description must carry the full behavioral burden; it does disclose two useful traits beyond the schema's headline: that ${var} interpolation applies to string parameters and that the result is returned as a variable-snapshot JSON. It does not say whether the toast blocks execution, how long it is visible, or what the snapshot contains, so transparency is partial.

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

Conciseness4/5

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

Two compact clauses, front-loaded with the core action and followed by the two behavioral notes. No filler, though the return-value clause could be tightened and the interpolation note is partly redundant with the schema.

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

Completeness4/5

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

For a 4-parameter tool with no output schema and no annotations, the description covers the action plus the two most agent-relevant traits (interpolation and return format). The remaining parameter semantics are fully carried by the 100%-covered schema, so nothing critical is missing.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (message, require, on_error, node_timeout_ms) are already documented in the schema. The description's note about ${var} interpolation largely repeats what the message parameter's own description says, adding little new meaning. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource in Chinese ('弹出一条短提示' – show a short toast), which is unambiguous about what the tool does. It does not, however, distinguish itself from adjacent siblings such as ACTION_SEND_NOTIFICATION or ACTION_DYNAMIC_ISLAND, so an agent must infer that this is the lightweight on-screen variant.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance is given, nor are alternatives named. Usage is only implied by the word '短提示' (short prompt), leaving an agent to guess this is for brief user-facing feedback rather than persistent notifications.

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

ACTION_TRY_CATCHA

按上一个节点是否失败走 success / error 分支。输出:exception_msg。只看紧挨着的上一个节点:失败指抛异常、超时或 require 不满足;多数节点出错只是 xxx_success=false,要在上一节点加 require(如 file_success)才算失败。分支写在 branches(success/error → 节点 id),不走 next,success 分支也要写,缺的分支即该路径结束。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
catch_varNo出错时写入错误信息的变量名(默认 exception_msg)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: it discloses the branch topology (branches map, not next), that the success branch is mandatory, that a missing branch terminates that path, that only the immediately preceding node is inspected, and that string params support ${var} interpolation with results returned as a variable-snapshot JSON. These are exactly the non-obvious behaviors that cause misconfiguration.

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

Conciseness5/5

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

It is dense but every sentence carries information — scoping rule, failure definition, the require workaround, branch structure, and interpolation/output format. The key constraint (only the previous node) is front-loaded. There is a stray duplicated punctuation mark ('。。') but no wasted content.

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

Completeness4/5

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

For a control-flow node with four optional parameters, no output schema, and no annotations, the definition covers branching semantics, failure detection, required upstream setup, and return shape. The only gap is the interaction between the catch node's own error handling and the on_error parameter, which is left to the schema field description.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real semantic depth the schema does not convey — specifically why `require` matters (errors that only set xxx_success=false are not treated as failures unless required upstream) and that catch_var's output is surfaced as exception_msg. The branches construct is also explained even though it is not an input property.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific control-flow action — branch to success/error based on whether the previous node failed — and immediately scopes it to 'the immediately preceding node', which is non-obvious. It does not explicitly distinguish itself from sibling control-flow tools such as CONDITION_SWITCH, CONDITION_ADVANCED_SWITCH, or ACTION_RETRY, so an agent must infer the boundary.

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

Usage Guidelines4/5

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

It gives concrete when-to-use mechanics: failure means exception, timeout, or an unsatisfied require, and it warns that most node errors only set xxx_success=false so an upstream require (e.g. file_success) is needed. That is actionable guidance an agent could not derive from the schema. It lacks explicit guidance on when to prefer CONDITION_SWITCH or ACTION_RETRY over this node.

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

ACTION_VIBRATEB

振动一次。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
durationNo振动时长毫秒(1–10000)(默认 200)(也认:ms)
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
amplitudeNo振动强度(1–255)(默认 128)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that string parameters accept ${var} interpolation and that the result comes back as a variable-snapshot JSON, and "一次" implies a single non-repeating pulse. It says nothing about device/permission requirements, blocking behavior, or what happens on hardware lacking a vibrator.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action, and no filler. The second sentence packs interpolation and return shape into one semicolon clause, which is efficient though slightly dense.

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

Completeness3/5

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

For a simple one-shot action it covers the essentials: what it does, interpolation support, and the return shape in lieu of an output schema. Given zero annotations, it should ideally also state permission/side-effect expectations or failure behavior when vibration is unsupported.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the schema already explains duration ranges, amplitude ranges, require, on_error, and node_timeout_ms. The description only adds the cross-cutting fact that string parameters support ${var} interpolation, which is a modest supplement rather than new per-parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"振动一次" states a specific verb (vibrate) and scope (once), which separates it from ambient siblings like ACTION_TOAST or ACTION_MEDIA_CONTROL. It never names a sibling explicitly, so it is clear but not fully differentiated.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, and no mention of alternatives such as ACTION_TOAST for user feedback or ACTION_DND_MODE for silencing. An agent must infer the use case from the name alone.

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

ACTION_VOLUMEA

音量:设置、读取、增减、静音。输出:volume_success, volume_current, volume_max。value 是百分比,而 volume_current/volume_max 是系统档位(如 0-15),两者不能直接比较。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
valueNo音量百分比 0-100(超出截断),action=set 时必填
actionYesset=按百分比设置;get=读取;up/down=调一档;mute/unmute=静音/取消
streamNo音频流;call 与 voice_call 相同,无法识别的值按 music(默认 music)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does meaningful work: it names the return fields (volume_success/volume_current/volume_max), warns that value is a percentage while volume_current/volume_max are system steps (e.g. 0-15) and thus not directly comparable, and explains that string arguments support ${var} interpolation with results returned as a variable-snapshot JSON. It omits any mention of permissions, whether mute is per-stream, or failure modes, which keeps it short of a 5.

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

Conciseness4/5

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

It is compact and front-loads the operations before the output contract and the percentage caveat, so the most important information comes first. Minor noise: a doubled punctuation mark and a slightly clipped telegraphic style, but no sentence is wasted.

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

Completeness4/5

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

For a 6-parameter tool with no output schema and no annotations, the description supplies the output field names, the key unit-mismatch warning, and the interpolation convention. Gaps remain around per-stream mute behavior, error handling for the require/on_error parameters, and the default time out, but nothing essential to a correct first call is missing.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema by explaining the percentage-vs-system-step distinction that the schema only hints at, and by framing string parameters as ${var}-interpolatable. The stream and on_error semantics are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb set and resource: "音量:设置、读取、增厉、输出" (read, set, increment/decrement, mute), which maps directly onto what the tool does. It does not, however, differentiate itself from sibling audio tools like get_audio_info or ACTION_GET_AUDIO_STATE, so an agent must infer the boundary itself.

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

Usage Guidelines3/5

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

Usage is only implicit: the enumeration of operations implies when each mode applies, but there is no explicit statement of when to choose this tool over ACTION_GET_AUDIO_STATE or ACTION_MEDIA_CONTROL, and no exclusions are given.

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

ACTION_WAIT_CALL_ANSWERA

阻塞等待通话进入通话中(OFFHOOK)(需 READ_PHONE_STATE 权限)。输出:call_answered, call_error。5 秒内既没响铃也没进入通话就返回 false,不会等满超时。去电一拨出系统即为 OFFHOOK,不代表对方已接听;来电则表示已接起。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
timeout_msNo最长等待毫秒,超时 call_answered=false(默认 120000)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations present, the description carries the full burden, and it does substantial work: it is blocking, it needs READ_PHONE_STATE, it returns early after 5 seconds if there is neither ringing nor OFFHOOK, and it names the two output variables (call_answered, call_error). The caveat that an outbound dial immediately reports OFFHOOK and therefore does not prove the other party answered is exactly the kind of behavior an agent cannot infer from the schema — though it also makes the tool's semantics for outbound calls ambiguous.

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

Conciseness5/5

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

The blocking behavior, permission requirement and outputs lead; the early-return caveat and the outbound-call caveat follow in descending importance. Every sentence adds information, and the only blemish is a stray doubled full stop, which does not impede comprehension.

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

Completeness4/5

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

For a no-output-schema tool with four optional parameters, the definition is nearly sufficient: outputs are named, the permission is named, and timeout behavior is described. The remaining gap is what happens when no call exists at all versus a call that never connects, which the 5-second rule only partly covers.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the parameters are documented and the baseline is 3. The description adds meaning beyond the schema by stating that string parameters support ${var} interpolation, which is not in the schema and matters because timeout_ms accepts strings and require/on_error are string variables. It also restates the timeout-to-call_answered=false mapping, which is complementary rather than redundant.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: it blocks and waits for a call to enter the OFFHOOK/in-call state, and it names the permission (READ_PHONE_STATE) and the output variables. It is clearly separable from a simple state read, but it never names the sibling tools it could be confused with (ACTION_GET_CALL_STATE, ACTION_WAIT_CALL_END), so it falls short of full sibling differentiation.

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

Usage Guidelines3/5

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

Usage is implied by the word '阻塞等待': you would use this tool when you must wait until a call is actually answered, and the 5-second early return tells the caller it will not block for the full timeout when no call activity is happening. However, the description gives no explicit when-not guidance and never says to use ACTION_GET_CALL_STATE for a one-shot check or ACTION_WAIT_CALL_END for the opposite wait.

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

ACTION_WAIT_CALL_ENDA

阻塞等待当前通话挂断(每秒轮询通话状态)(需 READ_PHONE_STATE 权限)。输出:call_ended, call_error。进入时没有通话且 3 秒内也没出现通话,直接返回 call_ended=true(视为已结束)。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
timeout_msNo最长等待毫秒,超时 call_ended=false(默认 600000)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are supplied, so the description carries full disclosure burden. It does well on mechanics—one-second polling, the required READ_PHONE_STATE permission, output keys call_ended/call_error, and the notable 3-second no-call short circuit that yields call_ended=true—but says nothing about blocking side effects on workflow execution or how a mid-wait call_error is produced.

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

Conciseness4/5

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

Purpose, permission requirement, outputs, and the edge case are front-loaded in a compact block. Minor waste remains: a duplicated '。。' separator and the interpolation/return-format sentence tacked on without clear grouping.

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

Completeness4/5

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

With no output schema, the description compensates by naming the returned fields and describing the degenerate no-call case, plus the permission prerequisite. An agent has enough to invoke it correctly; only the interaction between timeout_ms and the short-circuit condition is left to inference.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the four parameters including timeout_ms semantics are already documented; baseline 3 applies. The one addition, that string parameters accept ${var} interpolation, is genuine value not in the schema, but the timeout/require parameters themselves are not elaborated in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific blocking action and resource: '阻塞等待当前通话挂断', with the polling mechanism in parentheses. It is clearly distinguishable from non-blocking siblings like ACTION_GET_CALL_STATE, though it does not explicitly name ACTION_WAIT_CALL_ANSWER as the contrasting alternative.

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

Usage Guidelines3/5

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

The description implies the preconditions (an active call, READ_PHONE_STATE permission) but never says when to choose this over ACTION_WAIT_CALL_ANSWER or ACTION_GET_CALL_STATE, nor when not to use it. Usage is inferable from the name and the blocking semantics, but not stated.

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

ACTION_WAIT_FOR_ELEMENTA

等元素:每 500ms 轮询,等待界面元素出现或消失(需无障碍)。输出:element_found。结果为 true 表示条件满足:wait_for=disappear 时 true 是「已消失」。只查当前活动窗口。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
modeNotext=可见文字或内容描述包含关键字(不区分大小写)、id=完整 viewId、class=类名子串(默认 text)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
selectorYes关键字 / 完整 viewId(如 com.pkg:id/xxx)/ 类名(按 mode)。支持 ${var}
wait_forNo等出现还是等消失(默认 appear)
output_varNo结果变量名(默认 element_found)
timeout_msNo最长等待毫秒(默认 10000)(也认:timeout)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does substantial work: 500ms polling cadence, accessibility dependency, scope limited to the current active window, results surfaced as a variable snapshot JSON, and ${var} interpolation in string parameters. It omits the failure path (what is returned or raised when the condition is never met before timeout), which is the main remaining gap for a blocking operation.

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

Conciseness4/5

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

Dense but front-loaded: purpose, polling behavior, output variable and its polarity, scope, then interpolation. Every clause carries information, with only a stray duplicated period ('。。') as noise.

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

Completeness4/5

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

For an 8-parameter blocking node with no output schema and no annotations, the description covers the crucial semantics: polarity of the boolean, output variable, polling, accessibility, and window scope. The main omission is timeout/error behavior, partially mitigated by the on_error and node_timeout_ms schema fields.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuinely non-obvious meaning: for wait_for=disappear, a true result means the element has disappeared, which inverts the naive reading of 'element_found'. It also confirms the default output variable name and interpolation support, though it does not touch mode/require/on_error beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('等元素'/wait for element) and the two conditions it waits on (appear/disappear), which is enough to distinguish it from ACTION_FIND_ELEMENT in practice. It does not name the sibling tool explicitly, so it stops short of full differentiation.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: the 500ms polling and appear/disappear framing tell an agent this is the blocking variant of an element lookup. There is no explicit 'use this instead of ACTION_FIND_ELEMENT when...' guidance, no statement of what happens on timeout, and the accessibility prerequisite is the only hard constraint mentioned.

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

ACTION_WAIT_UNTIL_TIMEA

等待到指定时刻再继续(每秒轮询)。输出:time_reached, wait_until_time。执行器默认单节点超时 30 分钟:等待超过 29 分钟需同时设 node_timeout_ms=0(或足够大),否则 timeout_ms 会被截到 29 分钟。clock 模式下今天已过的时刻顺延到明天;超时后 time_reached=false 并继续 next。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
modeNoclock=钟点,timestamp=毫秒时间戳(默认 clock)
timeYes目标时刻:clock 模式为 HH:mm 或 HH:mm:ss,timestamp 模式为毫秒时间戳;支持 ${var}
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
output_varNo是否等到的结果变量名(time_reached 总会写)(默认 time_reached)
timeout_msNo最长等待毫秒(至少 1000);默认 29 分钟,设了 node_timeout_ms 时默认 12 小时
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does it well: it discloses 1-second polling, the 30-minute executor timeout and its truncation of timeout_ms to 29 minutes, clock-mode day roll-over, and that on timeout time_reached=false and the workflow continues. Missing only edge cases such as a past timestamp in timestamp mode.

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

Conciseness4/5

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

Front-loaded with purpose, then caveats in decreasing importance, with no filler. Minor deductions for the duplicated full-width period ('next。。') and a trailing sentence about ${var} interpolation that is generic boilerplate across all tools.

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

Completeness4/5

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

Covers the hard parts of a 7-parameter, annotation-free wait tool: output variable names, timeout semantics, and roll-over behavior. Without an output schema it also names the returned keys, leaving little an agent would need to guess before invoking it.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so 3 is the baseline; the description goes beyond it by explaining the timeout_ms/node_timeout_ms interaction (truncation to 29 minutes), that time_reached is always written regardless of output_var, clock-mode roll-over for time, and ${var} interpolation for string parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and target: 'wait until the specified moment then continue (polling every second)', which is unambiguous and distinct from a relative pause. It never names the closest sibling (ACTION_DELAY) as the alternative for relative waits, so differentiation is left implicit.

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

Usage Guidelines4/5

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

Gives concrete when-to-configure guidance: clock mode rolls a time already passed today to tomorrow, and waits over 29 minutes require node_timeout_ms=0 or a large value. It does not tell the agent when NOT to use this tool (e.g. use ACTION_DELAY for a fixed relative pause).

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

ACTION_WIFIA

WiFi 开关、切换、查询状态(开关需 Shizuku 或 root(Android 10+ 系统 API 对普通应用无效);status 不需要)。输出:wifi_success, wifi_enabled, wifi_state。wifi_state 是 WifiManager 数字码:0=关闭中 1=已关 2=开启中 3=已开 4=未知;开启中也算 wifi_enabled=true。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
actionYeson/off/toggle 开关;status 查询(只有 status 写 wifi_enabled/wifi_state)
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the privilege requirement, the exact output fields, the numeric wifi_state code table, and the rule that a transitional state still sets wifi_enabled=true. It does not say whether the call blocks until the WiFi state settles or returns immediately after issuing the request, which matters for the 'turning on/off' states it defines.

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

Conciseness4/5

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

Front-loaded with the operations, then the permission caveat, then the output contract — the ordering matches how an agent reads it. There is minor redundancy (the wifi_enabled clarification repeats the state table, and a stray doubled '。。' punctuation), but virtually every clause contributes.

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

Completeness5/5

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

For a tool with no output schema and no annotations, the description supplies the missing pieces: permission requirements, return field names, the state code mapping, and the variable-snapshot return format. An agent can call it and interpret the response without further documentation.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all four parameters, including which action writes which output variable. The description adds only that string parameters support ${var} interpolation, a small but genuine addition beyond the schema; nothing else about require, on_error, or node_timeout_ms is expanded.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific resource (WiFi) and enumerates the exact operations (on/off/toggle/status query) with a concrete verb for each. It is not confused with any sibling, although it never explicitly distinguishes itself from ACTION_NETWORK_STATUS or ACTION_GET_SETTING, which an agent may also consider for connectivity questions.

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

Usage Guidelines4/5

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

Gives a real prerequisite that changes tool selection: on/off/toggle require Shizuku or root on Android 10+ because the system API is unavailable to ordinary apps, while status does not. It does not tell the agent when to prefer a sibling (e.g. ACTION_NETWORK_STATUS for connectivity) or what to do if neither Shizuku nor root is available.

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

ACTION_WORKSPACEB

读写本机工作区条目(结果、笔记、图片),用户在 App「工作区」页查看。输出:workspace_id, workspace_kind, workspace_content, workspace_path, workspace_list, workspace_count, workspace_name, workspace_success, workspace_error。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
idNoread/delete:条目 id,优先于 name
tagNolist:按标签筛选
kindNowrite:条目类型 text(默认)/ json / image;list:按类型筛选,可多一个 record;其余为别名
nameNo条目显示名(write/append 必填;read/delete 可用它或 id 定位)
tagsNowrite/append:标签,逗号分隔
limitNolist:最多返回条数(1–200)(默认 20)
queryNosearch:找最近一条名字/标签/内容包含它的笔记(文本或 JSON);空=最近一条
actionNo操作类型(默认 write)
contentNowrite/append:内容,支持 ${var};kind=json 时须为合法 JSON,kind=image 时为 base64
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
overwriteNowrite:同名同类时覆盖;false 则自动改名为「名字 (2)」(默认 true)
image_pathNokind=image:图片文件路径(代替 content),上限 8MB
output_varNoread/search 的内容 / list 的 JSON 数组存到的变量名(默认 workspace_content / workspace_list)
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden, yet it only discloses that results come back as a variable-snapshot JSON and that ${var} interpolation is supported. It says nothing about the destructive nature of delete, overwrite/rename semantics, the 8MB image cap, or timeout/error handling, all of which an agent needs to call this safely.

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

Conciseness4/5

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

Two compact sentences with the purpose front-loaded, followed by the output field list. Nothing is padded, though the enumerated output fields are dense and somewhat redundant as a run-on list.

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

Completeness3/5

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

For a 15-parameter, six-action tool with no output schema, listing the returned fields and the interpolation behavior is genuinely useful compensation. However, the description omits the risk profile of the mutating actions (delete, overwrite, image size limit) and the per-action branching, leaving gaps relative to the tool's complexity.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each of the 15 parameters already documents its role per action, so the baseline is 3. The description only adds cross-cutting meaning — string interpolation with ${var} and the default output variable names — rather than clarifying individual parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete verb and resource: read/write local workspace entries of types results, notes and images, viewable on the App's Workspace page. The resource is specific enough to separate it from siblings like ACTION_CLIPBOARD and ACTION_APP_SEARCH, though it never names an alternative explicitly.

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

Usage Guidelines3/5

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

Usage is only implied: the parenthetical '(results, notes, images)' and the note that users view entries in the App Workspace page hint at persistence use cases. There is no explicit statement about when to choose this over sibling actions such as ACTION_CLIPBOARD or ACTION_SET_VARIABLE, and no exclusions or prerequisites.

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

agent_startA

启动自主循环。arguments: goal(必填), provider(jev/deepseek/local,可空), max_steps(1-40,默认 20,可空), planner(true/false,可空,覆盖界面开关)。配了 DeepSeek key 且开启规划时,先由 DeepSeek 拆步骤、最后复核

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses that this kicks off an autonomous multi-step loop and that a DeepSeek planner decomposes and reviews steps when a key is configured and planning is on. It omits key behavioral facts: whether the call returns immediately or blocks, how progress/results are retrieved, and any cost or rate implications of the planner.

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

Conciseness4/5

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

Front-loads the purpose in four characters, then enumerates parameters compactly; no filler. The final sentence about DeepSeek planning is dense and slightly cryptic (it mixes planning trigger conditions into the same run-on structure), but it earns its place.

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

Completeness4/5

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

For a zero-parameter, no-output-schema tool, the description covers purpose, all arguments with types/enums/defaults, and the planner conditional. The remaining gap is lifecycle: it never says how the loop reports back or how it terminates, which matters for an asynchronous 'start' operation paired with agent_status/agent_stop.

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

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no declared properties, so the description is the sole documentation, and it supplies real meaning: goal is required, provider takes jev/deepseek/local, max_steps is bounded 1-40 with default 20, and planner overrides the UI toggle. These enum values, ranges and defaults are exactly the semantics an agent needs and cannot get from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('启动自主循环' – start an autonomous loop), which is clear and distinguishable from sibling agent_stop / agent_status by implication. It does not explicitly name those siblings, so differentiation is inferred rather than stated.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance: nothing says to call this before agent_status to poll progress, or that agent_stop ends the loop. The DeepSeek planning clause describes internal behavior, not invocation guidance.

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

agent_statusC

自主循环状态与最近步骤

NameRequiredDescriptionDefault

No parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full burden, yet it never states that the call is read-only, whether it blocks, or what the 'recent steps' contain. It hints at return content but discloses no behavioral traits beyond that.

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

Conciseness3/5

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

It is a single short phrase with no wasted words, but the brevity comes at the cost of under-specification rather than efficiency. There is no structure beyond the one clause.

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

Completeness2/5

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

With no annotations and no output schema, the description is the only source of information about what this tool returns, and 'status and recent steps' is too thin to tell an agent what fields or format to expect. A status tool of this kind needs more detail on the returned state.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. The schema is trivially complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description '自主循环状态与最近步骤' (autonomous loop status and recent steps) names the resource and what it reports, so an agent can tell it is a status-read tool rather than agent_start or agent_stop. However, it is a noun phrase with no verb and no scope detail, leaving the purpose only loosely defined.

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

Usage Guidelines2/5

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

There is no guidance on when to call this versus the sibling lifecycle tools agent_start and agent_stop, nor any stated preconditions such as whether a loop must already be running. The agent must infer usage entirely from the name.

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

agent_stopC

停止自主循环

NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden, yet it does not say whether the stop is immediate or graceful, whether in-flight actions complete, whether state is preserved, or whether the call returns anything. For a control-flow mutation tool this is a significant disclosure gap.

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

Conciseness4/5

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

A single short phrase with no filler and the operative verb front-loaded. It is economical, though the brevity contributes to the tool's under-specification rather than being purely a virtue.

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

Completeness2/5

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

For a zero-argument control tool that terminates an autonomous loop, the agent needs to know what happens to the loop and to the agent afterwards; none of that is covered, and there is no output schema to fill the gap.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema has nothing to explain and the baseline of 4 applies; the description does not need to add parameter meaning here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a verb plus object (

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

Usage Guidelines2/5

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

No when-to-use guidance, no mention of the sibling agent_start or agent_status, and no indication of whether stopping is required before restarting or after agent_status reports a running loop.

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

CONDITION_ADVANCED_SWITCHA

高级条件分支:表达式先插值,两边都可以是变量或字面值。插值后每一侧若是已定义的变量名就取其值,否则当字面值;数字比较只认数字类型变量,字符串变量请写成 ${var}。contains/startswith/endswith 不区分大小写且两侧要有空格;内置 is_daytime / is_nighttime(8:00–17:59 为白天)。分支写在 branches(true/false → 节点 id),不走 next。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
varNo拆分写法:左侧变量名
valueNo拆分写法:右侧值
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
operatorNo拆分写法:运算符(也认:op)
expressionNo条件表达式,支持 ${var},如 ${score} > 10、is_daytime;不填则用 var/operator/value 组装
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: it discloses the interpolation-then-resolution rule (defined variable name → value, otherwise literal), that numeric comparisons only accept numeric-typed variables while string variables must be written `${var}`, that contains/startswith/endswith are case-insensitive and require surrounding spaces, that branching uses `branches` rather than `next`, and that results come back as a variable snapshot JSON. It could still say what happens when neither branch key matches or what the snapshot contains.

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

Conciseness4/5

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

The core concept is front-loaded in the first clause and every subsequent clause carries usable semantics (typing, operators, built-ins, branching, return shape) rather than filler. It is dense and semi-colon-chained without headings, and it ends with a stray trailing punctuation, so it is packed rather than elegant.

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

Completeness4/5

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

For a 7-parameter, zero-required, no-output-schema workflow node with no annotations, the description covers evaluation semantics, operator quirks, built-in predicates, branch routing, and the return form. Gaps remain around the shape of `branches` (no example object) and default routing when a branch key is missing.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning: it explains how `expression` relates to the `var`/`operator`/`value` trio, how each side of a comparison is resolved after interpolation, and the type pitfalls of numeric vs string variables. The `${var}` escaping rule for string variables is exactly the kind of guidance the schema cannot express.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource (conditional branch node) and its mechanism: expression interpolation, comparison, and branching via `branches` keys mapped to node ids. It is clearly a conditional-branch tool, but it never mentions the sibling CONDITION_SWITCH, so an agent cannot tell from the text alone why it should pick the 'advanced' variant.

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

Usage Guidelines3/5

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

Usage is only implied by the mechanics: use `expression` or the split `var`/`operator`/`value` form, and `require` when asserting a post-condition. There is no explicit statement of when this node should be chosen over CONDITION_SWITCH or over ACTION_ASSERT, and no stated prerequisites.

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

CONDITION_SWITCHA

按条件表达式走 true / false 分支。运算符 ==、!=、>、<、>=、<=、contains、startswith、endswith;== / != 按字符串比较,> < >= <= 按数字比较(非数字当 0),contains/startswith/endswith 不区分大小写。左边是变量名(不要写 ${}),右边是字面值,值不加引号;> 和 < 两侧必须有空格;未定义变量按字符串 null 比较。分支写在节点的 branches(true/false → 节点 id),不走 next,缺的分支即该路径结束。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。

NameRequiredDescriptionDefault
requireNo执行后要求为 true 的变量名(如 click_success),不满足按出错处理
on_errorNo节点出错时:skip=跳过继续(默认),stop=停止整个工作流
expressionYes条件:变量名 运算符 值(如 battery_level > 20),或单个布尔变量名
node_timeout_msNo单节点超时毫秒,0=不限;默认 30 分钟

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are supplied, so the description must carry the full behavioral burden, and it does disclose substantial runtime semantics: == / != compare as strings, > < >= <= coerce non-numeric values to 0, contains/startswith/endswith are case-insensitive, and undefined variables compare as the string 'null'. It still omits how missing variables or malformed expressions surface at runtime and does not describe the variable snapshot payload beyond naming its shape.

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

Conciseness4/5

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

The opening clause states the purpose first, then operator semantics, then branch wiring, then return shape – a sensible front-loaded order. It is dense with semicolon-chained clauses and ends with a doubled full stop, but nearly every clause carries real information.

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

Completeness4/5

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

For a four-parameter branching node with no output schema, the description covers the essential grammar, branch wiring, evaluation coercions, and the return format (a variable snapshot JSON). The main remaining gap is disambiguation from CONDITION_ADVANCED_SWITCH and any statement about expression-evaluation failure modes.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description earns above baseline by specifying expression grammar the schema only gestures at: the operator set, that the left side is a bare variable name without ${}, that the right side is an unquoted literal, and that > and < require surrounding spaces. Interpolation of ${var} in string parameters is also noted. The require and on_error parameters are not elaborated beyond their schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: routing a workflow along true/false branches by condition expression. An agent immediately understands the node type. It does not, however, distinguish itself from the sibling CONDITION_ADVANCED_SWITCH, leaving the reader to guess which branching node to pick.

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

Usage Guidelines4/5

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

Operational context is clear: branches go in the node's branches map (true/false → node id), the node does not use next, and a missing branch simply ends that path. What is absent is explicit routing guidance against the alternative CONDITION_ADVANCED_SWITCH when a simple expression will not do.

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

debug_screenB

排查用:当前观测快照 + 候选动作清单。arguments: goal(可空,默认「打开设置」)

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a diagnostic read operation by mentioning an observation snapshot, but it does not state side effects, permissions, rate limits, or whether candidate actions are executed.

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

Conciseness5/5

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

The description is compact and front-loads the purpose and return shape before the argument note. Every clause carries information, with no redundant wording.

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

Completeness3/5

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

With no output schema and no annotations, the description leaves 'observation snapshot' and 'candidate action list' underspecified. It is enough to identify a diagnostic tool, but not enough to interpret the return or confidently choose it over sibling screen-related tools.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema declares zero properties, but the description adds an optional goal argument with a default of '打开设置'. That adds useful meaning beyond the schema, though it does not explain how goal affects the returned snapshot or candidates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource it returns—an observation snapshot plus candidate actions—and frames it as a troubleshooting tool. It does not distinguish it from screen, mini_screen_status, or ACTION_READ_SCREEN, so a 4 is appropriate rather than 5.

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

Usage Guidelines3/5

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

It says only '排查用' (for troubleshooting), which gives an implied usage context. It provides no explicit when/when-not guidance and names no alternatives such as screen or ACTION_READ_SCREEN.

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

mini_screen_statusB

悬浮小屏当前内容(是否显示、标题、来源、文字、进度),只读

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden. It does disclose the most important behavioral fact — 只读, i.e. non-mutating — and lists the observable content, which is real value. It says nothing about behavior when no mini-screen is present, whether stale values are returned, or how the progress value is scaled.

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

Conciseness4/5

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

One compact line with zero filler, and the field enumeration is front-loaded inside the parenthetical. It is dense and readable, though the missing verb makes it read more like a label than an instruction.

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

Completeness3/5

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

With no annotations and no output schema, the description is the only source of information, and it does list the returned fields. However, it gives no shape for the response (field names, types, how progress is represented), which matters precisely because there is no output schema to fall back on.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics to explain; baseline 4 applies. The parenthetical field list actually describes the response rather than inputs, which is a reasonable use of the space.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (悬浮小屏, the floating mini-screen) and enumerates exactly what it reports: display state, title, source, text, progress. That is concrete enough to distinguish a status read from the sibling ACTION_MINI_SCREEN controller, but the sibling is never named and the phrasing is a noun phrase rather than a verb, so differentiation is inferential.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of the obvious alternative ACTION_MINI_SCREEN (which presumably sets the mini-screen). The only hint is the trailing 只读, which implies 'use this instead of the control action when you only need state', but the agent must infer that itself.

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

pingC

连通性测试

NameRequiredDescriptionDefault

No parameters

TDQS

C2.4/5.0
Behavior1/5

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

No annotations are supplied, and the description adds no behavioral information such as whether the check is read-only, what request is sent, timeout or failure behavior, or what result is returned. Calling it a “test” alone does not disclose those traits.

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

Conciseness3/5

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

The phrase is extremely compact and contains no filler. However, its brevity omits the target and result semantics, making it under-specified rather than fully efficient.

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

Completeness2/5

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

A zero-argument connectivity check is simple, but the lack of annotations and an output schema leaves important context entirely to the description. It does not say what is tested or how success and failure are represented.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero declared parameters, so there are no parameter meanings for the description to clarify and the baseline score applies. Although additionalProperties is allowed, no specific optional inputs are documented that the description would need to explain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

“连通性测试” means “connectivity test,” so it conveys a diagnostic purpose rather than merely repeating “ping.” It does not identify whose connectivity is tested or distinguish the tool from siblings such as ACTION_NETWORK_STATUS or ACTION_HTTP_REQUEST.

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

Usage Guidelines2/5

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

The only implied use is a generic connectivity check. There is no guidance on when a ping is appropriate, what prerequisites exist, or when to use a sibling network tool instead.

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

screenB

获取当前屏幕无障碍树文本 + 前台应用包名(AI 的眼睛)

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are supplied, so the description must carry the full disclosure burden. It does name the two things returned (tree text plus package name), which implies a non-mutating read, but it says nothing about output size, verbosity, whether the tree can be truncated, or whether any permission is needed. For a zero-parameter observation tool this is adequate but thin.

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

Conciseness5/5

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

It is a single compact sentence that front-loads the two returned artifacts, with no filler or repetition. The parenthetical framing is short and reinforces purpose rather than padding the text.

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

Completeness3/5

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

There is no output schema and no annotations, so the description is the only place return-value detail could live. It identifies the two return components but not their shape or size, which leaves an agent guessing about how much text to expect. For a simple zero-argument read tool, this is the minimum viable level of completeness.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the schema declares an empty property set, so there is no parameter meaning to add. The description correctly implies the call needs no arguments, and the baseline for a parameterless tool applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete verb and two concrete resources: the current screen's accessibility tree text and the foreground app package name. That is far more specific than the tool name 'screen' alone. It does not, however, distinguish this tool from siblings such as ACTION_READ_SCREEN, ACTION_FOREGROUND_APP, mini_screen_status or debug_screen, which appear to overlap.

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

Usage Guidelines2/5

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

The parenthetical '(AI's eyes)' hints that this is the way an agent perceives the screen, but there is no explicit when-to-use rule and no when-not-to-use rule. Nothing tells the agent whether to prefer this over ACTION_READ_SCREEN, ACTION_SCREENSHOT or ACTION_FOREGROUND_APP, even though those siblings clearly compete for the same job.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 78 tool updatesv0.1.0
    • First observedACTION_AI_CHAT
    • First observedACTION_APP_SEARCH
    • First observedACTION_ARRAY
    • First observedACTION_ASSERT
    • First observedACTION_BASE64
    • First observedACTION_BLUETOOTH
    • First observedACTION_BRIGHTNESS
    • First observedACTION_CLICK
    • First observedACTION_CLIPBOARD
    • First observedACTION_DELAY
    • First observedACTION_DND_MODE
    • First observedACTION_DYNAMIC_ISLAND
    • First observedACTION_FIND_ELEMENT
    • First observedACTION_FLASHLIGHT
    • First observedACTION_FOREGROUND_APP
    • First observedACTION_GEOCODE
    • First observedACTION_GET_APP_INFO
    • First observedACTION_GET_AUDIO_STATE
    • First observedACTION_GET_BATTERY
    • First observedACTION_GET_CALL_STATE
    • First observedACTION_GET_DEVICE_INFO
    • First observedACTION_GET_LOCATION
    • First observedACTION_GET_SCREEN_STATE
    • First observedACTION_GET_SENSOR
    • First observedACTION_GET_SETTING
    • First observedACTION_GET_SIM_INFO
    • First observedACTION_GET_STORAGE_INFO
    • First observedACTION_GET_TIME
    • First observedACTION_GET_TRAFFIC
    • First observedACTION_GET_WEATHER
    • First observedACTION_GLOBAL_KEY
    • First observedACTION_GLOBAL_NAV
    • First observedACTION_HTTP_REQUEST
    • First observedACTION_INPUT_TEXT
    • First observedACTION_LAUNCH_APP
    • First observedACTION_LOG
    • First observedACTION_LONG_PRESS
    • First observedACTION_LOOP
    • First observedACTION_MATH
    • First observedACTION_MEDIA_CONTROL
    • First observedACTION_MINI_SCREEN
    • First observedACTION_NETWORK_STATUS
    • First observedACTION_PARSE_DATETIME
    • First observedACTION_PARSE_JSON
    • First observedACTION_PARSE_XML
    • First observedACTION_PLAY_MEDIA
    • First observedACTION_RANDOM
    • First observedACTION_READ_NOTIFICATIONS
    • First observedACTION_READ_SCREEN
    • First observedACTION_RETRY
    • First observedACTION_SCREEN_WAKE
    • First observedACTION_SCREENSHOT
    • First observedACTION_SEND_NOTIFICATION
    • First observedACTION_SET_ALARM
    • First observedACTION_SET_VARIABLE
    • First observedACTION_SHARE
    • First observedACTION_SWIPE
    • First observedACTION_TEXT_OPERATION
    • First observedACTION_TEXT_TO_SPEECH
    • First observedACTION_TOAST
    • First observedACTION_TRY_CATCH
    • First observedACTION_VIBRATE
    • First observedACTION_VOLUME
    • First observedACTION_WAIT_CALL_ANSWER
    • First observedACTION_WAIT_CALL_END
    • First observedACTION_WAIT_FOR_ELEMENT
    • First observedACTION_WAIT_UNTIL_TIME
    • First observedACTION_WIFI
    • First observedACTION_WORKSPACE
    • First observedagent_start
    • First observedagent_status
    • First observedagent_stop
    • First observedCONDITION_ADVANCED_SWITCH
    • First observedCONDITION_SWITCH
    • First observeddebug_screen
    • First observedmini_screen_status
    • First observedping
    • First observedscreen

TDQS

B3.1/5.0

Scored across 78 tools

Disambiguation3/5

Most tools target a distinct device capability, and the descriptions work hard to separate near-neighbors (e.g. ACTION_GET_APP_INFO explicitly defers to ACTION_FOREGROUND_APP for a shell fallback). However there are several genuinely confusable pairs: ACTION_GLOBAL_KEY vs ACTION_GLOBAL_NAV both expose back/home/recents/notifications, ACTION_GET_TIME vs ACTION_PARSE_DATETIME both return date parts, and ACTION_TOAST vs ACTION_SEND_NOTIFICATION vs ACTION_DYNAMIC_ISLAND vs ACTION_MINI_SCREEN are four different ways to surface output to the user. With 78 tools an agent will often need to read descriptions closely before picking.

Naming Consistency3/5

The bulk of the surface uses an ACTION_* SCREAMING_SNAKE prefix, which is a clear and readable convention. But it is mixed with lowercase control tools (agent_start, agent_stop, agent_status, screen, debug_screen, ping, mini_screen_status) and unprefixed uppercase condition nodes (CONDITION_SWITCH), so there are effectively three naming families with no rule an agent can predict.

Tool Count2/5

78 tools is far past the point where an agent can hold the surface in mind; selection becomes a search problem rather than a choice. The domain (full Android device automation) is genuinely broad and most tools are non-redundant, so it is not gratuitous padding, but the set is still drastically over-scoped for a single MCP surface.

Completeness4/5

Coverage is unusually thorough: UI observation and interaction, system/device state reads, radios, media, notifications, variables, arrays, math, text, JSON/XML parsing, HTTP, loops, retry, try/catch, and both condition branch types. Gaps are minor — no file read/write node despite error hints referencing file_success, and no SMS/call-placing action to pair with the call-state waits.

Maintenance

ActivityActive
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that lets AI agents control iOS and Android devices (tap, scroll, type, take screenshots, read UI trees, and run code). Works with multiple devices at the same time.
    113 npm
    53
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Give any LLM agent a real Android or iPhone. 62 MCP tools: tap, swipe, type, screenshot, screen-tree reading, app launch, camera, TTS, crash reports, batched execution. Android via ADB, iPhone via WebDriverAgent, on-device inference, Docker+KVM emulators. Works with Claude Code, Cursor, LangChain, LlamaIndex, and any MCP client. MIT.
    66
    111 PyPI
    413
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Local-first MCP server that enables AI agents to safely control and observe Android mobile devices, supporting device diagnostics, app lifecycle management, async task execution, and performance monitoring through a policy-constrained interface with explicit confirmations.
    Apache 2.0