Lists the organization's task labels (id, name, color, order) in their manual order, to filter tasks (label_id) or set label_ids. Create, edit and delete them with task_management.labels.create, update and delete.
Scope
task_management:read
Permission
View the module
MCP tool
task_management_labels_listOn the full surface; on the compact one, mb_execute_operation with id: "task_management.labels.list".
Declared cost: up to 202 reads and 0 writes per call (they count against the daily quota).
Parameters
limitintegerqueryoptional
Labels per page (1 to 200; default 200: labels are small and one page usually has them all).
Default: 200
cursorstringqueryoptional
The next_cursor of the previous page, to continue the list; omit it for the first page.
Creates a task label (name and an optional #rrggbb color; without it, the next color of the app's palette), at the end of the manual order. Up to 200 labels per organization (409 limit_reached). Returns label_id and the label: use it in label_ids of task_management.tasks.create or update.
Scope
task_management:write
Permission
Edit in the module
MCP tool
task_management_labels_createOn the full surface; on the compact one, mb_execute_operation with id: "task_management.labels.create".
Declared cost: up to 1 reads and 1 writes per call (they count against the daily quota).
Parameters
namestringbodyrequired
The label's name.
colorstringbodyoptional
A hex color, #rrggbb (default: the next one of the app's palette).
Renames a task label, changes its color (#rrggbb) or its place in the manual order. Only what is sent changes; the same values change nothing (changed: false). The tasks that carry it keep it. Returns the label.
Scope
task_management:write
Permission
Edit in the module
MCP tool
task_management_labels_updateOn the full surface; on the compact one, mb_execute_operation with id: "task_management.labels.update".
Declared cost: up to 1 reads and 1 writes per call (they count against the daily quota).
Parameters
label_idstringpathrequired
The label's id (from task_management.labels.list).
Deletes a task label and removes it from every task that carries it (the tasks are not otherwise changed; up to 5,000, more is 409 too_many_labeled_tasks). The label goes to the 30-day trash with the tasks it was on: platform.trash.restore brings it back. Outside the app it requires a dry run (which says how many tasks carry it) and a confirm_token, except a REST DELETE with a key allowed to delete. Returns tasks_unlabeled.
With an API key, this DELETE runs directly: the record stays 30 days in the trash and the response carries its trash_item_id. With an OAuth token, and through the MCP, it needs dry_run → confirm_token.
Scope
task_management:writeand “Allow deletions” (task_management:delete in OAuth)
Permission
Edit in the module
MCP tool
task_management_labels_deleteOn the full surface; on the compact one, mb_execute_operation with id: "task_management.labels.delete".
Declared cost: up to 5012 reads and 5002 writes per call (they count against the daily quota).
Parameters
label_idstringpathrequired
The label's id (from task_management.labels.list).
Response
oktrue
tasks_unlabelednumber
trash_item_idstring
The trash item this deletion left: the item_id of platform.trash.restore (POST /trash/{item_id}/restore). Missing if nothing went to the trash.
trash_item_idsarray<string>
Only when the deletion left more than one copy: all of them, the first being trash_item_id.
trash_expires_atnumber
When the copy leaves the trash for good (epoch ms): 30 days after the deletion.