Skip to content

Tool reference ​

The Plane MCP server exposes 28 tools, one per resource. Resource tools take an action parameter that selects one of 183 operations; get_pql_reference is the only exception. Every transport—hosted OAuth, hosted access token, local stdio, and deprecated SSE—exposes the same surface.

The description your MCP client receives is generated from each tool's action declarations. It is the authoritative reference at call time, including required and optional parameters.

Totals: 28 tools, 183 actions, and 169 retired-name aliases.

For connection and authentication instructions, see MCP server.

How to read this page ​

Each tool table has these columns:

  • Action is the value to pass as action.
  • Required parameters must be present for that action.
  • Optional parameters are accepted only for that action.
  • Notes include action-specific behavior and the Read-only or Destructive flags.

Actions with cursor and per_page return a next_cursor when another page is available. Follow it until it is empty. Update actions change only the fields you pass.

Parameter values are plain strings, numbers, booleans, and lists. The server also coerces string-encoded lists, integers, and booleans. If you pass an argument that belongs to another action, validation rejects it and names the permitted parameters.

Conventions ​

Identifiers ​

Most actions take UUIDs for projects, work items, states, labels, members, and other resources. List or resolve the relevant resource first when you have only its name or short identifier.

workitem retrieve_by_identifier is the exception: its workitem_identifier accepts a readable identifier such as ENG-42. Other workitem actions use the work item's UUID in workitem_id.

Project vs workspace scope ​

Pages, work item types, and work item properties can belong to a project or the workspace. Supply project_id for the project's own set; omit it for the workspace's set.

Some workspaces centrally govern the type and property vocabulary. In that mode, project-scoped writes are refused. Use workitem_type resolve to find or create a usable type without duplicates, or workitem_type import_to_project to link existing workspace types to a project.

PQL ​

workitem list, workitem list_archived, workitem count, cycle list_workitems, and module list_workitems accept a pql filter. Call get_pql_reference with detail="brief" or detail="full" before composing a query, and see the Plane Query Language guide.

UUID-backed PQL fields—such as project, assignee, state, label, cycle, module, type, milestone, and creator—need UUIDs. Resolve names before inserting them into a query.

Epics ​

Plane represents an epic as a work item whose type is named Epic. There is no separate epic tool.

  1. Call workitem_type resolve with project_id and name="Epic", then keep the returned type id.
  2. Call workitem create with the project, name, and that type_id.
  3. List epics with workitem list and pql='type = "<type id>"'.
  4. Read, edit, or delete an epic with workitem retrieve, workitem update, or workitem delete. To nest a work item under it, pass the epic's work item UUID as parent to workitem update or workitem create.
  5. List an epic's children with workitem list and pql='childOf("PROJ-12")', using the epic's readable identifier.

Plan availability ​

The server declares feature gates for work_log (Time tracking), workitem_type (Work item types), workitem_property (Work item properties), and some project features. Customers, initiatives, releases, and pages can also be gated by the Plane API and your plan. When a feature is unavailable, the error names it.

Tools by resource group ​

Tools are grouped by the Plane resource they manage. Each group opens with an example prompt.

Work items ​

Example prompt: “Summarize what changed on ENG-42 this week, including comments, state changes, and assignees.”

workitem — Work items ​

Work items -- issues, tasks and epics.

ActionRequiredOptionalNotes
list—project_id, pql, order_by, per_page, cursor, expand, fields, external_id, external_sourceomit project_id to search the whole workspace; Read-only
list_archivedproject_idpql, order_by, per_page, cursor, expand, fields, external_id, external_sourceRead-only
retrieveproject_id, workitem_idexpand, fields, external_id, external_source, order_byRead-only
retrieve_by_identifierworkitem_identifierexpand, fields, external_id, external_source, order_byidentifier is PROJECT-N, e.g. ENG-42; Read-only
searchqueryexpand, fields, external_id, external_source, order_byRead-only
count—project_id, pql, group_by, sub_group_bycounts the whole workspace unless project_id narrows it; Read-only
createproject_id, nameassignees, labels, type_id, point, description_html, description_stripped, priority, start_date, target_date, sort_order, is_draft, parent, state, estimate_point, external_source, external_id—
updateproject_id, workitem_idname, assignees, labels, type_id, point, description_html, description_stripped, priority, start_date, target_date, sort_order, is_draft, parent, state, estimate_point, external_source, external_idonly the fields you pass are changed
deleteproject_id, workitem_id—Destructive
archiveproject_id, workitem_idarchivearchive defaults to true; pass archive=false to unarchive. Only completed or cancelled items can be archived
manage_assigneeproject_id, workitem_idadd_user_id, remove_user_ideach takes one id or several; the list is merged, not replaced, and removals apply first
manage_labelproject_id, workitem_idadd_label_id, remove_label_ideach takes one id or several; the list is merged, not replaced, and removals apply first

