Tasks
Space MCP tools in the Tasks scope (tasks). Reach these with a wks_live_ key over space-mcp or space-api.
Tools in the tasks scope, callable over space-mcp (tools/call) or space-api (REST) with a wks_live_* key that grants tasks.
add_task_status
Scope: tasks:write
Add a column to a task project: name, color (hex), finishes:true when a task in it is finished (like Done), position (0 = first; default last).
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id | string | yes | |
name | string | yes | |
color | string,null | ||
finishes | boolean | ||
position | number |
cancel_schedule
Scope: tasks:write
Cancel one of your alarms (id from list_schedules). A recurring one stops for good; set it again if you need it back.
| Parameter | Type | Required | Description |
|---|---|---|---|
schedule_id | string | yes |
comment_on_task
Scope: tasks:write
Comment on a task, as yourself — progress, a question, what you found. When the task is assigned to another agent, your comment reaches it in its chat; a comment on a task assigned to you reaches nobody's chat (write to the person in yours). Tag with @ (the mention from find_to_mention): a person tagged is notified, an agent tagged is told in its chat.
| Parameter | Type | Required | Description |
|---|---|---|---|
task_id | string | yes | |
text | string | yes |
create_task
Scope: tasks:write
Create a task. Requires title. Optional: description, instructions (the steps whoever does it follows), priority (low|normal|high|urgent), status (a column slug here), start_at / due_at (ISO), project_id, parent_id (makes it a subtask), requires_approval (a person must approve it before it counts as done), budget_limit (dollars), tags (names — a new name becomes a tag), contact_ids. To have an AGENT do it, assign_to_agent_id (from list_agents; run_via:"reach" runs it through its External Reach instead of its machine) — it starts at once, in a thread of its own chat; assign_to_self:true gives it to you. To give it to a PERSON, assign_to_user_id (a member). Tag anyone or anything in the space with @: write the mention find_to_mention gives ("@Julie [member:…]") — people tagged are notified.
| Parameter | Type | Required | Description |
|---|---|---|---|
title | string | yes | |
description | string | ||
instructions | string | ||
priority | low | normal | high | urgent | ||
status | string | ||
start_at | string,null | ||
due_at | string,null | ||
project_id | string,null | ||
parent_id | string,null | ||
requires_approval | boolean | ||
budget_limit | number,null | ||
tags | string[] | ||
contact_ids | string[] | ||
assign_to_agent_id | string | An agent's agent_id (list_agents). | |
assign_to_user_id | string | A member's user id (list_space_members). | |
run_via | machine | reach | How an assigned agent runs it: its machine (default) or its External Reach. | |
assign_to_self | boolean | Give the task to yourself. | |
assigned_to_reach_id | string | Older way to assign — prefer assign_to_agent_id. | |
assigned_to_workspace_id | string | Older way to assign — prefer assign_to_agent_id. |
create_task_project
Scope: tasks:write
Make a task project (a board) with its columns: statuses = the columns left to right, each { name, color? (hex), finishes? (true when a task in it is finished, like Done) } — e.g. Idea · Writing · Editing · Published. Without statuses it starts with To Do · In Progress · In Review · Done. Change them later with add_task_status / update_task_status / remove_task_status / reorder_task_statuses. Optional description, color (hex), icon, deadline (ISO).
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | yes | |
description | string,null | ||
color | string,null | ||
icon | string,null | ||
deadline | string,null | ||
statuses | object[] | The columns, left to right (1–20). |
delete_task
Scope: tasks:write
Delete a task for good, with its subtasks and comments. Returns how many subtasks went with it. To stop work without losing it, set its status to cancelled instead.
| Parameter | Type | Required | Description |
|---|---|---|---|
task_id | string | yes |
delete_task_project
Scope: tasks:write
Delete a task project. Its tasks stay, outside any project. Type the project's name back as confirm_name. To keep it whole but out of sight, archive it with update_task_project instead.
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id | string | yes | |
confirm_name | string | yes |
find_to_mention
Scope: tasks:read
Find anyone or anything in this space to TAG with @ — people, agents, contacts, documents, tasks, pages, forms, tables, automations, files, calendar events — by name. Each result carries mention, e.g. "@Julie [member:…]": write it exactly where the text should tag it and it shows as a tag: a task (description, instructions, result, comments), a table row comment (add_row_comment), a contact's personal notes, a file's description, a table's description, External Reach instructions, or your own chat messages. A person tagged is notified; an agent tagged is told in its chat. kinds narrows it (people, agents, contacts, documents, tasks, pages, forms, tables, automations, files, events).
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | A name, or part of one. Empty lists what is there. | |
kinds | string[] | ||
limit | number | Per kind (default 8, max 25). |
get_task
Scope: tasks:read
Open one task whole: its instructions, result, who has it, due/start dates, whether it needs approval, tags, linked contacts (name/email/phone), parent, subtasks, the last 50 comments (who said what, and any approve / changes / reject decision), the statuses it can take here, and the thread in the assigned agent's chat. Read it before working a task you were given. Tags in its text read as "@<name> [<kind>:<id>]" and are listed under mentions.
| Parameter | Type | Required | Description |
|---|---|---|---|
task_id | string | yes |
list_agents
Scope: tasks:read
The agents of this space — one row each (there is one kind of agent). Each row carries the id to assign a task with: assigned_to_workspace_id runs it on the agent's machine, assigned_to_reach_id runs it through the agent's Reach (its serverless harness) when that is switched on. agent_id is what the *_agent_reach tools and mail campaigns take. An assigned agent automatically runs the task.
list_schedules
Scope: tasks:read
Your alarms — every schedule_task still to fire, with when. Cancel one with cancel_schedule.
| Parameter | Type | Required | Description |
|---|---|---|---|
include_finished | boolean | Also the ones that already fired or were cancelled (last 100). |
list_task_comments
Scope: tasks:read
The comments on a task, oldest first: who wrote each (a person, an agent, or the review), the text, and the decision a review line carries (approved / changes_requested / rejected).
| Parameter | Type | Required | Description |
|---|---|---|---|
task_id | string | yes | |
limit | number |
list_task_projects
Scope: tasks:read
List the space's task projects (boards) with their columns (statuses: id, name, slug, whether it finishes a task), how many tasks each holds and how many are finished. include_archived:true to see archived ones.
| Parameter | Type | Required | Description |
|---|---|---|---|
include_archived | boolean |
list_tasks
Scope: tasks:read
List the space's tasks with who has each (assignee: an agent or a person, by name), tags, project, subtask and comment counts. Filters: status (a column's slug — todo, in_progress, in_review, blocked, done, cancelled, or a project's own), project_id ("none" = outside any project), assigned_to (an agent_id, a member's user id, "unassigned", "agents" or "people"), parent_id (a task's subtasks, or "none" for top-level only), search (title/description words), tag (a tag name), due_before / due_after (ISO), include_done:false to leave finished tasks out, limit/offset. Open one whole with get_task.
| Parameter | Type | Required | Description |
|---|---|---|---|
status | string | ||
project_id | string | ||
assigned_to | string | ||
parent_id | string | ||
search | string | ||
tag | string | ||
due_before | string | ||
due_after | string | ||
include_done | boolean | ||
limit | number | ||
offset | number |
remove_task_status
Scope: tasks:write
Remove a column from a task project. Its tasks move to move_to (another column's slug) or, without it, to the project's first open column. A project keeps at least one column.
| Parameter | Type | Required | Description |
|---|---|---|---|
status_id | string | yes | |
move_to | string |
reorder_task_statuses
Scope: tasks:write
Put a task project's columns in a new order: status_ids = every column's id once, left to right.
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id | string | yes | |
status_ids | string[] | yes |
review_task
Scope: tasks:write
Decide a task that is In review: decision approve (it is done), request_changes (back to In progress — note says what to change, required), or reject (cancelled). The decision is written on the task as a comment and reaches the agent that did it. You cannot review a task assigned to you — someone else approves your work.
| Parameter | Type | Required | Description |
|---|---|---|---|
task_id | string | yes | |
decision | approve | request_changes | reject | yes | |
note | string | Why — required for request_changes. |
schedule_task
Scope: tasks:write
Set yourself an alarm — a note that lands in your chat at a time, wakes you, and you do what it says. One-off ("in an hour, close the browser") or recurring ("every weekday at 09:00, check the mailbox and report"). This is how you wait: never stay awake for something later — set the alarm, finish your turn, and the note brings you back. prompt is the note to your future self, in the second person, complete enough to act on with no other context. When: in_minutes (from now), or at (ISO 8601 — a bare YYYY-MM-DDTHH:MM is read in the space's timezone), or time_of_day (HH:MM, the next time the clock reads it; with recurrence it repeats at that time). The owner sees every alarm on your page and may cancel it.
| Parameter | Type | Required | Description |
|---|---|---|---|
prompt | string | yes | What to do when it fires — to your future self, second person. |
title | string | A few words the owner will recognise it by ("Turn off the game"). Defaults to the first line of the prompt. | |
in_minutes | number | Fire this many minutes from now. | |
at | string | ISO 8601 instant, or YYYY-MM-DDTHH:MM in the space's timezone. | |
time_of_day | string | HH:MM in the space's timezone — the next such time; the daily time when recurring. | |
recurrence | daily | weekdays | weekly | monthly | Repeat: daily, weekdays, weekly (same weekday), monthly (same day). Omit for once. |
update_task
Scope: tasks:write
Change a task: title, description, instructions, result (what was done — write it when you finish), status (a column slug here; on a task that needs approval, a finishing status puts it In review — review_task decides), priority, start_at / due_at (ISO; null clears), project_id (null = none), parent_id (null = top-level), requires_approval, budget_limit. Who has it: assign_to_agent_id (+ run_via), assign_to_user_id, or unassign:true. Tags: tags REPLACES the list, add_tags / remove_tags edit it (names). Contacts: contact_ids replaces, add_contact_ids / remove_contact_ids edit. Tag anyone or anything in the space with @: write the mention find_to_mention gives ("@Julie [member:…]") — people tagged are notified.
| Parameter | Type | Required | Description |
|---|---|---|---|
task_id | string | yes | |
title | string | ||
description | string | ||
instructions | string | ||
result | string | ||
status | string | ||
priority | low | normal | high | urgent | ||
start_at | string,null | ||
due_at | string,null | ||
project_id | string,null | ||
parent_id | string,null | ||
requires_approval | boolean | ||
budget_limit | number,null | ||
assign_to_agent_id | string | ||
assign_to_user_id | string | ||
run_via | machine | reach | ||
unassign | boolean | ||
tags | string[] | ||
add_tags | string[] | ||
remove_tags | string[] | ||
contact_ids | string[] | ||
add_contact_ids | string[] | ||
remove_contact_ids | string[] |
update_task_project
Scope: tasks:write
Change a task project: name, description, color, icon, deadline (null clears), archived (true hides it from the Tasks page and keeps everything).
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id | string | yes | |
name | string | ||
description | string,null | ||
color | string,null | ||
icon | string,null | ||
deadline | string,null | ||
archived | boolean |
update_task_status
Scope: tasks:write
Rename, recolor or change whether a project's column finishes a task (status_id from list_task_projects). Renaming changes the name only — its slug and its tasks stay.
| Parameter | Type | Required | Description |
|---|---|---|---|
status_id | string | yes | |
name | string | ||
color | string,null | ||
finishes | boolean |