> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.simplified.com/mcp/pm-boards/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.simplified.com/_mcp/server. # PM boards 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](/mcp/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: ```json { "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: ```json { "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: | Tool | Input to resolve first | | --------------------------- | -------------------------------------------------------------------- | | `pm_updateTaskAssignees` | Integer member IDs to add or remove | | `pm_updateTaskTags` | Tag names; unknown names are created | | `pm_updateTaskAttachments` | Attachment UUIDs from the supported attachment flow or expanded task | | `pm_updateTaskCustomFields` | Existing 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: * [Boards](/api-reference/project-manager/boards/list-boards) * [Task search and filters](/api-reference/project-manager/search/tasks) * [Task dependencies](/api-reference/project-manager/dependencies/get-task-dependencies) These endpoint pages describe REST requests. For MCP calls, use the current tool schema, including any additional convenience fields. > Plan team work with columns, tasks, owners, and dependencies.