Notes: priority: urgent, high, medium, low, none. UUID fields (assignees, labels, state, parent, type_id) need UUIDs -- list the relevant resource first if you only have a name. description_stripped is plain text and is wrapped into HTML on save; description_html wins if both are given. fields is a sparse fieldset: use project, not project_id, and description_html, not description. count group_by and sub_group_by accept: state_id, state__group, priority, project_id, type_id, labels__id, assignees__id, issue_module__module_id, release_work_items__release_id, cycle_id, milestone_id, created_by, target_date, start_date. These are grouping keys only -- they are not PQL filter fields, and filtering on state__group is rejected.

workitem_comment — Work item comments ​

Comments on a work item.

ActionRequiredOptionalNotes
listproject_id, workitem_idcursor, per_pageRead-only
retrieveproject_id, workitem_id, comment_id—Read-only
createproject_id, workitem_id, comment_htmlaccess, external_source, external_id—
updateproject_id, workitem_id, comment_idcomment_html, access, external_source, external_id—
deleteproject_id, workitem_id, comment_id—Destructive

Notes: comment_html is HTML, e.g. '<p>Looks good.</p>'. access is INTERNAL or EXTERNAL.

workitem_activity — Work item activity ​

Change history for a work item.

ActionRequiredOptionalNotes
listproject_id, workitem_idcursor, per_pageRead-only
retrieveproject_id, workitem_id, activity_id—Read-only

workitem_attachment — Work item attachments ​

Files attached to a work item.

ActionRequiredOptionalNotes
listproject_id, workitem_id—Read-only
readproject_id, workitem_id, attachment_id—returns images and text inline; use download_url for anything else; Read-only
download_urlproject_id, workitem_id, attachment_id—Read-only
upload_from_urlproject_id, workitem_id, urlname—
deleteproject_id, workitem_id, attachment_id—Destructive

Notes: read supports PNG/JPEG/GIF/WEBP up to 5 MB and TXT/MD/CSV/HTML/XML/YAML/JSON up to 1 MB. Get attachment_id from the list action. upload_from_url fetches the file server-side, so the URL must be reachable without authentication and must not resolve to a private address.

External links attached to a work item.

ActionRequiredOptionalNotes
listproject_id, workitem_idcursor, per_pageRead-only
retrieveproject_id, workitem_id, link_id—Read-only
createproject_id, workitem_id, url——
updateproject_id, workitem_id, link_id, url——
deleteproject_id, workitem_id, link_id—Destructive

workitem_relation — Work item relations ​

Relations between work items, and the definitions that type them.

ActionRequiredOptionalNotes
listproject_id, workitem_id—Read-only
createproject_id, workitem_id, workitem_idsrelation_type, relation_definition_id, relation_definition_labelpass relation_type for a dependency, or definition id + label for a custom relation
deleteproject_id, workitem_id, related_workitem_idis_dependencyremoves one relation; dependencies and custom relations are independent, so is_dependency must match the kind that was created (default false); Destructive
list_definitions—is_default, is_activeRead-only
create_definitionnameoutward, inward, is_active, color—
update_definitiondefinition_idname, outward, inward, is_active, color—
delete_definitiondefinition_id—Destructive

Notes: Call list_definitions first and match the user's wording to an entry. A built_in_dependencies value (blocking, blocked_by, start_before, start_after, finish_before, finish_after) goes in relation_type; a custom definition needs its id in relation_definition_id and the matched outward or inward label in relation_definition_label, which sets direction.

work_log — Work logs ​

Time logged against a work item.

ActionRequiredOptionalNotes
listproject_id, workitem_idcursor, per_pageRead-only
createproject_id, workitem_id, durationdescription—
updateproject_id, workitem_id, work_log_idduration, description—
deleteproject_id, workitem_id, work_log_id—Destructive

Notes: duration is in minutes.

Types, properties and estimates ​

Example prompt: “Create an Epic type for ENG, add a Customer impact property, and set up point estimates.”

workitem_type — Work item types ​

Work item types, at project or workspace scope.

ActionRequiredOptionalNotes
list—project_id, cursor, per_pageworkspace scope when project_id is omitted; Read-only
retrieveworkitem_type_idproject_idRead-only
resolveproject_id, name—finds or creates a named type usable in the project; never duplicates
createnameproject_id, description, project_ids, is_active, external_source, external_id—
updateworkitem_type_idproject_id, name, description, project_ids, is_active, external_source, external_idonly the fields you pass are changed
deleteworkitem_type_idproject_idDestructive
import_to_projectproject_id, workitem_type_ids—links workspace types to a project

