Skip to navigation

PM boards

Plan team work with columns, tasks, owners, and dependencies.
View as Markdown

A PM board tracks work through a set of status columns. Each task belongs to a status; that status determines its board. Tasks can have owners, dates, subtasks, attachments, and dependencies.

Use creative projects to store campaign deliverables. PM boards manage the plan for producing them. These are separate resources, even when their names describe the same campaign.

1. Find or create a board

Call pm_listBoards with search to find the board by title, then read it with pm_getBoard. Save the board UUID. Use expand: "statuses" to inspect its columns inline where supported.

To create a board, call pm_createBoard. This example creates a private task board with an explicit review stage:

{
"title": "Autumn launch",
"primary_type": "pm",
"access": 0,
"statuses": [
{"title": "To do"},
{"title": "In progress"},
{"title": "Review"},
{"title": "Completed"}
]
}

Board access values are 0 for private, 1 for workspace-shared, and 2 for public. Select visibility deliberately. When statuses are omitted, the board receives the default Draft, To Do, In Progress, and Completed columns.

2. Resolve columns and people

Use pm_listStatuses to obtain the board’s status UUIDs. Use pm_listWorkspaceMembers to resolve an assignee; its options[].value is the integer user ID, while label contains the display name and email.

Do not pass a column title as a status UUID or a member’s display name as an assignee ID. Keep the chosen space_id on related calls.

3. Create a task

Call pm_createTask with the destination status UUID. Add the title, description, and any required dates, owners, or tags:

{
"status": "STATUS_UUID_FROM_LIST",
"title": "Review the launch copy",
"description": "Review the approved project item and record any required revisions.",
"assignees": [123],
"tags": ["autumn-launch", "review"]
}

Replace 123 with a discovered member ID. Dates use ISO 8601 date-time values. Read the new task with pm_getTask and expand: "assignees,tags,status_details": assignees are not included in the initial creation response.

4. Find and update work

For a board view or targeted search, call pm_searchTasks with both board and status, one column at a time. Follow pagination to cover the entire column. Add search or supported filters for a narrower query.

Subtasks are excluded by default; set include_subtasks: true when searching them. Use pm_searchRecentTasks for a workspace-wide view of recently modified work.

To move one task to Review, use pm_updateTask with the Review status UUID. Changing a column’s position is a different operation: use pm_updateStatus with order.

5. Maintain ownership and task details

Use the dedicated tools for focused updates:

ToolInput to resolve first
pm_updateTaskAssigneesInteger member IDs to add or remove
pm_updateTaskTagsTag names; unknown names are created
pm_updateTaskAttachmentsAttachment UUIDs from the supported attachment flow or expanded task
pm_updateTaskCustomFieldsExisting custom-field UUIDs and values matching their types

An asset ID or URL is not automatically an attachment UUID. Read the current task and schema before changing attachments. Retrieve the task directly to verify writes; search indexing can lag behind changes.

6. Break work into subtasks and dependencies

Create a subtask with pm_createTask, providing its parent task UUID, destination status, and task_type: "SUBTASK". Inspect direct children with pm_listSubtasks.

Before adding a dependency, call pm_getTaskDependencies. To express “copy review blocks publishing,” call pm_addTaskDependency on the review task with the publishing task as target_task_id and relation_type: "BLOCKS".

Other supported relations include RELATES_TO and DUPLICATES. To remove a relationship, use its relationship_id from the dependency response, not the counterpart task ID.

7. Review progress and maintain the board

Use pm_getTaskActivity for status changes, assignee changes, and other recorded edits. Ask for a report of blocked tasks, unassigned tasks, and upcoming deadlines based on the retrieved data.

pm_cloneTask copies the selected fields; pm_cloneBoard copies statuses and top-level tasks. Verify the clone’s contents and access rather than assuming every nested resource was copied.

To retire a column, first move its tasks. pm_moveStatus bulk-moves all tasks from a source column to a destination status; it does not reorder the column. Delete the empty column with pm_deleteStatus. Board and task deletion cannot be reversed through these API tools, so use it only when removal is the intended outcome.

API reference

For request fields, response shapes, and direct HTTP integrations:

These endpoint pages describe REST requests. For MCP calls, use the current tool schema, including any additional convenience fields.