HabitatEngine
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HABITAT_URL | No | Phone MCP endpoint. Default http://127.0.0.1:8931/mcp (USB: run adb forward tcp:8931 tcp:8931). | |
| HABITAT_TOKEN | No | Token from the Agent page of the Habitat app on the phone. Without it, only the tool list is available. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| screenB | 获取当前屏幕无障碍树文本 + 前台应用包名(AI 的眼睛) |
| debug_screenB | 排查用:当前观测快照 + 候选动作清单。arguments: goal(可空,默认「打开设置」) |
| pingC | 连通性测试 |
| mini_screen_statusB | 悬浮小屏当前内容(是否显示、标题、来源、文字、进度),只读 |
| agent_startA | 启动自主循环。arguments: goal(必填), provider(jev/deepseek/local,可空), max_steps(1-40,默认 20,可空), planner(true/false,可空,覆盖界面开关)。配了 DeepSeek key 且开启规划时,先由 DeepSeek 拆步骤、最后复核 |
| agent_stopC | 停止自主循环 |
| agent_statusC | 自主循环状态与最近步骤 |
| 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 返回。 |
| ACTION_APP_SEARCHA | 搜索已安装应用,结果为 JSON 数组。输出:app_list, app_count, app_search_success, app_search_error。每项含 package、name、is_system、version_name、version_code。Android 11+ 受包可见性限制,没有桌面图标的应用可能搜不到。节点必须带 params(可为 {}),缺 params 字段时什么都不做。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_ARRAYA | 数组变量操作:建立、追加、弹出、取值、长度、拼接、清空、删除、包含。输出:array_result。value、item、index 不做 ${var} 插值;元素一律按字符串存。数组本体存回 var。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_ASSERTA | 断言:条件为假时让本节点失败,进入错误处理。失败按节点出错处理,可被 on_error、ACTION_TRY_CATCH、ACTION_RETRY 捕获。运算符 ==、!=、>、<、>=、<=(无 contains);两边先按变量名取值,取不到当字面值;不支持 ${var},值不加引号。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_BASE64A | Base64 编码或解码(UTF-8 文本)。输出:base64_result, base64_success。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_BLUETOOTHA | 蓝牙开关、切换、查询状态(开关需 Shizuku 或 root(Android 13+ 系统 API 对普通应用无效);status 不需要)。输出:bluetooth_success, bluetooth_enabled。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| 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 返回。 |
| ACTION_CLICKA | 点击:按坐标、界面文字或 resource-id 点击目标(需无障碍)。输出:click_success。同一文字可能多处出现(多个「确定」「发送」):用 region 限定区域或 occurrence 取第 N 个,避免点错。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_CLIPBOARDA | 读取或写入系统剪贴板。输出:clipboard_content, clipboard_success, clipboard_error。Android 10+ 应用在后台时系统禁止读剪贴板,get 可能得到空串而 clipboard_success 仍为 true。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_DELAYA | 暂停指定毫秒数。超过 60 秒的等待用 ACTION_WAIT_UNTIL_TIME。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| 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 返回。 |
| ACTION_DYNAMIC_ISLANDA | 屏幕顶部弹出灵动岛样式的胶囊提示,到时自动消失(宿主 App 注册;需悬浮窗权限)。duration_ms 必须是数字,写成字符串会被忽略按 3000。不阻塞,显示后立即执行下一节点;没有悬浮窗权限时静默失败,不写任何变量。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_FIND_ELEMENTA | 找元素:限时轮询查找界面元素,输出是否找到、边界和文字(需无障碍)。输出:element_found, element_error, element_bounds, element_text, element_clickable。element_bounds 是 "left,top,right,bottom" 四个数,不能直接当 ACTION_CLICK 的 target(会点到左上角)。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_FLASHLIGHTA | 手电筒开关。输出:flashlight_success, flashlight_on。系统没有同步查询手电状态的 API:toggle 按本次运行记录的 flashlight_on 取反,没记录时一律打开。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| 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 返回。 |
| ACTION_GEOCODEA | 地址与经纬度互查(OpenStreetMap Nominatim,免 key)(需网络)。输出:geocode_success, geocode_error, latitude, longitude, address。地址查询取第一个结果写 latitude/longitude,逆查写 address,会覆盖同名变量(如 ACTION_GET_LOCATION 写的 latitude/longitude)。境外第三方服务,可能慢或不可达;连接/读取超时固定各 10 秒。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_GET_APP_INFOA | 读取前台应用包名和 Activity(经无障碍)(需无障碍)。输出:current_app, current_activity。无障碍未开时写 unknown;需要 shell 兜底请用 ACTION_FOREGROUND_APP。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_GET_AUDIO_STATEB | 读取是否在播放音乐、是否连着耳机。输出:music_active, headset_connected, audio_state_success, audio_state_error。headset_connected 含有线/USB 耳机和蓝牙 A2DP。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_GET_BATTERYA | 读取电量和充电状态。输出:battery_level, battery_charging, battery_success, battery_error。battery_level 为 0–100;充满时 battery_charging 也为 true。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| 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 返回。 |
| 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 返回。 |
| ACTION_GET_LOCATIONA | 读取系统最后一次已知位置(GPS/网络取较新者)(需定位权限)。输出:location_success, location_error, latitude, longitude, location_accuracy, location_time, location_summary。不主动定位:从没定位过会失败,结果可能是旧位置(看 location_time 毫秒时间戳)。location_accuracy 单位米。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_GET_SCREEN_STATEB | 读取屏幕是否亮着、是否锁屏。输出:screen_on, screen_locked, screen_state_success, screen_state_error。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_GET_SENSORA | 读取一次光线、距离或加速度传感器的值。输出:sensor_value, sensor_type, sensor_success, sensor_error。只取首个读数的第一个分量(加速度为 X 轴);3 秒内没有读数即失败。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_GET_SETTINGA | 读取一项系统设置(只读)。输出:setting_value, setting_key, setting_namespace, setting_success, setting_error。值总是字符串;键不存在或无权读取时 setting_success=false(新版 Android 限制读取部分 secure/global 键)。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| 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 返回。 |
| ACTION_GET_STORAGE_INFOB | 读取内部存储空间(字节)。输出:storage_total, storage_available, storage_used, storage_available_percent, storage_success, storage_error。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| 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 返回。 |
| ACTION_GET_TRAFFICB | 读取开机以来整机累计收发流量(字节)。输出:traffic_rx, traffic_tx, traffic_total, traffic_summary, traffic_success, traffic_error。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| 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 返回。 |
| ACTION_GLOBAL_KEYA | 全局按键:返回、桌面、最近任务、通知栏、回车等(需 Shizuku/root 或无障碍(见 key 说明))。输出:key_success。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_GLOBAL_NAVA | 无障碍全局动作:返回、桌面、最近任务、通知栏、快捷设置、电源菜单、锁屏、截屏(需无障碍)。输出:nav_success, nav_error。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| 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 返回。 |
| ACTION_INPUT_TEXTA | 输入文字:写入输入框,可选输入后回车提交(需无障碍(mode=shell/ime 需 Shizuku 或 root))。输出:input_success。a11y 模式会读回输入框核对内容。shell/ime 的 input text 打不出中文等非 ASCII 字符。QQ/微信等输入框点过后常不报告焦点,传 target 坐标才写得进去。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_LAUNCH_APPA | 打开应用,或打开系统设置的某一页。输出:launch_success, launch_error, launch_has_overlay, launch_package。Android 10+ 后台启动可能被系统静默拦截而 launch_success 仍为 true;launch_has_overlay 表示是否有悬浮窗权限(后台启动的豁免条件之一)。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_LOGA | 输出一条调试日志。只写 Logcat(tag HabitatLog),不进工作流运行日志;要让用户看到请用 ACTION_TOAST 或 ACTION_WORKSPACE。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_LONG_PRESSA | 长按:按坐标或界面文字 / viewId 长按目标(需无障碍)。输出:long_press_success。target 含逗号一律按坐标解析,解析失败直接失败(不像 ACTION_CLICK 会退回文字匹配);不支持 region/occurrence。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_LOOPA | 计数或条件循环:每次进入判断是跳进循环体还是走 next 结束。输出:loop_index。循环体最后一个节点的 next 要指回本循环节点;本节点的 next 是循环结束后的去向。count 模式结束时 counter_var 重置为 0。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_MATHA | 两个数的四则、取模、乘方运算。输出:math_result。结果总是小数(如 5.0),CONDITION_SWITCH 用 == 比较时要写 5.0,或改用 > / <;除数为 0 时结果为 0;无法解析的操作数按 0。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_MEDIA_CONTROLA | 媒体控制:向当前播放的应用发送播放/暂停/切歌等媒体键(需 Shizuku 或 root)。输出:media_success, media_error。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| 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 返回。 |
| 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 返回。 |
| 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 返回。 |
| ACTION_PARSE_JSONA | 解析 JSON 字符串并按路径取值。输出:parsed_json, parsed_value, parse_success, parse_error。结果都是字符串(对象/数组为格式化 JSON);路径不存在时结果是字符串 null,但 parse_success 仍为 true。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_PARSE_XMLA | 解析 XML 字符串,按标签路径取元素文本或属性。输出:xml_parsed_value, xml_success, xml_error。匹配到多个元素时结果是 JSON 数组字符串。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| 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 返回。 |
| ACTION_RANDOMB | 生成随机整数、小数或布尔值。输出:random_value, random_success。int 含两端,float 为 [min, max);min > max 时自动交换。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| 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 返回。 |
| ACTION_READ_SCREENA | 在当前界面找关键字,或抓取全屏可见文字(需无障碍)。输出:screen_data。screen_data 是「是否找到 keyword」的布尔值,不是屏幕文字;要文字请设 output_var。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_RETRYA | 失败重试:反复执行目标节点(链),直到成功或次数用完。目标链最后一个节点的 next 要指回本节点;链上有节点失败就重试,成功或用完次数后走本节点 next。多数节点出错只是 xxx_success=false,要给它加 require(如 require=file_success)才算失败。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| 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 返回。 |
| ACTION_SCREEN_WAKEA | 亮屏、息屏、亮屏并解锁(sleep 和解锁需 Shizuku 或 root;wake 无 shell 时退回 WakeLock)。输出:screen_wake_success。wake_and_unlock 不核对是否真的解锁(按键序列发完即算成功);图案锁解不了。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_SEND_NOTIFICATIONA | 发一条系统通知(宿主 App 注册;Android 13+ 需通知权限(POST_NOTIFICATIONS))。title / message 原样显示,不做 ${var} 插值。不写任何输出变量。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_SET_ALARMA | 设闹钟:打开系统时钟的新建闹钟(带时间和标签)。输出:alarm_success, alarm_error。通过 Intent 调起系统时钟应用(不是静默创建),后台启动受限时可能没弹出来。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_SET_VARIABLEB | 设置一个变量。含 ${var} 的值插值后是字符串;后续要做数字运算/比较时设 type=int 或 float。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_SHAREA | 分享文字:弹出系统分享面板。输出:share_success, share_error。只通过 EXTRA_TEXT 分享文字,不附带文件;改 type 也发不了图片。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_SWIPEA | 滑动:从 (x1,y1) 直线滑到 (x2,y2)(需无障碍)。输出:swipe_success。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_TEXT_OPERATIONA | 文本处理:替换、截取、拆分、大小写、去空白、拼接。输出:text_output。split 的结果是用换行连接的一个字符串,不是数组;要真正的数组用 ACTION_ARRAY(action=set)。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_TEXT_TO_SPEECHA | 用系统 TTS 朗读文本,读完才继续(需系统已装 TTS 引擎)。输出:tts_success, tts_error。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_TOASTA | 弹出一条短提示。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_TRY_CATCHA | 按上一个节点是否失败走 success / error 分支。输出:exception_msg。只看紧挨着的上一个节点:失败指抛异常、超时或 require 不满足;多数节点出错只是 xxx_success=false,要在上一节点加 require(如 file_success)才算失败。分支写在 branches(success/error → 节点 id),不走 next,success 分支也要写,缺的分支即该路径结束。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_VIBRATEB | 振动一次。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_VOLUMEA | 音量:设置、读取、增减、静音。输出:volume_success, volume_current, volume_max。value 是百分比,而 volume_current/volume_max 是系统档位(如 0-15),两者不能直接比较。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_WAIT_CALL_ANSWERA | 阻塞等待通话进入通话中(OFFHOOK)(需 READ_PHONE_STATE 权限)。输出:call_answered, call_error。5 秒内既没响铃也没进入通话就返回 false,不会等满超时。去电一拨出系统即为 OFFHOOK,不代表对方已接听;来电则表示已接起。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_WAIT_CALL_ENDA | 阻塞等待当前通话挂断(每秒轮询通话状态)(需 READ_PHONE_STATE 权限)。输出:call_ended, call_error。进入时没有通话且 3 秒内也没出现通话,直接返回 call_ended=true(视为已结束)。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| ACTION_WAIT_FOR_ELEMENTA | 等元素:每 500ms 轮询,等待界面元素出现或消失(需无障碍)。输出:element_found。结果为 true 表示条件满足:wait_for=disappear 时 true 是「已消失」。只查当前活动窗口。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| 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 返回。 |
| 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 返回。 |
| ACTION_WORKSPACEB | 读写本机工作区条目(结果、笔记、图片),用户在 App「工作区」页查看。输出:workspace_id, workspace_kind, workspace_content, workspace_path, workspace_list, workspace_count, workspace_name, workspace_success, workspace_error。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| CONDITION_ADVANCED_SWITCHA | 高级条件分支:表达式先插值,两边都可以是变量或字面值。插值后每一侧若是已定义的变量名就取其值,否则当字面值;数字比较只认数字类型变量,字符串变量请写成 ${var}。contains/startswith/endswith 不区分大小写且两侧要有空格;内置 is_daytime / is_nighttime(8:00–17:59 为白天)。分支写在 branches(true/false → 节点 id),不走 next。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
| CONDITION_SWITCHA | 按条件表达式走 true / false 分支。运算符 ==、!=、>、<、>=、<=、contains、startswith、endswith;== / != 按字符串比较,> < >= <= 按数字比较(非数字当 0),contains/startswith/endswith 不区分大小写。左边是变量名(不要写 ${}),右边是字面值,值不加引号;> 和 < 两侧必须有空格;未定义变量按字符串 null 比较。分支写在节点的 branches(true/false → 节点 id),不走 next,缺的分支即该路径结束。。字符串参数支持 ${var} 插值;结果以变量快照 JSON 返回。 |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 78 tools
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.
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.
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.
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.