Notes: Omit project_id to work at workspace scope. A type's id is the type_id for workitem create and the workitem_type_id for workitem_property list. Prefer resolve over create when you just need a usable type such as Epic or Initiative: it handles both modes, matches exactly (case-sensitive, whitespace-stripped) and never duplicates. Where the workspace owns the vocabulary, creating a type on a project is rejected and importing is the only valid path -- resolve does that for you.

workitem_property — Work item properties ​

Custom work item properties and their options.

ActionRequiredOptionalNotes
list—project_id, workitem_type_id, cursor, per_pageno ids lists every workspace property in one call -- the fast path for PQL; Read-only
retrieveworkitem_property_idproject_id, workitem_type_idRead-only
createdisplay_name, property_typeproject_id, workitem_type_id, description, relation_type, is_required, is_multi, is_active, default_value, options, display_format, external_source, external_id—
updateworkitem_property_idproject_id, workitem_type_id, display_name, property_type, description, relation_type, is_required, is_multi, is_active, default_value, display_format, external_source, external_idonly the fields you pass are changed
deleteworkitem_property_idproject_id, workitem_type_idDestructive
manage_type_propertiesworkitem_type_idproject_id, attach_ids, detach_idsomit project_id where the workspace owns types; detach removes the association only, it does not delete the property
list_optionsproperty_idproject_idRead-only
retrieve_optionproperty_id, option_idproject_idRead-only
create_optionproperty_id, nameproject_id, description, color, is_default, external_source, external_id—
update_optionproperty_id, option_idproject_id, name, description, color, is_default, external_source, external_id—
delete_optionproperty_id, option_idproject_idDestructive
get_valueproject_id, workitem_id, property_id—Read-only
set_valueproject_id, workitem_id, property_id, valueexternal_source, external_idupsert; for a multi-value property this replaces every existing value
delete_valueproject_id, workitem_id, property_id—Destructive

Notes: property_type is one of: TEXT, DATETIME, DECIMAL, BOOLEAN, OPTION, RELATION, URL, EMAIL, FILE, FORMULA. relation_type (for RELATION properties) is one of: ISSUE, USER, RELEASE, RICH_TEXT. A property id is what goes in a PQL cf["<id>"] filter; for OPTION properties the value is an option id. options takes a JSON array of {"name", "color", "is_default"} objects. display_format is required by TEXT (single-line, multi-line, readonly) and DATETIME (MMM dd, yyyy, dd/MM/yyyy, MM/dd/yyyy, yyyy/MM/dd) properties. A property lives with its type: where the workspace owns types, pass workitem_type_id without project_id and it is created in the workspace catalogue and associated for you. list resolves scope in this order: project_id + workitem_type_id is type-scoped (falling back to project-flat then workspace when empty), project_id alone is every property in the project, and neither is every workspace property. To filter by property name in PQL, call list with no ids -- one workspace-wide fetch beats iterating types -- then match display_name in memory to get the id for a cf[] condition. The *_value actions read and write a property on one work item: pass value in the type the property expects -- TEXT/URL/EMAIL/FILE as a string; DATETIME as a YYYY-MM-DD or YYYY-MM-DD HH:MM:SS string; DECIMAL as a number; BOOLEAN as true or false; OPTION and RELATION as an option or record id string, or an array of them when the property is multi-value. Send the value's own type, not a stringified form: "007" stays the text 007, whereas 7 is the number.

project_estimate — Project estimates ​

A project's estimate system and its points.

ActionRequiredOptionalNotes
retrieveproject_id—a project has at most one estimate; Read-only
createproject_id, nametype, description, last_used, external_source, external_id—
updateproject_idname, description, external_source, external_id—
deleteproject_id—Destructive
linkproject_id, estimate_id—makes that estimate the project's active one
list_pointsproject_id, estimate_id—Read-only
create_pointsproject_id, estimate_id, points——
update_pointproject_id, estimate_id, estimate_point_idvalue, key, description, external_source, external_id—
delete_pointproject_id, estimate_id, estimate_point_id—Destructive

Notes: type is one of: categories, points, time. A point's value is its display label ("5", "XL") and its key is the sort order. points takes a JSON array such as [{"value": "1", "key": 0}]. To set a work item's estimate: retrieve to get the estimate_id, list_points to see the available values, then pass the chosen point's id to workitem update as estimate_point.

Planning ​

Example prompt: “Move unfinished work from Sprint 14 to Sprint 15, then count it by priority.”

cycle — Cycles ​

Cycles (time-boxed iterations) in a project.

