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
listproject_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
countproject_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_idDestructive
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_idRead-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_idDestructive

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_idRead-only

workitem_attachment — Work item attachments

Files attached to a work item.

ActionRequiredOptionalNotes
listproject_id, workitem_idRead-only
readproject_id, workitem_id, attachment_idreturns images and text inline; use download_url for anything else; Read-only
download_urlproject_id, workitem_id, attachment_idRead-only
upload_from_urlproject_id, workitem_id, urlname
deleteproject_id, workitem_id, attachment_idDestructive

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_idRead-only
createproject_id, workitem_id, url
updateproject_id, workitem_id, link_id, url
deleteproject_id, workitem_id, link_idDestructive

workitem_relation — Work item relations

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

ActionRequiredOptionalNotes
listproject_id, workitem_idRead-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_definitionsis_default, is_activeRead-only
create_definitionnameoutward, inward, is_active, color
update_definitiondefinition_idname, outward, inward, is_active, color
delete_definitiondefinition_idDestructive

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_idDestructive

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
listproject_id, cursor, per_pageworkspace scope when project_id is omitted; Read-only
retrieveworkitem_type_idproject_idRead-only
resolveproject_id, namefinds 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_idslinks 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
listproject_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_idRead-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_idDestructive

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_ida 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_idDestructive
linkproject_id, estimate_idmakes that estimate the project's active one
list_pointsproject_id, estimate_idRead-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_idDestructive

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_idRead-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_idDestructive
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_idmoves everything to new_cycle_id
completeproject_id, cycle_idsets end_date to today
archiveproject_id, cycle_idends 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. LSSproject 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_idRead-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_idDestructive
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. LSSproject 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_idRead-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_idDestructive
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
listreturns every initiative; this endpoint does not paginate; Read-only
retrieveinitiative_idRead-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_idDestructive
list_projectsinitiative_idcursor, per_pageRead-only
add_projectsinitiative_id, project_idsreturns nothing, read back with list_projects
remove_projectsinitiative_id, project_idsreturns 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
listcursor, per_pageRead-only
retrieverelease_idRead-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_idDestructive
get_changelogrelease_idRead-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
listcursor, per_pageRead-only
retrievetag_idRead-only
createversiondescription, commit_hash, git_tag
updatetag_idversion, description, commit_hash, git_tagonly the fields you pass are changed
deletetag_idDestructive

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
listrelease_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_idremoves it from the palette entirely; Destructive
attachrelease_id, label_idsreturns nothing, read back with list
detachrelease_id, label_idsreturns 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
listcursor, per_page, order_bytrimmed fields; use retrieve for full detail; Read-only
retrieveproject_idRead-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_idDestructive
archiveproject_id
unarchiveproject_id
worklog_summaryproject_idRead-only
get_featuresproject_idRead-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_idRead-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_idDestructive

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_idRead-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_idDestructive

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
methe authenticated user; Read-only
list_workspacefirst_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_idRead-only
list_rolesnamespace, cursor, per_pageRead-only
retrieve_rolerole_idRead-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_featuresfeature flags for the current workspace; Read-only
update_featuresproject_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_idRead-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_idDestructive

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
listproject_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_idRead-only
attach_to_workitemproject_id, workitem_id, page_id
detach_from_workitemproject_id, workitem_id, workitem_page_idworkitem_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
listquery, cursor, per_pageRead-only
retrievecustomer_idRead-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
deletecustomer_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_idRead-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_idDestructive

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
listcursor, per_pageRead-only
retrieveproperty_idRead-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_idDestructive
get_valuescustomer_idproperty_idomit property_id to read them all; Read-only
set_valuescustomer_id, valuesreplaces 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