MCP Server

Plate

to.plate/mcp
Business & Operations Productivity Public & reachable MCP 2025-11-25

What this MCP does

Manages team workspaces, projects, sections, tasks, comments, labels, members, statuses, activity history, and task completion.

complete_task
Mark an existing task as completed or reopen it. Use this instead of create_task when the task already exists and you only need to change its completion state. The taskId is the internal document ID from list_tasks — NOT the public task number (e.g. SCD-408). To resolve a public number to an internal ID, call list_tasks with workspaceId + number first.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['taskId'], 'properties': {'taskId': {'type': 'string', 'description': 'Internal task ID (from list_tasks `id` field, not the public SCD-XXX number)'}, 'isCompleted': {'type': 'boolean', 'description': 'True to complete, false to reopen (default: true)'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'isCompleted'], 'properties': {'id': {'type': 'string'}, 'isCompleted': {'type': 'boolean'}}, 'additionalProperties': False}
complete_tasks
Mark multiple tasks as completed in one action. Use this instead of calling complete_task multiple times. Already-completed tasks are left as-is.
Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['taskIds'], 'properties': {'taskIds': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 100, 'minItems': 1, 'description': 'Internal task IDs to complete (1â\x80\x93100)'}, 'isCompleted': {'type': 'boolean', 'description': 'True to complete, false to reopen (default: true)'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'isCompleted'], 'properties': {'id': {'type': 'string'}, 'isCompleted': {'type': 'boolean'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
create_comment
Add a comment to a task. The taskId is the internal document ID from list_tasks — NOT the public task number (e.g. SCD-408).
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['taskId', 'text'], 'properties': {'text': {'type': 'string', 'description': 'Comment text. Supports markdown: # headings, - bullets, 1. numbered lists, **bold**, *italic*, `code`, > blockquote.'}, 'taskId': {'type': 'string', 'description': 'Internal task ID (from list_tasks `id` field, not the public SCD-XXX number)'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string'}}, 'additionalProperties': False}
create_comments
Add multiple comments to tasks in one action. Use this instead of calling create_comment multiple times.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['comments'], 'properties': {'comments': {'type': 'array', 'items': {'type': 'object', 'required': ['taskId', 'text'], 'properties': {'text': {'type': 'string', 'description': 'Comment text (markdown supported)'}, 'taskId': {'type': 'string', 'description': 'Internal task ID'}}}, 'maxItems': 50, 'minItems': 1, 'description': 'Comments to create (1â\x80\x9350)'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'taskId'], 'properties': {'id': {'type': 'string'}, 'taskId': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
create_project
Create a new project in a workspace. If a project with the same name already exists in the workspace, returns the existing project instead of creating a duplicate — check the `created` field in the response to tell the two cases apart.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['workspaceId', 'name'], 'properties': {'name': {'type': 'string', 'description': 'Project name'}, 'description': {'type': 'string', 'description': 'Project description'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'defaultListId', 'created'], 'properties': {'id': {'type': 'string'}, 'created': {'type': 'boolean', 'description': 'true if a new project was created, false if an existing project with this name was returned'}, 'defaultListId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}
create_section
Create a new section (column) in a project. If a section with the same name already exists in the project, returns the existing section instead of creating a duplicate — check the `created` field in the response to tell the two cases apart.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId', 'name'], 'properties': {'name': {'type': 'string', 'description': 'Section name'}, 'projectId': {'type': 'string', 'description': 'Project ID'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'created'], 'properties': {'id': {'type': 'string'}, 'created': {'type': 'boolean', 'description': 'true if a new section was created, false if an existing section with this name was returned'}}, 'additionalProperties': False}
create_sections
Create multiple sections in a project in one action. Use this instead of calling create_section multiple times.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId', 'sections'], 'properties': {'sections': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Section name'}}}, 'maxItems': 30, 'minItems': 1, 'description': 'Sections to create (1â\x80\x9330)'}, 'projectId': {'type': 'string', 'description': 'Project ID'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'created'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'created': {'type': 'boolean'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
create_task
Create a new task in a project section. Only call this tool when creating a brand-new task that does not yet exist. To change the name, status, assignee, or description of an existing task, call update_task instead. To mark an existing task as done, call complete_task instead. If unsure whether a task already exists, call list_tasks first.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId', 'listId', 'name'], 'properties': {'name': {'type': 'string', 'description': 'Task name'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Label IDs or names (from list_labels). Names match case-insensitively. Labels are never created automatically â\x80\x94 an unknown one is an error.'}, 'listId': {'type': 'string', 'description': 'Section ID'}, 'statusId': {'type': 'string', 'description': 'Initial status ID'}, 'projectId': {'type': 'string', 'description': 'Project ID'}, 'assigneeId': {'type': 'string', 'description': 'Assignee user ID'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'number'], 'properties': {'id': {'type': 'string'}, 'number': {'type': 'number'}}, 'additionalProperties': False}
create_tasks
Create multiple tasks in a project in one action. Use this instead of calling create_task multiple times when the user asks to create several tasks at once. All tasks are created atomically — if validation fails for any item, nothing is created.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId', 'tasks'], 'properties': {'tasks': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Task name'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Label IDs or names (from list_labels); names match case-insensitively. Unknown labels are an error â\x80\x94 they are never created automatically.'}, 'listId': {'type': 'string', 'description': 'Section ID for this task (overrides default listId)'}, 'dueDate': {'type': 'string', 'description': 'Due date (ISO date string)'}, 'statusId': {'type': 'string', 'description': 'Status ID'}, 'assigneeId': {'type': 'string', 'description': 'Assignee user ID'}, 'description': {'type': 'string', 'description': 'Description (markdown)'}}}, 'maxItems': 50, 'minItems': 1, 'description': 'Tasks to create (1â\x80\x9350)'}, 'listId': {'type': 'string', 'description': 'Default section ID for all tasks (can be overridden per task)'}, 'projectId': {'type': 'string', 'description': 'Project ID'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'number', 'name', 'listId', 'projectId', 'workspaceId'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'listId': {'type': 'string'}, 'number': {'type': 'number'}, 'projectId': {'type': 'string'}, 'workspaceId': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
delete_comment
Delete a comment from a task.
Destructive
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['commentId'], 'properties': {'commentId': {'type': 'string', 'description': 'Comment ID'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'deleted'], 'properties': {'id': {'type': 'string'}, 'deleted': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}
delete_comments
Delete multiple comments in one action. Use this instead of calling delete_comment multiple times. All comments are validated before any are deleted.
Destructive Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['commentIds'], 'properties': {'commentIds': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 50, 'minItems': 1, 'description': 'Comment IDs to delete (1â\x80\x9350)'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'deleted'], 'properties': {'id': {'type': 'string'}, 'deleted': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}}}, 'additionalProperties': False}
delete_task
Permanently delete a task. Comments and attachments are removed automatically. The taskId is the internal document ID from list_tasks — NOT the public task number (e.g. SCD-408).
Destructive
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['taskId'], 'properties': {'taskId': {'type': 'string', 'description': 'Internal task ID (from list_tasks `id` field, not the public SCD-XXX number)'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'deleted'], 'properties': {'id': {'type': 'string'}, 'deleted': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}
delete_tasks
Permanently delete multiple tasks in one action. Use this instead of calling delete_task multiple times. All tasks are validated before any are deleted.
Destructive Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['taskIds'], 'properties': {'taskIds': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 50, 'minItems': 1, 'description': 'Internal task IDs to delete (1â\x80\x9350)'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'deleted'], 'properties': {'id': {'type': 'string'}, 'deleted': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}}}, 'additionalProperties': False}
get_task
Get full details of a task. You can look up by internal taskId OR by public task identifier. To resolve a public ID like 'TES-1' or 'SCD-409', pass it as taskId — the prefix is used to find the correct workspace automatically. Alternatively, pass workspaceId + number (digits only).
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'number': {'type': 'number', 'description': 'Public task number (digits only â\x80\x94 e.g. 409 from SCD-409). Requires workspaceId unless taskId contains the prefix.'}, 'taskId': {'type': 'string', 'description': "Internal task ID OR full public task identifier (e.g. 'TES-1', 'SCD-409'). When a prefixed ID is passed, the prefix is used to locate the correct workspace automatically."}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID. Used when looking up by number without a prefix.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'number', 'name', 'isCompleted', 'statusId', 'assigneeId', 'listId', 'projectId', 'workspaceId', 'createdAt', 'description', 'descriptionText', 'labels', 'ownerId'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'labels': {'type': 'array', 'items': {}}, 'listId': {'type': 'string'}, 'number': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'ownerId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'statusId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'createdAt': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'projectId': {'type': 'string'}, 'assigneeId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'description': {}, 'isCompleted': {'type': 'boolean'}, 'workspaceId': {'type': 'string'}, 'descriptionText': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Description converted to Markdown â\x80\x94 use this for reading and displaying the description.'}}, 'additionalProperties': False}
list_activity
List task activity history (status changes, assignments, moves, etc.) over a time range. Use it for time-based questions like which tasks were completed last week or what someone did. Filters: from/to (ISO 8601 dates), actorId (who made the change — get userIds from list_members), type ('task_status_changed', or 'completed' for transitions into a Done status), and projectId. Each row gives the task identifier, the status change, who did it, and the task's owner and assignee.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['workspaceId'], 'properties': {'to': {'type': 'string', 'description': 'End of range, ISO 8601'}, 'from': {'type': 'string', 'description': 'Start of range, ISO 8601 (e.g. 2026-06-01)'}, 'type': {'type': 'string', 'description': "Event type, e.g. 'task_status_changed' or 'completed'"}, 'limit': {'type': 'number', 'description': 'Max rows (default 100, max 500)'}, 'actorId': {'type': 'string', 'description': 'Only changes made by this userId'}, 'projectId': {'type': 'string', 'description': 'Limit to one project'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['at', 'type', 'task', 'taskName', 'change', 'completed', 'actor', 'owner', 'assignee'], 'properties': {'at': {'type': 'string'}, 'task': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'type': {'type': 'string'}, 'actor': {'type': 'string'}, 'owner': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'change': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'assignee': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'taskName': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'completed': {'type': 'boolean'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
list_comments
List a task's comments, oldest first. The taskId is the internal document ID from list_tasks — NOT the public SCD-XXX number.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['taskId'], 'properties': {'taskId': {'type': 'string', 'description': 'Internal task ID (from list_tasks `id` field, not the public SCD-XXX number)'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'authorId', 'content', 'contentText', 'createdAt'], 'properties': {'id': {'type': 'string'}, 'content': {}, 'authorId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'createdAt': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'contentText': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Comment converted to Markdown â\x80\x94 use this for reading and displaying the comment.'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
list_labels
List task labels for a workspace. Use the returned IDs (or names) as `labels` when creating or updating tasks.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['workspaceId'], 'properties': {'workspaceId': {'type': 'string', 'description': 'Workspace ID'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'color', 'order'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'color': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'order': {'type': 'number'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
list_members
List workspace members with their userId, name, email, and role. Use userId as assigneeId when creating or updating tasks.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['workspaceId'], 'properties': {'workspaceId': {'type': 'string', 'description': 'Workspace ID'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['userId', 'name', 'email', 'role'], 'properties': {'name': {'type': 'string'}, 'role': {'type': 'string'}, 'email': {'type': 'string'}, 'userId': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
list_projects
List projects in a workspace.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['workspaceId'], 'properties': {'workspaceId': {'type': 'string', 'description': 'Workspace ID'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
list_sections
List sections (columns) in a project.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId'], 'properties': {'projectId': {'type': 'string', 'description': 'Project ID'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'order'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'order': {'type': 'number'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
list_statuses
List workflow statuses for a workspace. Use the returned IDs as statusId when creating or updating tasks.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['workspaceId'], 'properties': {'workspaceId': {'type': 'string', 'description': 'Workspace ID'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'color', 'systemType', 'order'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'color': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'order': {'type': 'number'}, 'systemType': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}}}, 'additionalProperties': False}
list_tasks
List tasks in a project, or look up a specific task by its public number. To resolve a public ID like 'TES-1': pass taskPrefix='TES' and number=1 — the prefix locates the correct workspace automatically (do NOT hardcode workspaceId when the prefix belongs to a different workspace). Alternatively pass workspaceId + number when you are certain of the workspace.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'description': 'Max number of tasks to return (default: 100, max: 500)'}, 'listId': {'type': 'string', 'description': 'Filter by section ID'}, 'number': {'type': 'number', 'description': 'Look up a task by its public number (digits only â\x80\x94 e.g. 1 from TES-1). Requires either taskPrefix or workspaceId. projectId is ignored when number is provided.'}, 'statusId': {'type': 'string', 'description': 'Filter by status ID'}, 'projectId': {'type': 'string', 'description': 'Project ID. Required unless number is provided.'}, 'taskPrefix': {'type': 'string', 'description': "Task prefix (e.g. 'TES' from TES-1). When provided with number, the workspace is located by prefix automatically â\x80\x94 use this instead of workspaceId when the prefix is known."}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID. Use when searching by number and you know the workspace. Ignored when taskPrefix is provided.'}, 'includeCompleted': {'type': 'boolean', 'description': 'Include completed tasks (default: false)'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'number', 'name', 'isCompleted', 'statusId', 'assigneeId', 'listId', 'projectId', 'workspaceId', 'createdAt'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'listId': {'type': 'string'}, 'number': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'statusId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'createdAt': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'projectId': {'type': 'string'}, 'assigneeId': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'isCompleted': {'type': 'boolean'}, 'workspaceId': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
list_workspaces
List all Plate workspaces the user is a member of.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'urlId', 'taskPrefix'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'urlId': {'type': 'string'}, 'taskPrefix': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}}}, 'additionalProperties': False}
update_project
Rename a project or update its description.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId'], 'properties': {'name': {'type': 'string', 'description': 'New project name'}, 'projectId': {'type': 'string', 'description': 'Project ID'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'New project description (null to clear)'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string'}}, 'additionalProperties': False}
update_section
Rename a section.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['sectionId', 'name'], 'properties': {'name': {'type': 'string', 'description': 'New section name'}, 'sectionId': {'type': 'string', 'description': 'Section ID'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string'}}, 'additionalProperties': False}
update_sections
Rename multiple sections in one action. Use this instead of calling update_section multiple times.
Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['sections'], 'properties': {'sections': {'type': 'array', 'items': {'type': 'object', 'required': ['sectionId', 'name'], 'properties': {'name': {'type': 'string', 'description': 'New section name'}, 'sectionId': {'type': 'string', 'description': 'Section ID'}}}, 'maxItems': 30, 'minItems': 1, 'description': 'Sections to update (1â\x80\x9330)'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
update_task
Update one or more fields on an existing task. Use this instead of create_task when the task already exists. The taskId is the internal document ID from list_tasks — NOT the public task number (e.g. SCD-408). To resolve a public number to an internal ID, call list_tasks with workspaceId + number first.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['taskId'], 'properties': {'name': {'type': 'string', 'description': 'New task name'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': "Replace the task's labels with these IDs or names (from list_labels). Names match case-insensitively; pass [] to clear. This REPLACES the list, it does not append. Labels are never created automatically â\x80\x94 an unknown one is an error."}, 'listId': {'type': 'string', 'description': 'Move to a different section (must belong to the same project)'}, 'taskId': {'type': 'string', 'description': 'Internal task ID (from list_tasks `id` field, not the public SCD-XXX number)'}, 'statusId': {'type': 'string', 'description': 'New status ID'}, 'assigneeId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'New assignee user ID (null to unassign)'}, 'description': {'type': 'string', 'description': 'New description. Supports markdown: # headings, - bullets, 1. numbered lists, **bold**, *italic*, `code`, > blockquote.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string'}}, 'additionalProperties': False}
update_tasks
Update multiple existing tasks in one action. Use this instead of calling update_task multiple times when the user asks to change several tasks at once. All updates are applied atomically.
Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tasks'], 'properties': {'tasks': {'type': 'array', 'items': {'type': 'object', 'required': ['taskId'], 'properties': {'name': {'type': 'string', 'description': 'New task name'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': "REPLACE this task's labels with these IDs or names (from list_labels); [] clears them. Unknown labels are an error â\x80\x94 they are never created automatically."}, 'listId': {'type': 'string', 'description': 'Move to a different section'}, 'taskId': {'type': 'string', 'description': 'Internal task ID'}, 'dueDate': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'New due date (ISO date string, null to clear)'}, 'statusId': {'type': 'string', 'description': 'New status ID'}, 'assigneeId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'New assignee user ID (null to unassign)'}, 'description': {'type': 'string', 'description': 'New description (markdown)'}}}, 'maxItems': 50, 'minItems': 1, 'description': 'Tasks to update (1â\x80\x9350)'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Added
delete_comments
Sept. 17, 2026, 12:55 p.m.
Added
create_comments
Sept. 17, 2026, 12:55 p.m.
Added
update_sections
Sept. 17, 2026, 12:55 p.m.
Added
create_sections
Sept. 17, 2026, 12:55 p.m.
Added
delete_tasks
Sept. 17, 2026, 12:55 p.m.
Added
complete_tasks
Sept. 17, 2026, 12:55 p.m.
Added
update_tasks
Sept. 17, 2026, 12:55 p.m.
Added
create_tasks
Sept. 17, 2026, 12:55 p.m.
Added
create_comment
Sept. 17, 2026, 12:55 p.m.
Added
delete_comment
Sept. 17, 2026, 12:55 p.m.
Added
update_section
Sept. 17, 2026, 12:55 p.m.
Added
create_section
Sept. 17, 2026, 12:55 p.m.
Added
update_project
Sept. 17, 2026, 12:55 p.m.
Added
create_project
Sept. 17, 2026, 12:55 p.m.
Added
delete_task
Sept. 17, 2026, 12:55 p.m.
Added
complete_task
Sept. 17, 2026, 12:55 p.m.
Added
update_task
Sept. 17, 2026, 12:55 p.m.
Added
create_task
Sept. 17, 2026, 12:55 p.m.
Added
list_labels
Sept. 17, 2026, 12:55 p.m.
Added
list_statuses
Sept. 17, 2026, 12:55 p.m.
Added
list_activity
Sept. 17, 2026, 12:55 p.m.
Added
list_members
Sept. 17, 2026, 12:55 p.m.
Added
list_comments
Sept. 17, 2026, 12:55 p.m.
Added
get_task
Sept. 17, 2026, 12:55 p.m.
Added
list_sections
Sept. 17, 2026, 12:55 p.m.
Added
list_tasks
Sept. 17, 2026, 12:55 p.m.
Added
list_projects
Sept. 17, 2026, 12:55 p.m.
Added
list_workspaces
Sept. 17, 2026, 12:55 p.m.