ActionRequiredOptionalNotes
listproject_idarchived, status, cursor, per_page, order_byRead-only
retrieveproject_id, cycle_id—Read-only
createproject_id, name, owned_bydescription, start_date, end_date, timezone, external_source, external_id—
updateproject_id, cycle_idname, description, start_date, end_date, owned_by, timezone, external_source, external_idonly the fields you pass are changed
deleteproject_id, cycle_id—Destructive
list_workitemsproject_id, cycle_idpql, order_by, cursor, per_page, expand, fieldsRead-only
manage_workitemsproject_id, cycle_idadd_ids, remove_idspass at least one of add_ids or remove_ids; returns nothing, read back with list_workitems
transfer_workitemsproject_id, cycle_id, new_cycle_id—moves everything to new_cycle_id
completeproject_id, cycle_id—sets end_date to today
archiveproject_id, cycle_id—ends the cycle first if it is still running
unarchiveproject_id, cycle_id——

Notes: status filters active cycles: current, upcoming, completed, draft, incomplete; it is ignored when archived is true. Dates are ISO 8601 (YYYY-MM-DD). owned_by is a member id. Optional Plane Query Language (PQL) filter. Examples: priority = "urgent" AND assignee = currentUser(), stateGroup IN openStates() AND isOverdue(). UUID fields (project, assignee, state, label, cycle, module, type, milestone, createdBy) need UUIDs — resolve a name to its UUID first if you only have a name or short identifier (e.g. LSS → project list and match identifier to get id). Call get_pql_reference for full PQL syntax before composing complex queries.

module — Modules ​

Modules (feature groupings) in a project.

ActionRequiredOptionalNotes
listproject_idarchived, cursor, per_page, order_byRead-only
retrieveproject_id, module_id—Read-only
createproject_id, namedescription, start_date, target_date, status, lead, members, external_source, external_id—
updateproject_id, module_idname, description, start_date, target_date, status, lead, members, external_source, external_idonly the fields you pass are changed
deleteproject_id, module_id—Destructive
list_workitemsproject_id, module_idpql, order_by, cursor, per_page, expand, fieldsRead-only
manage_workitemsproject_id, module_idadd_ids, remove_idspass at least one of add_ids or remove_ids; returns nothing, read back with list_workitems
archiveproject_id, module_id——
unarchiveproject_id, module_id——

Notes: status is one of: backlog, planned, in-progress, paused, completed, cancelled. Dates are ISO 8601 (YYYY-MM-DD). lead and members are member ids. Optional Plane Query Language (PQL) filter. Examples: priority = "urgent" AND assignee = currentUser(), stateGroup IN openStates() AND isOverdue(). UUID fields (project, assignee, state, label, cycle, module, type, milestone, createdBy) need UUIDs — resolve a name to its UUID first if you only have a name or short identifier (e.g. LSS → project list and match identifier to get id). Call get_pql_reference for full PQL syntax before composing complex queries.

milestone — Milestones ​

Milestones within a project.

ActionRequiredOptionalNotes
listproject_idcursor, per_pageRead-only
retrieveproject_id, milestone_id—Read-only
createproject_id, titletarget_date, external_source, external_id—
updateproject_id, milestone_idtitle, target_date, external_source, external_idonly the fields you pass are changed
deleteproject_id, milestone_id—Destructive
list_workitemsproject_id, milestone_idcursor, per_pageRead-only
manage_workitemsproject_id, milestone_idadd_ids, remove_idspass at least one of add_ids or remove_ids; returns nothing, read back with list_workitems

Notes: target_date is ISO 8601 (YYYY-MM-DD). add_ids and remove_ids take work item UUIDs.

initiative — Initiatives ​

Workspace initiatives.

ActionRequiredOptionalNotes
list——returns every initiative; this endpoint does not paginate; Read-only
retrieveinitiative_id—Read-only
createnamedescription_html, start_date, end_date, state, lead—
updateinitiative_idname, description_html, start_date, end_date, state, leadonly the fields you pass are changed
deleteinitiative_id—Destructive
list_projectsinitiative_idcursor, per_pageRead-only
add_projectsinitiative_id, project_ids—returns nothing, read back with list_projects
remove_projectsinitiative_id, project_ids—returns nothing, read back with list_projects; Destructive

Notes: state is one of: DRAFT, PLANNED, ACTIVE, COMPLETED, CLOSED. Dates are ISO 8601 (YYYY-MM-DD). lead is a member id. project_ids takes project UUIDs.

Releases ​

Example prompt: “Create release v1.8.0, add ENG-40 through ENG-45, and draft its changelog.”

release — Releases ​

Releases in the workspace.

