b52tot/workbuddy-board
WorkBuddy Board
WorkBuddy 写的 WorkBuddy 看板 —— 让英雄查英雄。不耽误打游戏了。
给 MCP Agent 用的桌面任务看板。四列任务常驻桌面,agent 干到哪一步、有没有卡住, 抬眼就能看到 —— 不用切窗口,也不用点开浏览器。
零第三方依赖(只用 Python 标准库),单文件 exe,双击即用。
快速开始
打开 exe —— 下载
BoardWidget.exe,双击运行。注册 MCP —— 挂件右下角点 ⚙,在 MCP 那一行点「注册」。
重启 WorkBuddy —— MCP 配置只在客户端启动时读一次;重启后到连接器管理页点「信任」。
开始用 —— agent 干到哪一步、有没有卡住,实时出现在桌面上。
不用装 Python、不用部署服务 —— 看板后端和 MCP 端点都打包在这一个 exe 里。
Related MCP server: TaskCenter
特性
能力 | 说明 |
桌面挂件 | 无边框常驻 + 置顶,可拖动 / 缩放 / 调透明度,收起后变 62px 条形 |
任务卡片 | 标题、说明、标签、优先级、自定义字段 |
进度条 | 声明 |
停滞检测 | 非终态列 + 超过阈值无任何上报 ⇒ 卡片标黄,顶部给计数 |
列分组 | 栏目顺序 / 标题 / 颜色 / WIP 上限全部可配 |
状态流转 | 白名单约束,非法流转会报错并提示合法目标 |
变更流水 | 每次改动自动记事件,随时可查「谁在何时把什么从哪移到哪」 |
存储 | SQLite 单文件,WAL 模式 |
MCP 工具 | 15 个,agent 可直接读写看板 |
网页看板 | 单端口 HTTP,1 秒轮询,深浅色主题 |
接入 WorkBuddy
挂件自带「注册 MCP」按钮(上面的第 2 步)。手工接入的话:
第一步 准备配置:
cp config.example.json config.json第二步 编辑 ~/.workbuddy/mcp.json,在 mcpServers 里加一项:
{
"mcpServers": {
"board": {
"type": "stdio",
"command": "C:\\绝对路径\\python.exe",
"args": ["C:\\绝对路径\\workbuddy-board\\server\\mcp_server.py"],
"timeout": 120000
}
}
}command / args 都用绝对路径,不需要 cwd —— 配置文件与 db_path 都按
代码位置定位,不由进程 CWD 决定,所以宿主从哪个目录拉起都一样。
不要往
env里塞项目配置。 WorkBuddy 的 MCP 连接指纹把env的 key 集合算在内, 加 key 会让已授信的 server 退回待授信、下次启动重新弹授权。
第三步 重启客户端 → 到连接器管理页右上角的「自定义」入口点「信任」。
工具(15 个)
宿主会自动加 mcp__board__ 前缀。
工具 | 用途 |
| 读看板完整快照(列、任务、统计、进度、停滞) |
| 读当前生效的配置 |
| 任务增删改查 |
| 按列或标签筛选 / 列出栏目 |
| 状态流转 |
| 推进进度(只增不减、传绝对值所以幂等) |
| 疑似停滞的任务(非终态列 + 超阈值无上报) |
| 变更流水(支持 |
| 归档出主视图 / 还原回看板 |
| 清空看板(需显式 |
配置
复制 config.example.json 为 config.json 后修改。所有键都可省略,省略即用默认值
(一个配置文件都没有也能跑)。
查找顺序:--config 参数 → 环境变量 WBB_CONFIG → ./config.json。
board
键 | 类型 | 默认 | 说明 |
| string |
| 看板标题 |
| string |
| SQLite 路径,自动建目录 |
| array | 待办/进行中/阻塞/已完成 | 栏目定义,见下 |
| object | 见示例 | 状态流转白名单 |
| array |
| 自定义字段 schema |
| bool |
| 是否强制 WIP 上限 |
| int |
| 前端轮询间隔 |
| bool |
| 隐藏空列 |
columns 每一项:
{ "id": "doing", "title": "进行中", "color": "blue", "wip_limit": 5, "is_terminal": false }id—— 稳定标识。改了等于换了一列,旧任务会找不到列,定好别动color——gray/blue/amber/green/red/purple/teal/pink/coralwip_limit—— 在制品上限,null表示不限;超限时迁入会被拒绝is_terminal—— 终态列,用于统计完成率。至少要有一个
transitions —— 未列出的流转会被拒绝,报错里会列出该列允许的目标:
{ "todo": ["doing", "blocked", "done"], "doing": ["todo", "blocked", "done"] }fields —— 未在此定义的键不允许写入:
[
{ "key": "version", "type": "text", "label": "版本号" },
{ "key": "risk", "type": "enum", "label": "风险等级", "values": ["低", "中", "高"] },
{ "key": "progress", "type": "progress", "label": "进度" }
]type 取 text / number / enum / bool / progress;
enum 必须给 values,progress 必须给 label。
web
键 | 类型 | 默认 | 说明 |
| string |
| 监听地址(默认仅本机) |
| int |
| 端口 |
| bool |
| 启动时自动开浏览器 |
| bool |
| 网页端是否允许写操作 |
以
_开头的键视为注释、会被忽略;其余未知键会报错 —— 避免「改了配置却没生效」这种最难排查的问题。
看板本身不含业务词汇。examples/config.custom-columns.json 演示了把它改成
发布流程看板(六个列 + 专属流转 + 五个字段),不用改一行代码。
从源码跑
需要 Python ≥ 3.10,无需安装依赖。
git clone https://github.com/b52tot/workbuddy-board.git
cd workbuddy-board
cp config.example.json config.json
python examples/demo_seed.py # 可选:灌一份示例数据
python -m server.web_server # 网页看板 → http://127.0.0.1:8791让它常驻(前台进程关终端就停):
python svc.py start | status | restart | stopstatus 除了探活,还会核对「运行中的库」与「配置期望的库」是否一致 ——
health 200 只证明有东西在监听,不证明用的是你要的那个库。
挂件本身(需要 pip install pywebview):
python widget/host.py跑测试:
python -m pytest tests -q # 数据层
python -m server.mcp_server --selftest # MCP 协议自检(不碰数据库)
python widget/fulltest.py # 界面全功能测试(先跑 widget/make_inline.py)用 Docker 跑 MCP server
零依赖,所以镜像里没有 pip install 这一步。主要给两类场景:跑在隔离环境里,
以及让 Glama 这类目录站自动做一次「能起来、能应答」的检查。
docker build -t workbuddy-board .
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"smoke","version":"1"}}}' \
| docker run -i --rm workbuddy-board容器里的 config.json 直接来自 config.example.json(不另写一份,避免两处漂移),
库落在 /app/data/board.db。要持久化就 -v wbb-data:/app/data。
网页界面不包含在这个镜像里 —— MCP server 用不到它。
项目结构
workbuddy-board/
├── board/ 数据层(唯一写入方,纯标准库)
│ ├── config.py 配置加载 + 校验
│ ├── models.py 数据模型与状态机校验
│ ├── store.py ★ 所有写操作的唯一入口,自动登记事件
│ └── schema.sql 建表语句
├── server/
│ ├── mcp_server.py MCP stdio 工具(手写 JSON-RPC,不依赖 mcp SDK)
│ └── web_server.py HTTP 看板
├── web/ 展示层(无构建步骤)
├── widget/ 桌面挂件(pywebview)
│ ├── host.py 宿主进程:窗口 / 托盘 / 日志
│ ├── widget.js widget.css
│ └── boardwidget.spec PyInstaller 打包配置
├── examples/ 最小配置 / 换业务示例 / 示例数据
├── tests/ 数据层 + HTTP 契约 + MCP 协议 + 挂件状态
└── svc.py 服务管理:脱离会话启动 / 停止 / 探活所有写操作都收敛到 board/store.py,且每次写都登记一条事件 ——
于是任何时刻都能回答「这个任务是怎么走到现在这一步的」。
常见问题
能看到页面但一直是空的?
确认 db_path 指向的库和灌数据的库是同一个。
移动任务报「不允许从 X 流转到 Y」?
流转规则在 board.transitions,报错信息会列出该列允许的目标。
报「不是合法的配置项」?
拼写错误。看报错里的可用键列表;注释请用 _ 开头。
想看某个任务是怎么一步步走到现在的?
GET /api/events?task_id=<id>,或在网页上点开卡片看「变更流水」。
更新日志
见 CHANGELOG.md。
许可
MIT,见 LICENSE。
Available Tools
15 toolsarchive_doneA
把「完成已久」的已完成任务归档出主视图。归档 = 打标记,一条都不删,随时可用 restore_archived 拿回来。平时无需手动调:看板快照会自动巡检,按配置 board.archive_done_after_days(默认 3 天)归档。这里传 older_than_days 可以临时改用另一个保留期。
| Name | Required | Description | Default |
|---|---|---|---|
| older_than_days | 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 and does well: it discloses that archiving is a non-destructive mark, nothing is deleted, it is reversible via restore_archived, and that a background sweep normally handles it. It does not state permission requirements or how archived items surface elsewhere, so it is not fully exhaustive.
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?
Four compact clauses, front-loaded with what archiving does and its non-destructive guarantee, then the auto-behavior, then the parameter override. 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 one-optional-parameter tool with no output schema and no annotations, the description covers what it does, its safety profile, its normal automatic trigger, the override, and the recovery path — everything an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds value beyond the schema by naming the config key board.archive_done_after_days, its default of 3 days, and framing the parameter as a temporary per-call override rather than the normal path.
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 (归档/archive) on a specific resource (「完成已久」的已完成任务) and immediately disambiguates it from deletion ('打标记,一条都不删'), naming the counterpart tool restore_archived. An agent can distinguish this from delete_task or list_tasks without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says manual invocation is usually unnecessary because board_snapshot auto-archives per config, and then states the one condition under which to call it: to temporarily override the retention period via older_than_days. It also routes recovery to restore_archived.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
board_configA
读取当前生效的看板配置:栏目、合法流转、自定义字段、数据库路径、Web 端口。在决定「能移到哪一列」「有哪些自定义字段」之前先看它。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states '读取' (read) and lists the configuration contents, which implies a safe read with no mutation, but it does not explicitly confirm side-effect-free behavior, permissions, or freshness guarantees. Basic behavior is inferable but not fully disclosed.
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 purpose and followed by a precise usage cue. Every clause earns its place; no redundancy or 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?
There is no output schema, so the description should indicate what is returned; it does so by listing columns, legal transitions, custom fields, database path, and web port. This is largely sufficient for a zero-parameter read tool, though it could note the response format or whether config is live.
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, and the input schema is an empty object with 100% description coverage. With no parameters to explain, the baseline of 4 applies; the description appropriately focuses on return contents instead.
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: '读取当前生效的看板配置' (read the currently effective board configuration), and enumerates the contents (columns, legal transitions, custom fields, DB path, web port). It does not explicitly differentiate from siblings like board_snapshot or list_columns, so a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use: '在决定「能移到哪一列」「有哪些自定义字段」之前先看它' (look at it before deciding which column to move to or what custom fields exist). This tells the agent when to invoke it, but no alternatives are named and no exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
board_resetA
清空看板上的全部任务。破坏性操作,必须显式传 confirm=true 才会执行。
| Name | Required | Description | Default |
|---|---|---|---|
| actor | No | ||
| confirm | No | 必须为 true,否则拒绝执行 |
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 does disclose the single most important trait — that this is destructive and gated behind confirm=true — but says nothing about irreversibility, whether columns/archived items survive, permission requirements, or recovery. That is a meaningful but partial disclosure.
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, zero filler, with the destructive warning and the confirm precondition front-loaded. Nothing needs trimming and nothing is buried.
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 destructive, zero-required-param tool with no annotations and no output schema, the definition covers the safety gate but omits the blast radius (are columns, archived tasks, or events affected?), reversibility, and the actor parameter. Adequate for a cautious caller, incomplete for a confident one.
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 only 50%, so the description must compensate. It instead restates the confirm semantics already documented in the schema and says nothing at all about the undocumented 'actor' parameter, leaving half the inputs 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?
States a specific verb and resource ('清空看板上的全部任务') with an explicit scope qualifier ('全部'), which cleanly separates it from single-item siblings like delete_task and from archive_done. An agent can identify this as a board-wide bulk reset 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?
The destructive framing implies caution, and the confirm=true gate implies a deliberate two-step invocation, but no alternative is ever named (e.g. use delete_task for one task, archive_done to preserve history). Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
board_snapshotA
读取看板完整快照:栏目定义、每列下的任务、统计(总数/已完成/百分比)。想看当前进展、或要渲染看板时用它。compact=true 时只返回任务 id 与标题,任务很多时可显著减小返回体积。
| Name | Required | Description | Default |
|---|---|---|---|
| compact | No | 只返回 id/title/column_id,默认 false |
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 does disclose the return payload composition plus the key volume trade-off (compact=true returns only id/title to shrink responses when there are many tasks). It does not mention permissions or pagination, but for a read-only snapshot tool the behavioral disclosure is solid.
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 what the tool returns, then when to use it, then the compact caveat. No filler; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey the return shape, and it does: column definitions, tasks per column, and aggregate statistics. Combined with the compact behavior note, an agent has everything needed to call and interpret 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?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine value beyond the schema by explaining the rationale for compact (significantly smaller payload when tasks are numerous). Minor mismatch: the description says compact returns '任务 id 与标题' while the schema also mentions column_id.
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+resource (读取看板完整快照) and enumerates exactly what the snapshot contains: 栏目定义、每列下的任务、统计。This aggregate scope distinguishes it from the granular siblings list_tasks, list_columns and get_task, which return narrower slices.
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 explicit trigger conditions ('想看当前进展、或要渲染看板时用它'), which is clear context for selection. It does not, however, name an alternative (e.g. list_tasks) for the case where a full snapshot is unnecessary, so the routing is one-sided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskB
在看板上新建一个任务。column_id 省略时放到第一列;fields 只接受在配置 board.fields 中定义过的键,传未定义的键会报错。
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | 标签 | |
| actor | No | 操作者标识,默认 agent | |
| title | Yes | 任务标题(必填,≤500 字) | |
| fields | No | 自定义字段(须在配置中已定义) | |
| task_id | No | 自定义 id;省略则自动生成 | |
| priority | No | 优先级,越大越优先 | |
| column_id | No | 目标列 id,省略则用第一列 | |
| description | 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. It usefully discloses two behaviors beyond the schema: column_id defaults to the first column, and unknown keys in fields raise an error. It omits anything about required permissions, what an error response looks like, or whether task_id collisions are rejected.
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 tight sentences with the purpose front-loaded followed by the two conditional behaviors. Nothing is padded and every clause carries information an agent needs.
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 an eight-parameter mutation tool with no annotations and no output schema, the description should say what is returned (e.g., the generated task id) so an agent can chain calls. It covers defaults and validation well but leaves the return value and permission requirements unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, setting the baseline at 3. The description goes beyond the schema by documenting the omitted-column_id default and the board.fields key constraint on the fields object, adding real semantics for two of the eight parameters.
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: creating a new task on a board. It is inherently distinguishable from update_task/delete_task/move_task by the creation action, though it never names a sibling to sharpen the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains defaults and validation but gives no explicit guidance on when to reach for create_task versus list_tasks, update_task, or board_config. There is no when-to-use/when-not framing and no prerequisites or permissions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_taskB
删除一个任务。会同时登记一条 delete 事件(任务数据不可恢复)。
| Name | Required | Description | Default |
|---|---|---|---|
| actor | No | ||
| task_id | Yes | 任务 id(必填) |
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 disclose the two most important behaviors: the data is unrecoverable and a delete event is logged as a side effect. It omits permission requirements and whether related records are affected, so it is strong but not complete.
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 the action front-loaded and the destructive consequence immediately following. 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 destructive, non-annotated tool with no output schema, the description covers the critical risk (irreversibility) and the audit side effect. It leaves the 'actor' parameter and any authorization/related-data behavior unexplained, so it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: task_id is documented in the schema but 'actor' has no description anywhere. The description adds no meaning to either parameter, so it fails to compensate for the coverage gap.
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+resource combination ('删除一个任务') that is unambiguous. It does not explicitly name or contrast with the highly relevant sibling archive_done, though the irreversibility note implicitly distinguishes it from archiving.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. Given siblings like archive_done and restore_archived, the description should say to prefer archiving when reversibility is desired, but it leaves that inference entirely to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_taskC
读取单个任务的完整字段。
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | 任务 id(必填) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read via 读取, but says nothing about behavior when task_id does not exist, permissions, or whether the read has any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no waste and the key scope (single task, complete fields) front-loaded. It is terse almost to a fault, but nothing redundant is present.
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 getter with no output schema, the mention of 完整字段 partially signals the return payload, which is helpful. However, with no annotations and no output schema, it leaves the agent guessing about error behavior and permissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter and schema description coverage is 100%, so the schema already documents task_id (任务 id,必填). The description adds nothing beyond restating that one task is targeted, which matches the baseline 3 for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (读取/read) and resource (单个任务/single task) plus the scope of the read (完整字段/complete fields). It implicitly contrasts with list_tasks by emphasizing a single task, but it never names siblings 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?
It contains no when-to-use guidance, no prerequisites, and no reference to alternatives such as list_tasks for bulk retrieval or update_task for mutation. Usage must be inferred entirely from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_columnsA
列出所有栏目(列)及其顺序、颜色、在制品上限。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the returned fields (order, color, WIP limit), but does not explicitly state that this is a read-only operation, nor does it mention permissions or side effects. The implied read-only nature from '列出' is helpful but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the verb and resource. It contains no redundant or filler content, and every phrase (order, color, WIP limit) adds useful return 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 list tool with zero parameters and no output schema, the description adequately communicates the returned column attributes. However, it does not state that the operation is read-only or that no side effects occur, which would be more important given the absence of annotations.
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 has zero parameters, so the rubric baseline is 4. There is no parameter semantics to add beyond the empty schema, and the description appropriately does not discuss 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?
States a specific verb '列出' (list) and resource '所有栏目(列)' plus the returned attributes order, color, and WIP limit. It clearly identifies what the tool does, but does not differentiate itself from siblings like board_config or board_snapshot, which may also expose column information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no when-to-use guidance, no alternatives, and no prerequisites. An agent must infer that this tool is for reading column metadata rather than for any configuration or mutation task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_eventsA
读取变更流水(谁在什么时候把什么从哪列移到哪列)。since_seq 支持增量拉取;给定 task_id 可看单个任务的完整历史。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 最多返回条数,默认 100 | |
| task_id | No | 只看该任务的历史 | |
| since_seq | No | 只返回 seq 大于此值的事件 |
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. '读取' (read) and the described event payload make the read-only, non-destructive nature reasonably inferable, but nothing is said about auth requirements, ordering, retention, or rate limits for polling.
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 tight sentences: purpose first, then the two parameter-driven modes. No filler, nothing repeated from the schema, and the most important information leads.
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 read-only, zero-required-parameter list tool with no output schema, the description is nearly sufficient. It omits ordering of events and how limit interacts with since_seq across a long history, which are minor but real gaps for a polling use case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds intent beyond the raw field docs: since_seq is framed as an incremental-sync cursor and task_id as a per-task history filter. That tells an agent how to combine them, not just what they accept.
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 (read the change/event stream) and even spells out the returned content: who moved what from which column to which column, when. That distinguishes it from list_tasks or board_snapshot without naming them, though it stops short of explicit 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?
Explains two concrete usage modes: incremental pulling via since_seq and full single-task history via task_id. This is clear operational context, but it never states when to prefer this tool over alternatives like board_snapshot or list_tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_stalledA
列出疑似停滞的任务:仍在非终态列、且超过阈值秒数没有任何写入。语义是「上报中断」而非「进度值没变」 —— 所以长任务必须周期性调用 update_progress 上报,否则会被误标。返回里带 idle_sec(静默了多久)。
| Name | Required | Description | Default |
|---|---|---|---|
| now | No | 参照时间(ISO8601),便于测试与回放;省略用当前时间 | |
| threshold_sec | No | 静默多少秒算停滞,默认 90 |
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 delivers the key behavioral trait: the semantics is 'reporting interruption' rather than 'progress unchanged', plus the false-positive risk and the idle_sec return field. It omits auth/permission or pagination behavior, but the critical misinterpretation hazard is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the definition, then the semantic caveat, then the return field. The bolded warning is placed where it matters and no sentence is redundant.
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-required-param read tool with no output schema, the description covers what the filter means and surfaces the one return field that matters (idle_sec). Nothing essential to calling it correctly is missing, though return shape beyond idle_sec is 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 description coverage is 100%, so both parameters (now, threshold_sec) are already documented in the schema. The description reinforces the threshold concept and mentions idle_sec but adds no syntax or format detail beyond the schema, matching the baseline 3.
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+resource (列出疑似停滞的任务) and immediately operationalizes it: tasks still in non-terminal columns with no writes beyond the threshold. This is clearly distinguishable from sibling list_tasks, which has no such filter.
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?
Explains the triggering condition and warns that long tasks must periodically call update_progress or be mislabeled, which effectively names the corrective sibling action. It stops short of explicitly contrasting with list_tasks/list_events as alternatives, so it is strong context rather than full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tasksA
按列或标签筛选任务。想看「进行中都有什么」时用 column_id 过滤。默认不返回已归档的任务(完成已久、已挪出主视图的);要看历史就传 include_archived=true。归档不是删除,数据一直都在。
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | 只看带某标签的任务 | |
| column_id | No | 只看某一列 | |
| include_archived | No | 连已归档的一起返回,默认 false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does meaningful work: it discloses that archived tasks are excluded by default, that archiving is not deletion, and that data persists. It omits return format, ordering, and any pagination behavior, but the key hidden default is surfaced.
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 tight sentences, front-loaded with the filtering scope, then the common case, then the archived caveat. Every sentence adds information with no padding.
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 3-param, no-required read tool with no output schema and no annotations, the description covers scope, the primary filter, and the archived default/restore path. It does not describe the shape or ordering of returned tasks, which is the main 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 100% and the schema already documents all three parameters including the default of include_archived. The description largely restates the default and adds a usage example for column_id, which is helpful but not materially beyond the structured fields, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (list/filter tasks) and its scope (by column or tag). It doesn't explicitly differentiate itself from siblings like get_task or list_stalled, so an agent still has to infer which listing tool applies, but the purpose itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete when-to-use cue ('when you want to see what's in progress, filter with column_id') and explains the default archived exclusion with a remedy (include_archived=true). It stops short of naming sibling alternatives such as list_stalled or board_snapshot, so routing is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_taskA
把任务移到另一列(状态流转)。流转合法性由配置 board.transitions 决定,非法流转会报错并列出该列允许的目标。before_task_id 可指定插到某任务之前。
| Name | Required | Description | Default |
|---|---|---|---|
| actor | No | 操作者标识,默认 agent | |
| task_id | Yes | 任务 id(必填) | |
| to_column | Yes | 目标列 id(必填) | |
| before_task_id | 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 does meaningful work: illegal transitions raise an error and enumerate the allowed target columns, and ordering is controlled by before_task_id (append to column tail if omitted). It still omits permission/auth requirements and reversibility, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler; the core action is front-loaded and the behavioral caveats (transition legality, ordering) follow in priority order.
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 no annotations and no output schema, the description covers the main surprise behaviors (validation failure mode, ordering control), which is what an agent most needs. Missing only auth/permission context and any note on side effects, so it stops short of fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the schema (including the append-vs-insert default for before_task_id). The description restates the before_task_id semantics without adding new syntax, format, or constraint detail, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('把任务移到另一列') and adds the conceptual framing (状态流转) so the agent knows this is a status/column transition, not a generic edit. It does not explicitly distinguish itself from update_task, which a sibling-savvy agent might assume can also change columns, so it falls short of the top tier.
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 column-transition framing, and the description usefully notes the transition-legality gate (board.transitions), but it never states when to prefer this over update_task or any other sibling, nor any preconditions. Adequate but with clear routing gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_archivedB
把归档的任务还原回主视图。给 task_id 还原那一个;不给则全部还原。
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | No | 要还原的任务 id,省略则全部还原 |
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 states that tasks are restored to the main view and that omitting task_id restores all, but it omits important mutation details such as required permissions, reversibility, potential conflicts with existing tasks in the main view, or rate 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?
Two short sentences with no wasted words. The main action is front-loaded, and the conditional behavior is stated immediately after, making the description easy to scan.
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 restore tool with one fully documented parameter, the description covers the core action and the optional bulk mode. However, with no annotations and no output schema, it should do more to disclose behavioral context such as side effects or safety implications of restoring all tasks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single optional task_id parameter. The description restates the same meaning (provide task_id to restore one, omit to restore all) without adding syntax, format, or edge-case details beyond the schema, matching the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: restore archived tasks back to the main view. It distinguishes the tool's action from siblings like archive_done or delete_task, but does not explicitly name or contrast those alternatives, 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 description explains parameter behavior (restore one task vs all tasks) but gives no guidance on when to use this tool versus alternatives such as delete_task or get_task. There is no explicit when-to-use or when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_progressA
推进某个任务的进度字段(长耗时任务用)。进度只增不减:传入比当前更小的值会被显式拒绝并告诉你当前值是多少(对齐 MCP 规范 progress 语义)。current 传绝对值而非增量,因此重复调用是幂等的、重试不会推两遍。建议长任务周期性上报 —— 否则会被 list_stalled 判定为停滞。
| Name | Required | Description | Default |
|---|---|---|---|
| done | No | 显式标记该项已完成 | |
| actor | No | 操作者标识,默认 agent | |
| field | No | 要推进的 progress 字段 key;省略则用第一个 | |
| total | No | 总量;省略则沿用任务上已有的 total | |
| current | Yes | 已完成的量(绝对值)。必填 | |
| message | No | 当前在干什么,人类可读,如「上传中:第 300 个」 | |
| task_id | Yes | 任务 id(必填) | |
| weight_bytes | No | 本项的权重(字节)。批量搬运场景下用它实现「按字节加权」——大的文件走得慢时进度条不会假装很快 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations, the description carries the full load and does so richly: monotonic-only semantics with explicit rejection of lower values plus the error returning the current value, idempotency via absolute values, and retry safety. These are exactly the non-obvious behaviors an agent needs.
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?
Front-loaded with purpose, then the critical monotonic constraint in bold, then idempotency, then the operational recommendation. Every sentence carries distinct information with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-param, no-annotation, no-output-schema mutation tool, the description covers the crucial behavioral contract (monotonicity, rejection, idempotency, stalling). It doesn't describe the return payload beyond the rejection case, but the schema fully documents the remaining parameters, so coverage is nearly 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 100%, so the baseline is 3, but the description adds real meaning beyond the field docs by clarifying that current is absolute rather than a delta and drawing the idempotency consequence. That is a semantic contribution the schema does not spell out.
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+resource (推进进度字段) and scopes it to long-running tasks, with the parenthetical (长耗时任务用) routing the agent away from the general update_task sibling. An agent can identify the operation and its domain without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly states when to use it (long-running tasks) and adds an operational directive (report periodically) tied to a concrete consequence (being flagged by list_stalled). It stops short of explicitly naming update_task or get_task as alternatives, so it's clear context but not full when/when-not/alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_taskB
更新任务的标题/说明/标签/自定义字段/优先级。只改传入的部分。
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| actor | No | ||
| title | No | ||
| fields | No | 与已有自定义字段合并 | |
| task_id | Yes | 任务 id(必填) | |
| priority | No | ||
| description | 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 discloses partial-update semantics (只改传入的部分), but does not cover permissions, reversibility, side effects, or return behavior for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no wasted wording and is front-loaded with the updatable fields followed by the partial-update behavior. It is tersely structured rather than verbose, though it may be too minimal for the tool's complexity.
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 seven parameters, a nested object, no annotations, no output schema, and low schema coverage, the description is not complete enough. It omits actor semantics, required task_id context, custom-field merge behavior, and any auth or output expectations.
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 only 29%, so the description must compensate. It names five of seven parameters (title, description, tags, custom fields, priority) but omits actor and task_id, and adds no format or merge details beyond the field names.
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+resource (更新任务) and lists the updatable fields: title, description, tags, custom fields, and priority. It does not distinguish itself from siblings such as update_progress or move_task, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no alternatives, and no prerequisites. It states that only passed parts are changed, but that is behavioral context rather than selection guidance.
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.
15 tool updates
v0.1.0- First observed
archive_done - First observed
board_config - First observed
board_reset - First observed
board_snapshot - First observed
create_task - First observed
delete_task - First observed
get_task - First observed
list_columns - First observed
list_events - First observed
list_stalled - First observed
list_tasks - First observed
move_task - First observed
restore_archived - First observed
update_progress - First observed
update_task
TDQS
Scored across 15 tools
Tools are largely distinct: task CRUD, board snapshot/config, progress, stalled, events, archive/restore, reset each have clear purposes. Minor overlap exists between board_config and list_columns, and between board_snapshot and list_tasks, but descriptions clarify their different scopes.
Most tool names follow a consistent snake_case verb_noun pattern (create_task, move_task, list_events, etc.). The board_* prefixed read and reset tools (board_snapshot, board_config, board_reset) deviate slightly, with board_reset being noun_verb rather than verb_noun.
15 tools is within a reasonable range for a kanban board server and each tool covers a distinct operation. Some convenience read tools (list_columns vs board_config) are slightly redundant, making the set a touch heavy but still manageable.
Task lifecycle is well covered with create, read, update, delete, move, progress, archive, restore, and event logging. Notable gaps remain: there are no tools to create/update/delete columns or modify board configuration, so agents cannot change the board structure itself.
Maintenance
Related MCP Connectors
Task & board management for AI agents + humans. Kanban, comments, digests via MCP.
- DazbenchOAuthapp.dazbench
Task management your AI agents can actually run. One line becomes a context-ready task over MCP.
Kanban board for teams and coding agents: manage tasks, subtasks, sprints and wiki pages via MCP.
AI-native Kanban board — connect Claude to claim, work and move your tasks over MCP.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceA local kanban board and docs tool that AI agents can drive over MCP. It enables project management without accounts or API keys.MIT
- AlicenseNot gradedqualityAmaintenanceLocal-first task governance board for AI agents, enabling session registration, task creation, progress updates, and evidence reporting via MCP, with separation of agent claims and human acceptance.Apache 2.0
- AlicenseNot gradedqualityAmaintenanceSelf-hosted kanban board that dispatches AI agent fleets against tickets. The embedded Streamable HTTP /mcp endpoint exposes 7 tools to list projects, read boards and tickets, and create, move and comment tickets from any MCP client.27AGPL 3.0

AgentTaskerofficial
AlicenseNot gradedqualityBmaintenanceEnables AI agents to create, query, update, claim, hand off, and complete tasks on a local SQLite-backed, project-namespaced kanban board through stdio MCP tools, including filtering for ready/blocked/stale work and exchanging task attachments. It also lets agents list projects and manage statuses, ownership, and evidence without any server or accounts.MIT