gwb-mcp
Integrates with the GoWorkBro Android app, enabling agents and CLI users to read and write the phone's todos, habits, countdowns, water logs, sleep records, and focus data. The Android phone remains the single source of truth, with each call performing a real write that refreshes the app immediately.
Uses Bluetooth LE as the direct local transport between the computer and the Android phone, with the phone acting as a BLE peripheral and the computer as central. It supports link checks, reconnection, and read/write operations without any network connection.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@gwb-mcpadd a todo called "write thesis" with a 25-minute countdown"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
goworkbro-mcp
GoWorkBro(本地单机的 Android 生活自律 app)的 电脑协同客户端:一个 MCP 服务器 + 一个 命令行工具,让电脑(以及 agent)通过 蓝牙 LE 读写手机上的待办 / 习惯 / 倒计时。
手机是唯一数据源:每次调用就是一条真实写入,手机界面立刻刷新。没有双向同步、没有冲突合并。
不联网:手机做 BLE 外设(只广播、不扫描、不申请定位权限),电脑做 central,直连。
手机端要求:GoWorkBro ≥ 3.7.0,并在
设置 → 电脑协同打开开关(默认关闭)。
安装
# 从 git 装(已发布的 wheel / sdist 在 Releases 里)
uv tool install git+https://github.com/AzarAI-TOP/goworkbro-mcp
# 或者离线装 release 里的 wheel
uv tool install https://github.com/AzarAI-TOP/goworkbro-mcp/releases/download/v0.1.0/goworkbro_mcp-0.1.0-py3-none-any.whl
# 或者用 pipx
pipx install goworkbro-mcp装完得到两个命令:gwb(CLI)与 gwb-mcp(MCP 服务器,stdio 传输)。
Related MCP server: iOS BLE-MCP Bridge
配 token
手机打开 设置 → 电脑协同,复制那串 token,在本机存一次(只需一次):
gwb token 3f9c0a7d4b6e… # 写到 ~/.config/gwb/config.json,权限 0600也可以用 GWB_TOKEN 环境变量覆盖,适合临时/多机场景。
命令行
gwb ping # 连通性 + 各表条数(首次约 3–6 秒,含蓝牙扫描)
gwb todos | habits | countdowns # 列表(--json 给脚本吃)
gwb todo add "写毕设" --icon book --color 2 --timing countdown --minutes 25
gwb todo done 5c32b591 # id 支持唯一前缀;--undone 改回未完成
gwb todo edit 5c32b591 --title "写毕设(改)" # 只改传了的字段
gwb todo rm 5c32b591 -y # 不给 -y 就拒绝
gwb habit add "读书" --target 2 --unit 章
gwb habit check 6f9ccd4d # 默认 +1(已达标时 -1,与手机上点一下一致)
gwb habit check 6f9ccd4d --delta -1
gwb cd add "二课·香文化" 2026-11-05T14:00
gwb cd rm 938ab965 -y--icon 可选值:scroll book cup dumbbell dog cat star apple music flame moon sun pencil flower sprout file heart bolt basketball coffee cloud cherry fish gamepad bulb gift clock。
接进 agent(MCP)
gwb-mcp 是标准 stdio MCP 服务器,22 个工具:
工具 | 作用 |
| 链路自检 + 各表条数 |
| 列表(待办与手机待办页同序) |
| 待办增/改字段/改完成/删 |
| 习惯增/改/打卡/删 |
| 倒计时增/改/删 |
| 今天全景:待办/习惯/喝水/睡眠/专注/下一个倒计时(一帧) |
| 记一杯水 / 今日喝水明细 |
| 最近睡眠记录(默认 14 天窗口)/ 补一条 |
| 今日专注轮次、分钟、按待办分组 |
| 主动断开,省手机电(下次调用自动重连) |
list_todos 可以传 only=open(只看未完成)或 only=today(未完成 + 今天完成的),
完成历史会一直长,只找活的时候别拉全量。add_* 都接受可选 id:传了就是 upsert,
同一个 id 重试不会变两条。
today_summary / log_water / water_today / list_sleep / log_sleep / focus_today
需要手机端 GoWorkBro 3.8+(协议 v2)。旧版 app 上调用会得到一条
too_old: … 先升级 app,其余工具照常工作。
注册示例:
# pi
pi mcp add goworkbro -- ~/.local/bin/gwb-mcp
# Claude Code
claude mcp add goworkbro -- ~/.local/bin/gwb-mcp// Cursor / 其他 ~/.config/*/mcp.json
{ "mcpServers": { "goworkbro": { "command": "~/.local/bin/gwb-mcp" } } }# Codex ~/.codex/config.toml
[mcp_servers.goworkbro]
command = "~/.local/bin/gwb-mcp"行为特性:
连接在调用之间复用:一次扫描约 3 秒,若每条命令都重扫就没法用了;实测首次约 3–6 秒, 之后单次约 0.1–0.2 秒(2026-11-03 实测:协商 MTU 前
ping0.34 s /todos.list0.5 s)。空闲 5 分钟自动断开(BLE 连接态耗手机电)。链路掉了重连一次,但不重发已经发出的写入 —— 宁可报错,也不在你的库里留重复条目。
删除类工具必须
confirm=true,否则以工具错误返回(模型能看见原因),不会静默删。并发调用安全:所有走蓝牙的操作(含 id 解析)在同一把锁里串行,回复按回显的
op校验,失步就丢弃连接重连。写操作的重放:
add_*由客户端生成 id,重试不会建出第二条;其余写在链路中断时只报link_lost,不自动重发(丢响应与写已生效无法区分),先 list 核对。
安全
手机端默认关闭;打开时生成 token,每一条请求都校验。BLE 配对是 Just Works(不做认证), 所以真正管权限的是 token。
token 存在 app 的私有设置表里,因此会随它的 JSON 备份一起导出 —— 备份文件等于凭据。
换手机 / 怀疑泄漏时,在设置里关掉再打开「电脑协同」即可作废旧 token。
已知环境问题
Linux 需要 BlueZ 跑着(
bluetoothctl show能看到控制器、Powered: yes)。手机的 BLE 地址会轮换,所以不缓存 MAC,每次扫描服务 UUID —— 不要「优化」掉这一步。
手机侧的 BLE 广播靠前台服务维持;MIUI/澎湃建议给 app 设「无限制」电池策略。
协议
线上协议见 docs/protocol.md(与 app 仓库的 docs/remote-protocol.md 同源)。
License
MIT
Available Tools
22 toolsadd_countdownC
新建倒计时。when 是本地时间、无时区,形如 2026-11-20T09:00 或 2026-11-20T09:00:00。
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| when | Yes | ||
| color | No | ||
| title | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not say what happens with duplicates, whether `id` is optional or auto-generated, what the tool returns, or any side effects. Only the time-format behavior of `when` is disclosed, which is parameter semantics rather than tool behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the tool's purpose followed by the critical format constraint. Nothing is wasted, though the economy comes partly from omitting information rather than from tight editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation tool with no annotations, no output schema, and 0% schema description coverage across four parameters. The description covers only the `when` format, leaving the ID/color/title parameters, return value, and side effects entirely unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for four undocumented parameters. It compensates well for `when` (local time, no timezone, two accepted formats), but says nothing about `id` (nullable, likely optional), `color`, or `title`, leaving three of four parameters opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb+resource ("新建倒计时" / create a new countdown), which maps unambiguously to the add_countdown name. It does not explicitly name the sibling operations (update_countdown, delete_countdown) to draw the boundary, but the create verb is still specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to create a countdown versus when to use update_countdown or list_countdowns, nor are there prerequisites or conditions. The intent is only implied by the tool's name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_habitB
新建一个习惯,返回它的 id。target_count 为每日目标次数(1..99,默认 1)。
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| icon | No | ||
| unit | No | ||
| color | No | ||
| title | Yes | ||
| target_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does disclose two useful behavioral facts beyond a bare 'create': the return value is the new id, and target_count is constrained to 1..99 with a default of 1 (a validation rule that would otherwise surface as a runtime error). It says nothing about duplicate handling, the meaning of the client-supplied id field, or whether created habits appear immediately in list_habits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and return value, then the one non-obvious parameter constraint. No filler, although the parenthetical is dense enough that clarity could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation tool with no annotations, no output schema, and zero schema coverage, the description covers purpose, return value, and a single parameter. The semantics of the optional id, icon, unit, and color fields — and expected input formats — are absent, leaving the agent to guess on most of the surface.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 6 parameters, so the description must compensate and it largely does not. Only target_count is explained (range 1..99, default 1) — genuinely useful since the schema shows only a nullable integer — while id, icon, unit, color, and title remain undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb+resource ('新建一个习惯' / create a habit) and adds that it returns the new habit's id. The noun 'habit' naturally separates it from add_todo/add_countdown siblings, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'create' verb implicitly routes the agent away from update_habit, check_habit, or delete_habit, but there is no explicit statement of when to use this instead of those alternatives, nor any preconditions (e.g. duplicate titles).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_todoB
新建一条待办,返回它的 id。
icon 取 CartoonIcons 的 key(scroll book cup dumbbell dog cat star apple music flame moon sun pencil flower sprout file heart bolt basketball coffee cloud cherry fish gamepad bulb gift clock),默认 scroll。 color 是图标底色下标 0..7。timing 为 none / forward / countdown,countdown 时用 minutes 给时长(分钟)。
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| icon | No | ||
| color | No | ||
| title | Yes | ||
| timing | No | ||
| minutes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden: it does state that the tool returns the new todo's id (valuable since there is no output schema) and that icon defaults to 'scroll'. It says nothing about what the optional 'id' parameter means, whether the caller may set it, what happens if the same title already exists, or any permission/side-effect context for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and return value are front-loaded, then parameter semantics follow in a compact block. The long icon key list is long but earns its place because the schema provides no enum for it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter mutation tool with no annotations and no output schema, the description covers the interesting value constraints and the return value, which is above average. It falls short on the unexplained 'id' parameter and on any statement of side effects or persistence behavior that would be needed for fully confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description has to compensate, and it largely does: it enumerates the accepted CartoonIcons keys, gives the 0..7 range for color, and lists the three timing values with the minutes dependency. The gaps are the 'id' parameter, which is never mentioned, and 'title', which only relies on being obvious from the tool name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource (create a todo) plus the return value (its id), so the agent knows exactly what the call does. It doesn't distinguish itself from siblings like add_countdown or update_todo, even though the 'timing=countdown' field makes overlap with add_countdown plausible.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance and no reference to the alternative tools for countdowns or habit creation. The only conditional guidance is field-level ('when countdown, use minutes for the duration'), which tells the agent how to fill a parameter but not when to pick this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_habitB
打卡一次:默认 +1(已达标时 −1,与手机上点一下的行为一致),delta 可显式指定增减。
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| delta | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden, and it does disclose the single most surprising trait: the default is not always +1, because at an already-met goal it decrements by 1 (a toggle). That is valuable and non-obvious. It says nothing about whether the counter can go below zero, what permissions or rate limits apply, or what the call returns, so it only partially covers the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence front-loads the action, then the default behavior, then the override. The nested parenthetical about mobile tap behavior is dense but earns its place by justifying the toggle rule. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter counter tool with no annotations and no output schema, the description covers the core semantics but leaves gaps an agent would want: what id is, whether values can go negative, and what the response looks like. Adequate for the tool's simplicity, but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema only supplies types and a null default. The description compensates for delta by saying it can explicitly specify an increase or decrease, which explains the null-vs-explicit distinction the schema cannot. It never says what id refers to (presumably the habit id) and gives no sign convention or range for delta, so the compensation is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb and resource: '打卡一次' (check in once) on a habit, which clearly separates it from add_habit, update_habit and delete_habit in the sibling list. It does not name those siblings explicitly, so the differentiation is inferable 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the note that the default matches 'tapping once on the phone' tells the agent this is the progress-recording action rather than a habit-definition edit. There is no explicit when-to-use or when-not guidance, and no routing to update_habit or list_habits when a different outcome is wanted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_countdownA
删除一个倒计时。必须传 confirm=true —— 不可恢复,删除前先和用户确认。
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| confirm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral disclosure. It clearly states that the action is irreversible and that confirm=true is mandatory, which are the two behavioral traits that matter most for a destructive tool; however, it does not describe permissions, the return value, or what happens 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the action and followed by the safety constraint. No filler or redundant restatement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, two-parameter destructive tool with no output schema, the description covers the essentials: what is deleted, the irreversibility, and the confirmation requirement. The only real gap is that it lacks any mention of what a successful deletion returns, which is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must supply the missing parameter meaning. It fully explains the non-obvious confirm parameter (must be true) but does not add details about id; that omission is minor because id is self-evident.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource (删除一个倒计时), which lets an agent distinguish this tool from delete_todo and delete_habit. It is not a tautology, although it does not explicitly name those sibling alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear preconditions for use: it says to confirm with the user before deleting and requires confirm=true. It does not name any scenario in which the tool should not be used or point to an alternative tool, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_habitA
删除一个习惯。必须传 confirm=true —— 不可恢复,删除前先和用户确认。
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| confirm | No |
TDQS
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 well: it discloses that the operation is irreversible (不可恢复), that a confirm flag is mandatory, and that user confirmation is required beforehand — the key destructive-action facts. It omits side effects such as whether check-in history is cascade-deleted, which would matter for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the destructive nature and the confirmation requirement front-loaded; every clause (must pass confirm, irreversible, confirm with user) earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter destructive tool with no output schema, the description covers the essential safety semantics an agent needs before calling. The remaining gap is the undocumented id parameter and unspecified cascade behavior on related check-in data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It gives real meaning for confirm (must be true, action is irreversible), going beyond the schema's bare default=false, but leaves id entirely unexplained — no guidance on where the habit id comes from or its format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource pair (删除一个习惯 / delete a habit), which cleanly separates it from delete_todo and delete_countdown in the sibling list. It stops short of an explicit differentiation statement, but the resource name carries the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a hard precondition (confirm=true must be passed) and a procedural guideline (confirm with the user first), which is clear context for when/how to call. It does not mention alternatives such as update_habit if the user only wants to stop tracking rather than erase, so no exclusions are supplied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_todoA
删除一条待办。必须传 confirm=true —— 不可恢复,删除前先和用户确认。
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| confirm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden — and it does disclose the key trait that the operation is irreversible (不可恢复) and gated behind a confirm flag plus user consent. It doesn't cover failure behavior (e.g., nonexistent id) or what a successful call returns, so it falls 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler; the destructive warning and the confirm requirement are front-loaded where an agent will read them first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter destructive tool with no annotations and no output schema, the description covers purpose, irreversibility, the confirm gate, and the human-confirmation prerequisite. Only error behavior and post-call state remain unstated, which is a minor gap at this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It correctly explains the non-obvious parameter — confirm must be true, not merely present, despite the schema defaulting it to false — but says nothing about id beyond what the property name implies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (删除一条待办), which cleanly separates it from the delete_habit and delete_countdown siblings. It doesn't explicitly say how it differs from set_todo_done or update_todo, but the destructive framing makes the intent unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a hard procedural precondition (must pass confirm=true, and consult the user first), which is real guidance. It does not say when to prefer this over alternatives such as set_todo_done for completing a task, so routing between siblings is left implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disconnectA
主动断开蓝牙连接(省手机电)。下次工具调用会自动重连。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers the single most important behavioral fact: the next tool call will automatically reconnect, so the disconnection is non-permanent and self-healing. It omits edge cases such as what happens if already disconnected or whether other apps' audio is affected, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler: the action first, then the state-restoration guarantee. Both sentences earn their place and the most decision-relevant fact is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema toggle the description covers what an agent needs: the effect, the battery rationale, and the automatic reconnect. Only failure/edge-case behavior is unstated, which is a small residual gap given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a no-param tool applies. Nothing in the description contradicts or misrepresents the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: '主动断开蓝牙连接' (actively disconnect the Bluetooth connection), plus the motivation '省手机电' (save phone battery). No sibling tool in the list touches connectivity, so an agent can immediately tell this apart from the water/todo/habit/countdown tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear condition for use (to save battery), which is concrete guidance. It does not spell out when NOT to use it or name an explicit alternative, but for a global connection toggle there is no sibling alternative to route to, 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.
focus_todayA
今天的专注统计(需要 app 3.8+):轮次、总分钟,以及按待办分组的分钟数。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 a non-obvious constraint (requires app 3.8+) and enumerates the returned metrics, which is genuine added context. It never states that the tool is read-only or what happens on older app versions, leaving the mutation/safety profile inferential.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with the version constraint in parentheses and the returned fields listed compactly. No filler, no redundancy, nothing that could be cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with no output schema, the description supplies the returned shape and a version caveat, which is close to sufficient. The only real gap is the absence of any read-only/safety statement given that no annotations exist to cover it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The enumeration of returned fields is a bonus rather than a substitute for missing parameter info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete resource (today's focus statistics) and enumerates exactly what it covers: session rounds, total minutes, and per-todo minute breakdowns. This is much more than a restatement of the name. It does not, however, distinguish itself from siblings like today_summary or water_today, so an agent must infer the boundary from the noun alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the word 'today' and the stats framing — an agent can reasonably infer this is for reading focus data for the current day. There is no explicit when-to-use condition, no mention of when to prefer today_summary instead, and no stated prerequisites beyond the app version.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_countdownsA
列出全部倒计时,按到期时间升序;target_at 是本地时间字符串。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 usefully discloses the result ordering (ascending by due time) and the timezone semantics of target_at (local time string), but says nothing about behavior when the list is empty, the full return shape, or pagination/limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact clause pair: purpose and ordering are front-loaded, then the target_at caveat. No wasted words. The target_at remark arrives without saying it describes a returned field, which is a small clarity cost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description is the only source of behavioral detail, and it covers ordering plus time format but not the item fields returned or empty-state behavior. Adequate to invoke, thin for interpreting results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema has nothing to explain and the baseline is 4. The description's mention of target_at adds meaning about a returned field rather than a parameter, which is helpful context but not framed as such.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource (列出全部倒计时 = list all countdowns), and its scope (all items) plus sort order makes it clearly distinct from the sibling mutation tools add_countdown/update_countdown/delete_countdown. It does not explicitly name an alternative, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: read the whole collection. There is no statement of when to prefer this over other siblings, no prerequisites, and no exclusion. For a zero-parameter list tool that is minimally adequate, but an agent gets no explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_habitsA
列出全部习惯,含当前计数 current_count / 目标 target_count 与今日是否达标。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description must carry the behavioral burden. '列出' (list) implies a read-only, non-mutating operation and the text usefully discloses the shape of the returned data (current count, target, whether today's goal is met), but it says nothing about ordering, completeness guarantees, or what happens with zero habits — modest but real disclosure for a zero-parameter read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the action front-loaded and the returned fields appended as a compact qualifier. Nothing is redundant and nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter list tool with no output schema, the description covers what it returns (current_count, target_count, today's completion), which is exactly the information an agent needs to decide whether this call answers its question. Only the lack of any routing hint toward sibling tools keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the schema has nothing to explain and there is no semantic gap for the description to fill. Baseline 4 applies; the description adds field names as a bonus rather than compensating for any missing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('列出全部习惯' - list all habits) and even names the key fields returned (current_count, target_count, today's completion). It is clear what the tool does, but it never distinguishes itself from sibling tools such as list_todos or list_countdowns, so an agent gets no help choosing among the list_* family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no alternative is named. The word '全部' (all) hints that no filtering is possible, but nothing tells an agent whether to call this versus today_summary or check_habit when it wants habit status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sleepA
最近的睡眠记录(需要 app 3.8+),按醒来时间倒序,默认 14 天窗口。
minutes 是单次时长;day 是这条被归到的日历日(醒来的那天),今天的总量看 today_minutes。
| Name | Required | Description | Default |
|---|---|---|---|
| days | No |
TDQS
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 a client version prerequisite ('需要 app 3.8+'), the sort order (descending by wake time), the default window (14 days), and the meaning of returned fields (minutes = per-session duration, day = attributed calendar day, today_minutes = today's aggregate). Gaps remain around pagination/limits and how records are truncated at the window boundary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short blocks: the scoping facts first (recency, version requirement, ordering, default window), then field semantics. Every sentence carries information, though the parenthetical version note is slightly interrupting and the field glossary could be tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, no annotations, and 0% parameter documentation, so the description is the only source of truth. It covers output field meaning and default behavior, but omits read-only framing, result limits, and explicit parameter semantics for 'days' — leaving real gaps for an agent deciding how many days to request.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single 'days' parameter is undocumented in the schema, so the description must compensate. It does partially by stating a default 14-day window, which implicitly defines what the parameter controls, but it never names the parameter, its units, its maximum, or what happens at boundary values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and verb equivalent ('最近的睡眠记录' / recent sleep records) and adds ordering ('按醒来时间倒序') plus a default window ('默认 14 天窗口'), so an agent can distinguish it from the write-side sibling log_sleep without opening the schema. It stops short of explicitly naming siblings or stating what it is not (e.g. vs today_summary), which keeps it off a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'recent records' with a 14-day default signals when the tool is appropriate, and '今天的总量看 today_minutes' redirects for today's total. However there is no explicit when-to-use / when-not-to-use framing and no pointer to a named alternative tool such as log_sleep or today_summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_todosA
列出待办,顺序与手机待办页一致:未完成在前、新的在上。
only: all(默认,含全部完成历史)/ open(只看未完成)/ today(未完成 + 今天完成的, 就是手机待办页上肉眼可见的那些)。历史会一直长,只想找活的时候用 open。
| Name | Required | Description | Default |
|---|---|---|---|
| only | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses real behavior: result ordering, that 'all' includes full completion history, and that history grows without bound. It does not state whether results are paginated or what fields are returned, which keeps it from a top score for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The ordering behavior is front-loaded in the first clause, followed by the parameter modes, with no filler sentences. The whitespace and line break inside the quoted description are slightly awkward but do not impair comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter list tool with no output schema, the description covers what matters: ordering, scope per mode, and the fact that history is unbounded. Return shape is left implicit, which is acceptable for a simple listing endpoint but is the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% – the single parameter is an untyped anyOf string/null with no enum – so the description must compensate entirely, and it does: it names the default (all) and defines all three modes, including the non-obvious semantics of 'today' (unfinished plus items completed today). The schema would otherwise leave the valid value set unknowable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('列出待办') and goes further by specifying the ordering: incomplete items first, newest on top. It doesn't explicitly distinguish itself from sibling list tools such as list_habits or list_countdowns, but those cover clearly different resources, so an agent can identify the tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete guidance for selecting the 'only' mode – notably 'use open when you just want to find work to do' and explaining that 'today' matches what is visible on the phone page. It lacks any when-not guidance or tool-level alternative routing, but there is no sibling that lists todos, so that gap is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_sleepB
补一条睡眠记录(需要 app 3.8+):两个端点都是本地时间、无时区, 形如 2026-11-04T23:00。wake_at 必须晚于 sleep_at 且不能是未来。
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| wake_at | Yes | ||
| sleep_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full disclosure burden. It does well by disclosing the temporal model ('local time, no timezone'), the required format, the version gate, and validation rules; but it says nothing about what the optional id does (upsert/overwrite semantics), what happens on a duplicate date, or what a successful call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with the core action first, followed by format and validation constraints. No filler, though the parenthetical version requirement interrupts the flow slightly and could be placed at the end.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with zero annotations, no output schema, and three parameters at 0% schema coverage, the description covers the temporal semantics well but leaves the 'id' parameter and the result/duplicate behavior undefined. An agent can call it correctly for the common case but may misjudge idempotency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must supply parameter meaning. It gives strong detail for sleep_at and wake_at (local time, no timezone, ISO-like example, ordering and future constraints) but the third parameter 'id' is never mentioned, leaving its purpose and interaction with existing records entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('补一条睡眠记录' — add a sleep record), which is unambiguous against siblings like list_sleep or today_summary. It does not explicitly name the sibling to avoid, so it stops just 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Preconditions are stated: the app must be version 3.8+, wake_at must be after sleep_at, and neither endpoint may be in the future. However, the description gives no explicit guidance on when to use this instead of list_sleep, or what to do when a record already exists for that date.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_waterA
记一杯水(需要 app 3.8+)。ml 省略时用手机上第一个快捷杯量(默认 150)。 返回今日累计 today_ml 与目标 goal_ml。
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| ml | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description still carries useful behavior: it discloses a compatibility constraint (requires app 3.8+), the fallback chain when ml is omitted (first quick-cup amount, else 150), and the shape of the response (today_ml, goal_ml). It does not state permissions or whether prior logs can be undone, but for a simple append-style logger this is solid coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact clauses, front-loaded with the action, then the version gate, then the defaulting rule, then the return values. No filler; the only mild weakness is that return-value info is folded into the same run-on block rather than separated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so describing today_ml and goal_ml is genuinely necessary and done. However, the unexplained id parameter leaves a real hole in a two-parameter tool, and the absence of any annotation means behavioral disclosure rests entirely on this short text.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It fully explains ml's defaulting behavior, but the id parameter is never mentioned — an agent cannot tell whether it is a cup id, a user id, or a shortcut reference. Half the parameters are explained, so this is partial rather than complete compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"记一杯水" states a specific verb (log) and resource (a cup of water), which is unambiguous on its own and clearly distinct from the read-only sibling water_today. It stops short of naming that sibling or any explicit boundary, so it is clear but not differentiated by the text itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent infers this is the write counterpart to water_today used when the user drinks water. There is no explicit when-to-use/when-not statement or reference to water_today for read-only queries, though the default-fallback rule for omitted ml does give some practical calling guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pingA
检查链路是否活着,并返回各表条数与手机端协议版本。第一次调用会扫蓝牙(约 3 秒)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 disclose the single most important behavioral trait: the first call scans Bluetooth and takes roughly 3 seconds, which explains apparent latency and discourages redundant calls. It also describes the return payload, though it omits failure semantics (what happens when the link is dead) and does not state that the operation is read-only/non-mutating.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler: purpose and return value first, then the latency caveat. The most decision-relevant fact for an agent (the 3-second Bluetooth scan) is placed where it will be read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter probe with no output schema and no annotations, the description covers purpose, return contents, and the notable first-call cost, which is most of what an agent needs. What is missing is error behavior on a failed link check and any indication of whether the call has side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. The description correctly implies the tool is argument-free by describing it as a pure probe.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and object ('检查链路是否活着') and names the exact payload returned (per-table row counts and phone-side protocol version). None of the siblings (water_today, list_todos, disconnect, etc.) is a health-check, so an agent can distinguish this tool from the list 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the liveness-check framing, but the description never states when an agent should call ping versus simply calling a data tool, nor any preconditions. There is no explicit when-to-use or when-not-to-use guidance, only an implicit 'call this to verify the link'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_todo_doneA
把待办标记完成(done=true)或改回未完成(done=false)。完成日按手机当前日历日记。
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| done | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full behavioral burden. It does disclose one meaningful side effect — the completion date is taken from the phone's current calendar date — but says nothing about what happens when the todo is already in the requested state, whether the call is idempotent, or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the primary operation is stated first with the reverse operation immediately after. The second sentence about the completion date is terse to the point of being slightly cryptic, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter state-toggle with no output schema and no annotations, the description covers the core semantics and one notable side effect. Missing are only edge-case behavior and the identifier source, which are modest gaps for a tool this simple.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for two undocumented parameters. It fully explains the done flag including both branch semantics, but leaves the required id parameter's format (a todo identifier, presumably from list_todos) entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('把待办标记完成' — mark a todo done) and enumerates both directions of the toggle via done=true/false. It does not explicitly distinguish this dedicated toggle from the sibling update_todo, which likely can also set the done field, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two boolean branches imply when to call it (marking complete vs. reverting to incomplete), which is useful implied usage guidance. However, there is no explicit statement about when to prefer this over update_todo, nor any prerequisite or idempotency note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
today_summaryA
今天的一帧全景(需要 app 3.8+):待办未完成/今日完成、习惯达标数、喝水 ml/目标、 昨夜睡眠分钟 + 连续达标天数 + 最近一次记录、今日专注轮次/分钟、最近的倒计时。
回答「今天怎么样」只需这一次调用,不要拿四张表拼。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the load and does well: it discloses a version prerequisite (app 3.8+), implies a pure read aggregation, and summarizes the returned sections in place of an output schema. It stops short of stating data-availability edge cases (e.g. what happens when there is no sleep or focus record yet), which is the one remaining behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the scope enumeration and closing with the decisive routing instruction. The long middle list is dense information rather than padding, since it replaces a missing output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema aggregator, the description supplies everything needed: what is aggregated, the version requirement, and the routing rule against composing sibling calls. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing to disambiguate and the baseline applies. The description correctly does not waste words on inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete noun phrase ('今天的一帧全景') and then enumerates exactly which aggregates it returns: todos, habit completion, water ml/goal, sleep minutes + streak, focus rounds/minutes, and latest countdown. This is clearly distinguishable from the single-domain siblings such as water_today, focus_today, and list_sleep.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the trigger condition explicitly ('回答「今天怎么样」只需这一次调用') and the anti-pattern ('不要拿四张表拼'), which steers the agent away from fanning out to the sibling list tools. An agent knows both when to call it and when not to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_countdownA
改一个倒计时的标题/到期时间/颜色;没传的字段保持原样。
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| when | No | ||
| color | No | ||
| title | No |
TDQS
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 resolves a real ambiguity created by the schema — all optional fields default to null, and the sentence clarifies that omitted fields are left untouched rather than cleared. It says nothing about permissions, failure behavior for an unknown id, or reversibility of the change.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact clause with the action and the field list front-loaded and the partial-update rule appended. Nothing is wasted and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter mutation tool with no annotations and no output schema, the description covers the core update semantics but leaves out value formats for 'when' and 'color', the required id's meaning, and any notion of what the call returns. It is adequate to attempt the call but incomplete for confident use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does map the key fields: 标题→title, 到期时间→when, 颜色→color, plus the omission semantics for every optional parameter. It does not specify the expected format of 'when' (string, presumably a date) or what the integer color encodes, so the compensation is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (改/modify) plus the resource (倒计时/countdown) and enumerates the mutable fields (标题/到期时间/颜色). The verb alone separates it from the sibling create/delete/list countdown tools, though none are named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The verb plus field list implies this is the tool for changing an existing countdown rather than creating one, and '没传的字段保持原样' signals a partial-update pattern. There is no explicit when-to-use advice, no preconditions such as the id needing to exist, and no mention of alternatives like delete_countdown plus add_countdown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_habitB
改一个习惯的标题/目标次数/单位/图标/颜色;没传的字段保持原样,今日计数不受影响。
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| icon | No | ||
| unit | No | ||
| color | No | ||
| title | No | ||
| target_count | No |
TDQS
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 disclose partial-update semantics ('没传的字段保持原样') and that today's count is untouched — genuinely useful behavior. It says nothing about what happens when a nullable field is explicitly set to null (clear vs. ignore), whether the change is irreversible, or what is returned, which are real gaps 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence enumerating fields followed by the two most important behavioral caveats; nothing is padded. It could be tightened only slightly, and it is not missing structure so much as missing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter mutation tool with no annotations and no output schema, the description covers the happy path but omits null semantics, the required id, and any statement of the return value or error cases. It is adequate to attempt a call but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must supply meaning, and it only restates the five field names in Chinese without explaining formats, value ranges for color, or the null-clearing semantics that the anyOf[string|null] schema leaves open. The required id parameter is never mentioned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (改) plus the resource (习惯) and enumerates the editable fields (标题/目标次数/单位/图标/颜色), so the agent can tell it apart from sibling mutators like update_todo and update_countdown. It stops short of an explicit role split against check_habit, but the operation type is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause '今日计数不受影响' implicitly steers count-related work away from this tool and toward check_habit, which is useful routing. However, there is no explicit when-to-use/when-not statement, no mention of prerequisites such as the habit existing, and no naming of the alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_todoA
改一条待办的标题/图标/颜色/计时模式;没传的字段保持原样,完成状态不受影响。
只想改标题就别用 add_todo —— 那会带上一个新 id 造出第二条。
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| icon | No | ||
| color | No | ||
| title | No | ||
| timing | No | ||
| minutes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It does valuable work by disclosing partial-update semantics ('没传的字段保持原样') and side-effect scope ('完成状态不受影响'), but says nothing about what happens when the id does not exist, whether fields can be cleared, or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, both load-bearing: the first defines the operation and its partial-update guarantee up front, the second prevents a concrete misuse. There is no filler or restated naming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple six-parameter mutation tool with no annotations and no output schema, the description covers purpose, partial-update behavior, and the duplicate-creation hazard, which is substantial. It is still incomplete on two parameters (id, minutes) and on failure behavior, gaps an agent will notice at call time.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across six parameters, so the description must compensate. It names four of them (title, icon, color, timing) but supplies no value semantics for any of them, and it omits id and minutes entirely, including the relationship between the timing mode and minutes, which the agent is left to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb plus resource ('改一条待办') and enumerates the mutable fields (标题/图标/颜色/计时模式), so an agent knows exactly what this does without opening the schema. It also distinguishes itself from the closest confusion risk, add_todo, in the same breath.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names an explicit alternative to avoid (add_todo) and gives the reason (a new id creates a second todo), which is real routing guidance. It also implicitly routes completion changes elsewhere by declaring 完成状态不受影响, though set_todo_done and delete_todo are never named and the wording leaves the reader to join the dots.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
water_todayA
今天的喝水明细(需要 app 3.8+):总量、目标、快捷杯量、每一条记录。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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: this is a detail/read listing (明细), it returns four specific data groups, and it requires app version 3.8+, which is a real compatibility constraint. It stops short of stating side-effect freedom, auth needs, or empty-state behavior, which leaves gaps for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the resource and scope front-loaded, then the returned fields. The parenthetical version requirement is placed where it is immediately visible. Nothing is padded, though the colon-separated field list reads slightly dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description's enumeration of return contents (total, goal, quick cup sizes, per-record entries) does the job the missing output schema would otherwise do. The version prerequisite covers the main environmental risk. Only the relationship to today_summary remains unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter meaning to add; the baseline for a parameterless tool applies. The schema and description are consistent in presenting a no-argument call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and time scope ('今天的喝水明细' – today's water log details) and enumerates what is returned: total, goal, quick cup sizes, and individual records. It is clearly a read of today's water data, distinguishable from the write sibling log_water. It does not, however, explicitly contrast itself with today_summary, which likely also surfaces water totals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'today' signals the temporal scope, and the mention of app 3.8+ hints at an environment prerequisite. There is no statement of when to prefer this over today_summary or how it complements log_water. An agent can infer it is the per-record read path, but nothing is spelled out.
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.
22 tool updates
v0.2.0- First observed
add_countdown - First observed
add_habit - First observed
add_todo - First observed
check_habit - First observed
delete_countdown - First observed
delete_habit - First observed
delete_todo - First observed
disconnect - First observed
focus_today - First observed
list_countdowns - First observed
list_habits - First observed
list_sleep - First observed
list_todos - First observed
log_sleep - First observed
log_water - First observed
ping - First observed
set_todo_done - First observed
today_summary - First observed
update_countdown - First observed
update_habit - First observed
update_todo - First observed
water_today
TDQS
Scored across 22 tools
Tools are cleanly separated by resource (todo/habit/countdown/water/sleep/focus) and action, and the read-vs-write pairs (water_today vs log_water, list_sleep vs log_sleep) are clearly distinguishable. The only real overlap is today_summary versus the per-domain readers, but its description explicitly tells the agent to use it alone instead of stitching four tables together.
All names are lowercase snake_case with a predictable verb_noun shape for the CRUD set (list/add/update/delete_todo, set_todo_done, check_habit, log_water), plus a repeated *_today read pattern. Minor deviations (ping, disconnect, and the word-order split between water_today/focus_today and today_summary) keep it from a perfect score.
22 tools is on the heavy side, but the surface spans six distinct domains (todos, habits, countdowns, water, sleep, focus) plus connection handling, so most tools pull their weight. Still, several domains carry full four-tool CRUD blocks where a leaner aggregate could have reduced the set.
Todos, habits and countdowns have full create/update/delete lifecycles, but the logging domains are one-way: water and sleep can be logged and read but never corrected or deleted, and focus is read-only with no per-item get for any resource. An agent that mis-logs a water cup or sleep entry has no recovery path.
Maintenance
Related MCP Connectors
Read pet activity and weight history, and log events with your permission.
Reach your own phone from an AI agent: notifications, approval questions, reminders, ring, files.
Read, start and move the routines on your iPhone; suggest changes you approve on the phone.
Access COROS activity, training and health data, and manage training plans and workouts.
Related MCP Servers
- AlicenseAqualityCmaintenanceA stateful Bluetooth Low Energy (BLE) MCP server that enables AI agents to scan, connect, read/write characteristics, and subscribe to notifications on BLE devices.3577 PyPI19MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to control iOS BLE devices through a WebSocket bridge and Safari extension, allowing scanning, connecting, reading, and writing BLE characteristics from an iPhone.-
- AlicenseNot gradedqualityCmaintenanceProvides MCP tools to read and update a local-first personal OS for goals, tasks, habits, food, workouts, and check-ins. Enables assistants to manage daily life data and interact with an evidence-grounded AI coach.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI frontends to read Xiaomi Smart Band 10 Pro health data (heart rate, sleep, steps, battery) and send haptic notifications to the wrist via the knock tool.1AGPL 3.0