ActionRequiredOptionalNotes
list—cursor, per_pageRead-only
retrieverelease_id—Read-only
createnamedescription_html, status, release_date, target_date, tag_id, lead_id, is_prerelease, external_source, external_id—
updaterelease_idname, description_html, status, release_date, target_date, tag_id, lead_id, is_prereleaseonly the fields you pass are changed
deleterelease_id—Destructive
get_changelogrelease_id—Read-only
update_changelogrelease_iddescription_html, description_stripped—
list_workitemsrelease_idcursor, per_pageRead-only
manage_workitemsrelease_idadd_ids, remove_idspass at least one of add_ids or remove_ids; returns nothing, read back with list_workitems

Notes: status is one of: unreleased, released, cancelled, defaulting to unreleased. release_date is what the Plane UI labels "Target date" (YYYY-MM-DD); target_date is a separate stored date that the UI does not show. tag_id comes from release_tag list, lead_id from member list_workspace. For the changelog pass description_html, or description_stripped for plain text. A changelog is created empty with the release, so get_changelog always returns one.

release_tag — Release tags ​

Release tags (version markers).

ActionRequiredOptionalNotes
list—cursor, per_pageRead-only
retrievetag_id—Read-only
createversiondescription, commit_hash, git_tag—
updatetag_idversion, description, commit_hash, git_tagonly the fields you pass are changed
deletetag_id—Destructive

Notes: version is a version string such as "v1.2.0". A tag id is what release takes as tag_id.

release_label — Release labels ​

Release labels, workspace palette and per release.

ActionRequiredOptionalNotes
list—release_id, cursor, per_pagethe workspace palette unless release_id is given; Read-only
createnamecolor, sort_orderadds to the workspace palette
updatelabel_idname, color, sort_order—
deletelabel_id—removes it from the palette entirely; Destructive
attachrelease_id, label_ids—returns nothing, read back with list
detachrelease_id, label_ids—returns nothing, read back with list; Destructive

Notes: color is a hex code such as #4E5355. label_ids takes palette label ids. Detaching a label leaves it in the palette; delete removes it for everyone.

Projects and workspace ​

Example prompt: “List my active projects and show the work currently assigned to me.”

project — Projects ​

Projects in a workspace.

ActionRequiredOptionalNotes
list—cursor, per_page, order_bytrimmed fields; use retrieve for full detail; Read-only
retrieveproject_id—Read-only
createname, identifierdescription, project_lead, default_assignee, emoji, cover_image, timezone, archive_in, close_in, external_source, external_id—
updateproject_idname, description, identifier, project_lead, default_assignee, emoji, cover_image, network, timezone, archive_in, close_in, default_state, estimate, is_time_tracking_enabled, external_source, external_idonly the fields you pass are changed
deleteproject_id—Destructive
archiveproject_id——
unarchiveproject_id——
worklog_summaryproject_id—Read-only
get_featuresproject_id—Read-only
update_featuresproject_idmodules, cycles, views, pages, intakes, workitem_types, epics, parallel_cycles, project_updates, workflowstoggles project features on or off

Notes: identifier is the short work item prefix, such as ENG. network is 0 for secret or 2 for public. project_lead and default_assignee are member ids -- get them from member list_workspace. Feature toggles are booleans; omitted ones are left as they are.

state — Workflow states ​

Workflow states within a project.

ActionRequiredOptionalNotes
listproject_idcursor, per_pageRead-only
retrieveproject_id, state_id—Read-only
createproject_id, name, colordescription, sequence, group, is_triage, default, external_source, external_id—
updateproject_id, state_idname, color, description, sequence, group, is_triage, defaultonly the fields you pass are changed
deleteproject_id, state_id—Destructive

Notes: group is one of: backlog, unstarted, started, completed, cancelled, triage. color is a hex code such as #EF4444.

label — Labels ​

Labels within a project.

ActionRequiredOptionalNotes
listproject_idcursor, per_pageRead-only
retrieveproject_id, label_id—Read-only
createproject_id, namecolor, description, parent, sort_order, external_source, external_id—
updateproject_id, label_idname, color, description, parent, sort_order, external_source, external_idonly the fields you pass are changed
deleteproject_id, label_id—Destructive

Notes: color is a hex code such as #EF4444. parent is the UUID of another label, for nesting.

member — Members and roles ​

Workspace and project members, and role definitions.

ActionRequiredOptionalNotes
me——the authenticated user; Read-only
list_workspace—first_name, last_name, email, display_name, role_slug, is_active, is_bot, cursor, per_page, order_byname filters match case-insensitively and combine with AND; Read-only
list_projectproject_id—Read-only
list_roles—namespace, cursor, per_pageRead-only
retrieve_rolerole_id—Read-only

