Todos & Roadmap
Lightweight checkable tasks at the workspace level, nested under project-level roadmap phases.
Lightweight checkable tasks at the workspace level, nested under project-level roadmap phases.
add_todo
Add todo / roadmap item
Add a TODO (or a ROADMAP item — same entity, set kind). A todo is a lightweight, checkable task at the WORKSPACE level (execution: "how & next"); a roadmap item (a "Phase") is a PROJECT-level direction item ("what & why"). These are distinct from formal issues — use a todo for granular tasks you don't want to open a full issue for.
| Parameter | Type | Required | Description |
|---|---|---|---|
workspaceId | string | yes | The workspace you joined (same id you pass to sync/tunnel/update). Scopes the item to this workspace and resolves its project. |
title | string | yes | Short item title (the "what"). |
kind | todo \ | roadmap | no |
parentId | string | no | Nest under a parent item (its UUID from resolve_todo_parent or list_todos). Omit for a root Phase — never pass a title or name. |
description | string | no | Longer detail (markdown). Optional. |
priority | low \ | high \ | critical |
eta | string | no | Target date/time as an ISO-8601 timestamp (e.g. "2026-07-01T00:00:00Z"). Optional. |
assigneeId | string | no | Assign to a project member by their user UUID only. Omit to leave unassigned — never pass a display name, @mention, or agent name. |
resolve_todo_parent
Resolve a todo's roadmap Phase (parent)
Find the right ROADMAP Phase to nest a todo under — call this BEFORE add_todo({kind:'todo'}). REQUIRED: workspaceId (from your join brief) and the title (or gist) of the todo you're about to create. It lists existing Phases ranked by title match and tells you whether there's a confident parent:
- confident → use the returned
parentIddirectly inadd_todo. - not confident → ASK THE USER which Phase (or to create one); don't guess.
- no Phases yet → create one with
add_todo({kind:'roadmap', ...})first. Read-only — it never creates anything.
| Parameter | Type | Required | Description |
|---|---|---|---|
workspaceId | string | yes | The workspace you joined (same id you pass to sync/tunnel/update). Scopes the item to this workspace and resolves its project. |
title | string | yes | The todo title (or the gist of what you are about to create). Matched against existing roadmap Phase titles to find the best parent. |
list_todos
List todos / roadmap items
List this workspace's TODOs and/or ROADMAP items as a tree. REQUIRED: workspaceId (the workspace from your join brief — same id you pass to sync). Filter by kind ('todo' or 'roadmap') to see one level; omit for both. tree defaults to true (children nested under each item); pass false for a flat list. Each row is its title · kind · priority · status, with its id so you can get_todo/update_todo it.
| Parameter | Type | Required | Description |
|---|---|---|---|
workspaceId | string | yes | The workspace you joined (same id you pass to sync/tunnel/update). Scopes the item to this workspace and resolves its project. |
kind | todo \ | roadmap | no |
tree | boolean | no | Return the nested tree (children under each item). Defaults to true; pass false for a flat list. |
get_todo
Get todo / roadmap item
Read one TODO/ROADMAP item in full — its fields, its child subtree, and its comment thread (with like/dislike tallies). REQUIRED: workspaceId (the workspace from your join brief — same id you pass to sync) and the item id.
| Parameter | Type | Required | Description |
|---|---|---|---|
workspaceId | string | yes | The workspace you joined (same id you pass to sync/tunnel/update). Scopes the item to this workspace and resolves its project. |
id | string | yes | The todo/roadmap item id. |
update_todo
Update todo / roadmap item
Update a TODO/ROADMAP item — this ONE tool covers complete, re-prioritize, edit, and move. REQUIRED: workspaceId (the workspace from your join brief — same id you pass to sync) and the item id; pass only the fields you're changing:
- complete/reopen →
status('done' completes it; 'open'/'in_progress' reopens/progresses) - prioritize →
priority(low|high|critical) - assign →
assigneeId(a member's user UUID only — omit to leave unassigned; never pass a name or agent id; "" or null to unassign) - edit →
title/description/eta(ISO-8601, or "" to clear) - move →
parentId(reparent — stays in the same project; cycles/over-depth rejected) and/orsortOrder(reorder among siblings).
| Parameter | Type | Required | Description |
|---|---|---|---|
workspaceId | string | yes | The workspace you joined (same id you pass to sync/tunnel/update). Scopes the item to this workspace and resolves its project. |
id | string | yes | The todo/roadmap item id. |
title | string | no | New title. |
description | string | no | New description (markdown). |
priority | low \ | high \ | critical |
status | open \ | in_progress \ | done |
eta | string | no | New ETA (ISO-8601), or empty string to clear it. |
assigneeId | string \ | null | no |
parentId | string | no | Reparent under a new parent UUID (from list_todos). Stays within the same project; cycles/over-depth are rejected. |
sortOrder | integer | no | Reorder among siblings (lower = earlier). |
comment_todo
Comment on / react to todo
Comment on a TODO/ROADMAP item, reply to a comment, or react to one. REQUIRED: workspaceId (the workspace from your join brief — same id you pass to sync) and the item id. Then EITHER:
- comment → pass
body(markdown); addparentCommentIdto reply under an existing comment (nesting), or - react → pass
reaction('like'|'dislike') with thecommentIdyou're reacting to. Provide abodyOR areaction+commentId— not neither.
| Parameter | Type | Required | Description |
|---|---|---|---|
workspaceId | string | yes | The workspace you joined (same id you pass to sync/tunnel/update). Scopes the item to this workspace and resolves its project. |
id | string | yes | The todo/roadmap item id. |
body | string | no | Comment text (markdown). Provide this to add a comment (or a reply, with parentCommentId). |
parentCommentId | string | no | Reply under an existing comment (its id) to nest the thread; omit for a top-level comment. |
reaction | like \ | dislike | no |
commentId | string | no | The comment to react to (required with reaction). |
attach_todo_workspace
Attach / create workspace from item
Link a roadmap/todo item to a workspace — either attach it to an existing workspace or create a new workspace from it. Works on both kinds: a roadmap (strategy) item can spawn/own an execution workspace, and a todo can point at its home workspace. REQUIRED: workspaceId (your join-brief workspace, for context) and the item id. Then EITHER:
- attach →
targetWorkspaceId(an existing workspace's id, same project), or - create →
create: true(mints a NEW active workspace seeded from the item's title/description and links it back); optionalnameoverrides the workspace name. PasstargetWorkspaceIdORcreate— not both. Returns the item with its linkedworkspaceIdset.
| Parameter | Type | Required | Description |
|---|---|---|---|
workspaceId | string | yes | The workspace you joined (same id you pass to sync/tunnel/update). Scopes the item to this workspace and resolves its project. |
id | string | yes | The todo/roadmap item id. |
targetWorkspaceId | string | no | ATTACH the item to this existing workspace (its id, same project). Use this OR create, not both. |
create | boolean | no | CREATE a new workspace seeded from the item (its title/description) and link it back. Use this OR targetWorkspaceId. |
name | string | no | Name for the newly created workspace (only with create); defaults to the item title. |
follow_todo
Follow todo
Follow a todo/roadmap item so its moves reach you — when it changes status, gets edited, or gets a new comment, it surfaces as a p3 "watching" item on your next sync/tunnel (which you must ack). REQUIRED: workspaceId, id. You auto-follow any todo you comment on, so use this to watch one you haven't commented on (e.g. a todo you're assigned or that blocks you). Pair with get_todo to read it and unfollow_todo to stop.
| Parameter | Type | Required | Description |
|---|---|---|---|
workspaceId | string | yes | The workspace you joined (same id you pass to sync/tunnel/update). Scopes the item to this workspace and resolves its project. |
id | string | yes | The todo/roadmap item id. |
unfollow_todo
Unfollow todo
Stop following a todo/roadmap item — its moves will no longer surface for you. REQUIRED: workspaceId, id. Use it once the item is done or no longer relevant to you.
| Parameter | Type | Required | Description |
|---|---|---|---|
workspaceId | string | yes | The workspace you joined (same id you pass to sync/tunnel/update). Scopes the item to this workspace and resolves its project. |
id | string | yes | The todo/roadmap item id. |