Notes: namespace is 'workspace' (Owner/Admin/Member/Guest) or 'project' (Admin/Contributor/Commenter/Guest); omit for both. A role slug is stable but not globally unique -- key on (namespace, slug).

workspace — Workspace settings ​

Workspace-level feature flags.

ActionRequiredOptionalNotes
get_features——feature flags for the current workspace; Read-only
update_features—project_grouping, initiatives, teams, customers, wiki, pionly the flags you pass are changed

Notes: For a project's feature flags use project get_features and project update_features.

intake — Intake queue ​

The intake (triage) queue for a project.

ActionRequiredOptionalNotes
listproject_idcursor, per_pageRead-only
retrieveproject_id, workitem_id—Read-only
createproject_id, namedescription_html, priority—
updateproject_id, workitem_idstatus, snoozed_till, duplicate_to, source, source_emailpass status to make a triage decision
deleteproject_id, workitem_id—Destructive

Notes: workitem_id is the issue field of an intake record, not the record's own id. status: -2 pending, -1 declined, 0 snoozed (needs snoozed_till), 1 accepted, 2 duplicate (needs duplicate_to). priority is one of: urgent, high, medium, low, none.

page — Pages ​

Pages at workspace or project scope.

ActionRequiredOptionalNotes
list—project_id, cursor, per_pageworkspace pages unless project_id is given; Read-only
retrievepage_idproject_idRead-only
createname, description_htmlproject_id, access, color, is_locked, external_source, external_id—
list_workitem_pagesproject_id, workitem_id—Read-only
attach_to_workitemproject_id, workitem_id, page_id——
detach_from_workitemproject_id, workitem_id, workitem_page_id—workitem_page_id is the link id from list_workitem_pages, not the page id; Destructive

Notes: description_html is the page body as HTML. access is the page access level. Omit project_id to work with workspace-level pages.

Customers ​

Example prompt: “Create Acme as a customer and link its checkout request to the relevant work items.”

customer — Customers ​

Customers in the workspace.

ActionRequiredOptionalNotes
list—query, cursor, per_pageRead-only
retrievecustomer_id—Read-only
createnamedescription_html, email, website_url, domain, employees, stage, contract_status, revenue, external_source, external_idupsert: matches on external_source + external_id, else on name, so it never duplicates
updatecustomer_idname, description_html, email, website_url, domain, employees, stage, contract_status, revenue, external_source, external_idonly the fields you pass are changed
delete—customer_id, external_source, external_idaddress by customer_id, or by external_source plus external_id; Destructive
list_workitemscustomer_idcustomer_request_id, searchRead-only
manage_workitemscustomer_idlink_ids, unlink_ids, customer_request_idpass at least one of link_ids or unlink_ids; returns nothing, read back with list_workitems

Notes: domain is the customer's industry, shown as "Industry" in Plane -- the website goes in website_url. stage renders as one of: lead, sales_qualified_lead, contract_negotiation, closed_won, closed_lost. contract_status renders as one of: active, pre_contract, signed, inactive. Both are stored free-form; anything else is kept but not displayed. revenue is annual revenue as a string.

customer_request — Customer requests ​

Requests raised by a customer.

ActionRequiredOptionalNotes
listcustomer_idquery, cursor, per_pageRead-only
retrievecustomer_id, request_id—Read-only
createcustomer_id, namedescription_html, link, workitem_idsworkitem_ids can only be set here; change links afterwards with customer manage_workitems
updatecustomer_id, request_idname, description_html, linkonly the fields you pass are changed
deletecustomer_id, request_id—Destructive

Notes: link is a URL associated with the request. workitem_ids is never echoed back -- read the links with customer list_workitems.

customer_property — Customer properties ​

Custom properties on customers.

ActionRequiredOptionalNotes
list—cursor, per_pageRead-only
retrieveproperty_id—Read-only
createdisplay_name, property_typerelation_type, description, is_required, is_multi, is_active, default_value, options, display_format, external_source, external_id—
updateproperty_iddisplay_name, relation_type, description, is_required, is_multi, is_active, default_value, options, external_source, external_idonly the fields you pass are changed
deleteproperty_id—Destructive
get_valuescustomer_idproperty_idomit property_id to read them all; Read-only
set_valuescustomer_id, values—replaces the values of the properties named; others keep theirs

Notes: display_name is the user-facing label and must be unique in the workspace -- the stored name is derived from it. property_type is one of: TEXT, DATETIME, DECIMAL, BOOLEAN, OPTION, RELATION, URL, EMAIL, FILE, FORMULA. relation_type (required for RELATION) is one of: ISSUE, USER, RELEASE, RICH_TEXT. display_format is required by TEXT (single-line, multi-line, readonly) and DATETIME (MMM dd, yyyy, dd/MM/yyyy, MM/dd/yyyy, yyyy/MM/dd). options takes a JSON array of {"name", "description", "is_default"} objects. values takes a JSON object of property id to a list of strings, e.g. {"<id>": ["Enterprise"]} -- every value is a string whatever the property type, and a single-item list unless is_multi.

Query ​

Example prompt: “Show the PQL syntax for overdue, in-progress work assigned to the current user.”

get_pql_reference — PQL reference ​

Plane Query Language (PQL) syntax reference. Call this before composing a pql filter for the workitem list, list_archived or count actions.

Takes detail: full (default) or brief. This tool has no action parameter.

Notes: detail 'full' gives operators, functions, common mistakes and worked examples; 'brief' gives the compact field and operator quick reference.

Retired tool names ​

Plane MCP server 0.3.0 consolidated 177 per-operation tools into 28 resource tools. Of those 177 names, the 169 aliases below still resolve, stay hidden from tool listings, and accept their original parameter names; get_pql_reference is unchanged; and seven cannot be mapped to one action and instead return a message naming the replacement. The server logs each alias resolution.

Names without an alias ​

Retired nameUse instead
manage_customer_work_itemscustomer manage_workitems with link_ids or unlink_ids
manage_cycle_archivecycle archive or cycle unarchive
manage_initiative_projectsinitiative add_projects or initiative remove_projects
manage_module_archivemodule archive or module unarchive
manage_project_archiveproject archive or project unarchive
manage_release_labelsrelease_label attach or release_label detach
manage_release_work_itemsrelease manage_workitems with add_ids or remove_ids

Alias table ​

Show all 169 aliases

customer ​

Retired nameNow
list_customerscustomer list
retrieve_customercustomer retrieve
create_customercustomer create
update_customercustomer update
delete_customercustomer delete
list_customer_work_itemscustomer list_workitems

customer_property ​

Retired nameNow
list_customer_propertiescustomer_property list
retrieve_customer_propertycustomer_property retrieve
create_customer_propertycustomer_property create
update_customer_propertycustomer_property update
delete_customer_propertycustomer_property delete
get_customer_property_valuescustomer_property get_values
set_customer_property_valuescustomer_property set_values

customer_request ​

Retired nameNow
list_customer_requestscustomer_request list
retrieve_customer_requestcustomer_request retrieve
create_customer_requestcustomer_request create
update_customer_requestcustomer_request update
delete_customer_requestcustomer_request delete

cycle ​

Retired nameNow
list_cyclescycle list
retrieve_cyclecycle retrieve
create_cyclecycle create
update_cyclecycle update
delete_cyclecycle delete
list_cycle_work_itemscycle list_workitems
manage_cycle_work_itemscycle manage_workitems
transfer_cycle_work_itemscycle transfer_workitems
complete_cyclecycle complete

initiative ​

Retired nameNow
list_initiativesinitiative list
retrieve_initiativeinitiative retrieve
create_initiativeinitiative create
update_initiativeinitiative update
delete_initiativeinitiative delete
list_initiative_projectsinitiative list_projects

intake ​

Retired nameNow
list_intake_work_itemsintake list
retrieve_intake_work_itemintake retrieve
create_intake_work_itemintake create
update_intake_work_itemintake update
delete_intake_work_itemintake delete

label ​

Retired nameNow
list_labelslabel list
retrieve_labellabel retrieve
create_labellabel create
update_labellabel update
delete_labellabel delete

member ​

Retired nameNow
get_memember me
get_workspace_membersmember list_workspace
get_project_membersmember list_project
list_rolesmember list_roles
retrieve_rolemember retrieve_role

milestone ​

Retired nameNow
list_milestonesmilestone list
retrieve_milestonemilestone retrieve
create_milestonemilestone create
update_milestonemilestone update
delete_milestonemilestone delete
list_milestone_work_itemsmilestone list_workitems
manage_milestone_work_itemsmilestone manage_workitems

module ​

Retired nameNow
list_modulesmodule list
retrieve_modulemodule retrieve
create_modulemodule create
update_modulemodule update
delete_modulemodule delete
list_module_work_itemsmodule list_workitems
manage_module_work_itemsmodule manage_workitems

page ​

Retired nameNow
list_pagespage list
retrieve_pagepage retrieve
create_pagepage create
list_work_item_pagespage list_workitem_pages
attach_page_to_work_itempage attach_to_workitem
detach_page_from_work_itempage detach_from_workitem

project ​

Retired nameNow
list_projectsproject list
retrieve_projectproject retrieve
create_projectproject create
update_projectproject update
delete_projectproject delete
get_project_worklog_summaryproject worklog_summary
update_project_featuresproject update_features

project_estimate ​

Retired nameNow
get_project_estimateproject_estimate retrieve
create_project_estimateproject_estimate create
update_project_estimateproject_estimate update
delete_project_estimateproject_estimate delete
link_estimate_to_projectproject_estimate link
list_project_estimate_pointsproject_estimate list_points
create_project_estimate_pointsproject_estimate create_points
update_project_estimate_pointproject_estimate update_point
delete_project_estimate_pointproject_estimate delete_point

release ​

Retired nameNow
list_releasesrelease list
retrieve_releaserelease retrieve
create_releaserelease create
update_releaserelease update
delete_releaserelease delete
get_release_changelogrelease get_changelog
update_release_changelogrelease update_changelog
list_release_work_itemsrelease list_workitems

release_label ​

Retired nameNow
list_release_labelsrelease_label list
create_release_labelrelease_label create
update_release_labelrelease_label update
delete_release_labelrelease_label delete

release_tag ​

Retired nameNow
list_release_tagsrelease_tag list
retrieve_release_tagrelease_tag retrieve
create_release_tagrelease_tag create
update_release_tagrelease_tag update
delete_release_tagrelease_tag delete

state ​

Retired nameNow
list_statesstate list
retrieve_statestate retrieve
create_statestate create
update_statestate update
delete_statestate delete

work_log ​

Retired nameNow
list_work_logswork_log list
create_work_logwork_log create
update_work_logwork_log update
delete_work_logwork_log delete

workitem ​

Retired nameNow
list_work_itemsworkitem list
list_archived_work_itemsworkitem list_archived
retrieve_work_itemworkitem retrieve
retrieve_work_item_by_identifierworkitem retrieve_by_identifier
search_work_itemsworkitem search
count_work_itemsworkitem count
create_work_itemworkitem create
update_work_itemworkitem update
delete_work_itemworkitem delete
manage_work_item_archiveworkitem archive
manage_work_item_assigneeworkitem manage_assignee
manage_work_item_labelworkitem manage_label

workitem_activity ​

Retired nameNow
list_work_item_activitiesworkitem_activity list
retrieve_work_item_activityworkitem_activity retrieve

workitem_attachment ​

Retired nameNow
list_work_item_attachmentsworkitem_attachment list
read_work_item_attachmentworkitem_attachment read
get_work_item_attachment_download_urlworkitem_attachment download_url
upload_work_item_attachment_from_urlworkitem_attachment upload_from_url
delete_work_item_attachmentworkitem_attachment delete

workitem_comment ​

Retired nameNow
list_work_item_commentsworkitem_comment list
retrieve_work_item_commentworkitem_comment retrieve
create_work_item_commentworkitem_comment create
update_work_item_commentworkitem_comment update
delete_work_item_commentworkitem_comment delete
Retired nameNow
list_work_item_linksworkitem_link list
retrieve_work_item_linkworkitem_link retrieve
create_work_item_linkworkitem_link create
update_work_item_linkworkitem_link update
delete_work_item_linkworkitem_link delete

workitem_property ​

Retired nameNow
list_work_item_propertiesworkitem_property list
retrieve_work_item_propertyworkitem_property retrieve
create_work_item_propertyworkitem_property create
update_work_item_propertyworkitem_property update
delete_work_item_propertyworkitem_property delete
manage_work_item_type_propertiesworkitem_property manage_type_properties
list_work_item_property_optionsworkitem_property list_options
retrieve_work_item_property_optionworkitem_property retrieve_option
create_work_item_property_optionworkitem_property create_option
update_work_item_property_optionworkitem_property update_option
delete_work_item_property_optionworkitem_property delete_option
get_work_item_property_valueworkitem_property get_value
set_work_item_property_valueworkitem_property set_value
delete_work_item_property_valueworkitem_property delete_value

workitem_relation ​

Retired nameNow
list_work_item_relationsworkitem_relation list
create_work_item_relationworkitem_relation create
remove_work_item_relationworkitem_relation delete
list_work_item_relation_definitionsworkitem_relation list_definitions
create_work_item_relation_definitionworkitem_relation create_definition
update_work_item_relation_definitionworkitem_relation update_definition
delete_work_item_relation_definitionworkitem_relation delete_definition

workitem_type ​

Retired nameNow
list_work_item_typesworkitem_type list
retrieve_work_item_typeworkitem_type retrieve
resolve_work_item_typeworkitem_type resolve
create_work_item_typeworkitem_type create
update_work_item_typeworkitem_type update
delete_work_item_typeworkitem_type delete
import_work_item_types_to_projectworkitem_type import_to_project

workspace ​

Retired nameNow
get_featuresworkspace get_features
update_workspace_featuresworkspace update_features

See also ​