Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LOG_USER_INFONoWhen true, include user info in logsfalse
PLANE_API_KEYNoAPI key for authentication
PLANE_BASE_URLNoBase URL for Plane APIhttps://api.plane.so
PLANE_ACCESS_TOKENNoAccess token for authentication (alternative to API key)
PLANE_WORKSPACE_SLUGNoWorkspace slug identifier
PLANE_OAUTH_ALLOWED_REDIRECT_URISNoComma-separated redirect URI patterns appended to the built-in allowlist

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_projectsA

List projects in a workspace (paginated).

Args: cursor: Prior response's next_cursor; omit for first page. per_page: Results per page (1-100, default 100). order_by: Sort field; prefix '-' for descending.

Returns: Paginated envelope with full project objects: results + total_count, next_cursor, next_page_results.

create_projectA

Create a new project.

Args: workspace_slug: The workspace slug identifier name: Project name identifier: Project identifier (e.g., "MP" for "My Project") description: Project description project_lead: UUID of the project lead user default_assignee: UUID of the default assignee user emoji: Emoji for the project cover_image: Cover image URL or asset ID module_view: Enable module view cycle_view: Enable cycle view issue_views_view: Enable issue views view page_view: Enable page view intake_view: Enable intake view guest_view_all_features: Allow guests to view all features archive_in: Days until auto-archive close_in: Days until auto-close timezone: Project timezone external_source: External system source name external_id: External system identifier is_issue_type_enabled: Enable issue types

Returns: Created Project object

retrieve_projectB

Retrieve a project by ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project

Returns: Project object

update_projectA

Update a project by ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project name: Project name description: Project description project_lead: UUID of the project lead user default_assignee: UUID of the default assignee user identifier: Project identifier emoji: Emoji for the project cover_image: Cover image URL or asset ID network: Project visibility (0=secret, 2=public) module_view: Enable module view cycle_view: Enable cycle view issue_views_view: Enable issue views view page_view: Enable page view intake_view: Enable intake view guest_view_all_features: Allow guests to view all features archive_in: Days until auto-archive close_in: Days until auto-close timezone: Project timezone external_source: External system source name external_id: External system identifier is_issue_type_enabled: Enable issue types is_time_tracking_enabled: Enable time tracking default_state: UUID of the default state estimate: Estimate configuration

Returns: Updated Project object

delete_projectB

Delete a project by ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project

manage_project_archiveA

Archive or unarchive a project.

Archived projects are hidden from active project lists but not deleted. All work items, cycles, and modules are preserved.

Args: project_id: UUID of the project archive: True to archive the project, False to unarchive it

get_project_worklog_summaryC

Get work log summary for a project.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project

Returns: List of ProjectWorklogSummary objects containing work item IDs and durations

get_project_membersA

List members of a project (filterable).

Optional filters first_name/last_name/email/display_name (case-insensitive contains), role_slug (exact), is_active, is_bot — combined with AND.

Args: project_id: UUID of the project. order_by: Sort field; prefix '-' for descending.

Returns: Paginated envelope: results (members incl. role, role_slug, is_active, is_bot). Self-hosted Plane returns all members in a single page, so next_page_results is always false.

update_project_featuresA

Update features of a project.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project modules: Enable/disable modules feature cycles: Enable/disable cycles feature views: Enable/disable views feature pages: Enable/disable pages feature intakes: Enable/disable intakes feature work_item_types: Enable/disable work item types feature

Returns: Updated ProjectFeature object

get_project_estimateA

Get the estimate configuration for a project.

Returns the active estimate system including its ID, which is required to call list_project_estimate_points.

Args: project_id: UUID of the project

Returns: Estimate object with id, name, and type fields

list_project_estimate_pointsA

List all valid estimate points for a project.

Use this to discover the available estimate point UUIDs before calling update_work_item with an estimate_point value. Each EstimatePoint has an id (UUID to pass to update_work_item) and a value (display label such as "1", "2", "3", "5", "8" or "XS", "S", "M", "L", "XL").

Workflow: 1. Call get_project_estimate to get the estimate_id 2. Call list_project_estimate_points with that estimate_id 3. Pick the EstimatePoint whose value matches the user's intent 4. Pass that EstimatePoint.id to update_work_item(estimate_point=...)

Args: project_id: UUID of the project estimate_id: UUID of the estimate (from get_project_estimate)

Returns: List of EstimatePoint objects, each with id and value fields

create_project_estimateA

Create a new estimate for a project.

Args: project_id: UUID of the project name: Name of the estimate (e.g., "Story Points", "T-Shirt Sizes") type: Estimate type — "categories", "points", or "time" description: Optional description last_used: Whether this becomes the active estimate (default True) external_id: External system identifier external_source: External system source name

Returns: Created Estimate object

update_project_estimateB

Update the estimate for a project.

Args: project_id: UUID of the project name: New name for the estimate description: New description external_id: External system identifier external_source: External system source name

Returns: Updated Estimate object

delete_project_estimateB

Delete the estimate for a project.

Args: project_id: UUID of the project

link_estimate_to_projectA

Link an estimate to a project, making it the active estimate system.

Args: project_id: UUID of the project estimate_id: UUID of the estimate to activate

Returns: Updated Project object

create_project_estimate_pointsA

Create estimate points for a project estimate.

Each point dict may have: value (required, max 20 chars), key (int), description, external_id, external_source.

Example: points=[ {"value": "1", "key": 0}, {"value": "2", "key": 1}, {"value": "3", "key": 2}, {"value": "5", "key": 3}, {"value": "8", "key": 4}, ]

Args: project_id: UUID of the project estimate_id: UUID of the estimate points: List of point definitions

Returns: List of created EstimatePoint objects

update_project_estimate_pointA

Update a single estimate point.

Args: project_id: UUID of the project estimate_id: UUID of the estimate estimate_point_id: UUID of the estimate point to update value: New display value (max 20 chars, e.g. "XL", "13") key: New sort key (integer) description: New description external_id: External system identifier external_source: External system source name

Returns: Updated EstimatePoint object

delete_project_estimate_pointA

Delete a single estimate point.

Args: project_id: UUID of the project estimate_id: UUID of the estimate estimate_point_id: UUID of the estimate point to delete

list_work_itemsA

List work items with optional PQL filtering.

Omit project_id to list across the entire workspace. Pass project_id to scope results to a single project.

For UUID fields (assignee, state, label, cycle, module, type, milestone) call the relevant list tool first to get the UUID.

Args: project_id: UUID of the project. Omit for workspace-wide results. pql: PQL filter. See field description for syntax. order_by: Sort field; prefix - for descending (e.g. -created_at). per_page: 1-100, default 25. cursor: From previous response's next_cursor. expand: Comma-separated relations to expand (e.g. assignees,labels,state). fields: Sparse fieldset — the response contains only the fields you name here (plus pagination metadata). Available: id, name, sequence_id, priority, state, project, assignees, labels, type_id, description_html, start_date, target_date, created_at, updated_at, created_by, is_draft. Use project (not project_id) and description_html (there is no description field); a misnamed field is simply absent from the result. external_id / external_source: Filter by external system.

Returns: results: Paginated list of work items. total_count: True DB total, not page-bounded — use for counts. next_cursor: Cursor for the next page. prev_cursor: Cursor for the previous page.

count_work_itemsA

Count work items across the workspace with optional grouping.

Use this for analytics — "how many urgent items?", "distribution by state?" — without fetching full work item payloads.

Args: pql: PQL filter to scope the count (e.g. 'priority = "urgent"'). group_by: Dimension to group counts by. Supported values: 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. sub_group_by: Second dimension for nested grouping (requires group_by).

Returns: grouped_by: The group_by field used (null if none). sub_grouped_by: The sub_group_by field used (null if none). total_count: Total matching work items. grouped_counts: Dict of group_key → {count} or {count, sub_grouped_counts} when sub_group_by is set. Keys are UUIDs for FK fields, plain strings for priority/state__group, ISO dates for target_date/start_date, "None" for unset values.

create_work_itemA

Create a new work item.

Args: project_id: UUID of the project name: Work item name (required) assignees: List of user IDs to assign to the work item labels: List of label IDs to attach to the work item type_id: UUID of the work item type point: Story point value description_html: HTML description of the work item description_stripped: Plain text description. Convenience only — it is wrapped into HTML and stored as description_html (Plane derives description_stripped server-side). Ignored if description_html is set. priority: Priority level (urgent, high, medium, low, none) start_date: Start date (ISO 8601 format) target_date: Target/end date (ISO 8601 format) sort_order: Sort order value is_draft: Whether the work item is a draft external_source: External system source name external_id: External system identifier parent: UUID of the parent work item state: UUID of the state estimate_point: Estimate point value type: Work item type identifier

Returns: Created WorkItem object

retrieve_work_itemB

Retrieve a work item by ID.

Args: project_id: UUID of the project work_item_id: UUID of the work item expand: Comma-separated fields to expand (e.g., "assignees,labels,state") fields: Comma-separated fields to include in response external_id: External system identifier for filtering external_source: External system source name for filtering order_by: Field to order results by

Returns: WorkItemDetail object with expanded relationships

retrieve_work_item_by_identifierA

Retrieve a work item by its full identifier (project prefix + sequence number).

The identifier must be in PROJECT-N format where PROJECT is the project's identifier string and N is the sequence number. Both parts are required.

Valid sparse fields values include: id, name, sequence_id, priority, state, project, workspace, parent, assignees, labels, type_id, start_date, target_date, created_at, updated_at, created_by, updated_by, is_draft, external_source, external_id, estimate_point. Use project (not project_id) to get the project UUID.

If you need the project UUID from a short identifier like "SHO", use list_projects() instead — it returns id and identifier for every project.

Args: work_item_identifier: Full work item identifier in PROJECT-N format expand: Comma-separated fields to expand (e.g., "assignees,labels,state") fields: Comma-separated sparse fieldset (see valid values above) external_id: External system identifier for filtering external_source: External system source name for filtering order_by: Field to order results by

Returns: WorkItemDetail object with expanded relationships

update_work_itemA

Update a work item by ID.

Args: project_id: UUID of the project work_item_id: UUID of the work item name: Work item name assignees: List of user IDs to assign to the work item labels: List of label IDs to attach to the work item type_id: UUID of the work item type point: Story point value description_html: HTML description of the work item description_stripped: Plain text description. Convenience only — it is wrapped into HTML and stored as description_html (Plane derives description_stripped server-side). Ignored if description_html is set. priority: Priority level (urgent, high, medium, low, none) start_date: Start date (ISO 8601 format) target_date: Target/end date (ISO 8601 format) sort_order: Sort order value is_draft: Whether the work item is a draft external_source: External system source name external_id: External system identifier parent: UUID of the parent work item state: UUID of the state estimate_point: Estimate point value type: Work item type identifier

Returns: Updated WorkItem object

delete_work_itemB

Delete a work item by ID.

Args: project_id: UUID of the project work_item_id: UUID of the work item

manage_work_item_assigneeA

Add or remove a single assignee on a work item without replacing the full list.

Provide add_user_id, remove_user_id, or both. If both are given the removal is applied first, then the addition. Already-assigned users in add_user_id are silently skipped.

Args: project_id: UUID of the project work_item_id: UUID of the work item add_user_id: UUID of the user to add as assignee remove_user_id: UUID of the user to remove from assignees

Returns: Updated WorkItem object

manage_work_item_labelA

Add or remove a single label on a work item without replacing the full list.

Provide add_label_id, remove_label_id, or both. If both are given the removal is applied first, then the addition. Already-attached labels in add_label_id are silently skipped.

Args: project_id: UUID of the project work_item_id: UUID of the work item add_label_id: UUID of the label to add remove_label_id: UUID of the label to remove

Returns: Updated WorkItem object

list_archived_work_itemsA

List archived work items in a project with optional PQL filtering.

Args: project_id: UUID of the project pql: PQL filter expression. Omit to list all archived items. order_by: Field to sort by; prefix with - for descending (default -archived_at). per_page: Results per page, 1-100 (default 100). cursor: Pagination cursor from a previous response's next_cursor. expand: Comma-separated related fields to expand. fields: Comma-separated sparse fieldset.

Returns: Paginated envelope with results, total_count, next_cursor, prev_cursor.

manage_work_item_archiveA

Archive or unarchive a work item.

Only work items in a completed or cancelled state can be archived. Archived work items no longer appear in active work item lists.

Args: project_id: UUID of the project work_item_id: UUID of the work item archive: True to archive the work item, False to unarchive it

search_work_itemsA

Search work items by text across a workspace.

Matches on work item name, sequence id, and project identifier (not description). For structured filtering (priority, state, assignee, dates, etc.) use list_work_items with a PQL expression.

Args: query: Free-text string matched against name, sequence id, and project identifier expand: Comma-separated list of related fields to expand in response fields: Comma-separated list of fields to include in response external_id: External system identifier for filtering external_source: External system source name for filtering order_by: Field to order results by. Prefix with '-' for descending

Returns: WorkItemSearch object containing search results

list_work_item_activitiesA

List activities for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item params: Optional query parameters as a dictionary

Returns: List of WorkItemActivity objects

retrieve_work_item_activityA

Retrieve a specific activity for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item activity_id: UUID of the activity

Returns: WorkItemActivity object

list_work_item_attachmentsA

List all attachments for a work item.

Returns metadata for each attachment. To get a downloadable link for a specific attachment, use get_work_item_attachment_download_url.

Args: project_id: UUID of the project work_item_id: UUID of the work item

Returns: List of attachments, each with: id, name, size, content_type, created_at, created_by.

get_work_item_attachment_download_urlA

Get a presigned download URL for a work item attachment.

Returns a time-limited URL (typically valid ~1 hour) that can be opened directly in a browser or downloaded with any HTTP client — no Plane authentication required on the URL itself.

Use list_work_item_attachments first to get attachment IDs and names.

Args: project_id: UUID of the project work_item_id: UUID of the work item attachment_id: UUID of the attachment

Returns: Dict with: download_url (presigned S3 URL), attachment_id, name.

upload_work_item_attachment_from_urlA

Fetch a file from a public URL and attach it to a work item.

The MCP server downloads the file server-side and uploads it to Plane via the standard three-step presigned S3 flow. The source URL must be publicly accessible without authentication and must not resolve to a private/internal network address.

Args: project_id: UUID of the project work_item_id: UUID of the work item url: Publicly accessible URL of the file to attach (e.g. a GitHub raw URL, public S3 link, or direct download link) name: Override the filename. Defaults to the filename in the URL path.

Returns: Created attachment metadata: id, name, size, content_type.

delete_work_item_attachmentA

Delete an attachment from a work item.

Use list_work_item_attachments to get the attachment_id.

Args: project_id: UUID of the project work_item_id: UUID of the work item attachment_id: UUID of the attachment to delete

read_work_item_attachmentA

Fetch an attachment's content so the LLM can read or analyze it.

Supported file types: Images (returned as vision-readable image, max 5 MB): PNG, JPEG, GIF, WEBP Text (returned as a string, max 1 MB): TXT, MD, CSV, HTML, XML, YAML, JSON

Not supported (use get_work_item_attachment_download_url instead): PDF — requires a text-extraction library (not installed) DOCX/XLSX/PPTX — binary Office formats, require extraction Audio / Video — non-textual binary formats Generic binary — executables, archives, etc.

Args: project_id: UUID of the project work_item_id: UUID of the work item attachment_id: UUID of the attachment

Returns: Image object for image files, plain string for text files.

Raises: ValueError: If the file type is unsupported or the file exceeds the size limit for its category.

list_work_item_commentsB

List comments for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item params: Optional query parameters as a dictionary

Returns: List of WorkItemComment objects

retrieve_work_item_commentA

Retrieve a specific comment for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item comment_id: UUID of the comment

Returns: WorkItemComment object

create_work_item_commentA

Create a comment for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item comment_html: Comment content in HTML format comment_json: Comment content in JSON format access: Access level for the comment (INTERNAL or EXTERNAL) external_source: External system source name external_id: External system identifier

Returns: Created WorkItemComment object

update_work_item_commentB

Update a comment for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item comment_id: UUID of the comment comment_html: Comment content in HTML format comment_json: Comment content in JSON format access: Access level for the comment (INTERNAL or EXTERNAL) external_source: External system source name external_id: External system identifier

Returns: Updated WorkItemComment object

delete_work_item_commentA

Delete a comment for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item comment_id: UUID of the comment

list_work_item_linksC

List links for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item params: Optional query parameters as a dictionary

Returns: List of WorkItemLink objects

retrieve_work_item_linkA

Retrieve a specific link for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item link_id: UUID of the link

Returns: WorkItemLink object

create_work_item_linkB

Create a link for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item url: URL of the link

Returns: Created WorkItemLink object

update_work_item_linkB

Update a link for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item link_id: UUID of the link url: Updated URL of the link

Returns: Updated WorkItemLink object

delete_work_item_linkB

Delete a link for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item link_id: UUID of the link

list_work_item_relation_definitionsA

List every relation type usable with create_work_item_relation.

Match the user's wording against an entry here before creating a relation. built_in_dependencies are fixed scheduling/blocking types; custom_definitions are workspace-specific, each with an outward and inward label. custom_definitions are also what create/update/delete_work_item_relation_definition manage.

Args: is_default: Filter custom definitions to default/non-default only. is_active: Filter custom definitions to active/inactive only.

Returns: built_in_dependencies: relation_type values for the dependency path. custom_definitions: workspace definitions; use the id plus the matched outward or inward label.

create_work_item_relation_definitionA

Create a new workspace relation definition.

A relation definition describes a named relationship type with an outward label (how the source item describes the target) and an inward label (how the target item describes the source).

Args: name: Unique name for this relation definition. outward: Label describing the relation from the source item's perspective. inward: Label describing the relation from the target item's perspective. is_active: Whether this definition is active and available for use. color: Hex color code for UI display.

Returns: Created WorkItemRelationDefinition object.

update_work_item_relation_definitionA

Update an existing workspace relation definition.

Args: definition_id: UUID of the relation definition to update. name: New name for this definition. outward: Updated outward label. inward: Updated inward label. is_active: Updated active status. color: Updated hex color code.

Returns: Updated WorkItemRelationDefinition object.

delete_work_item_relation_definitionA

Delete a workspace relation definition.

Args: definition_id: UUID of the relation definition to delete.

list_work_item_relationsB

List every relation for a work item.

Args: project_id: UUID of the project. work_item_id: UUID of the work item.

Returns: dependencies: Built-in dependencies grouped by the six directions. custom: Custom relations grouped by definition label.

create_work_item_relationA

Relate a work item to one or more targets.

Always call list_work_item_relation_definitions first and match the user's wording to an entry there. If it is a built_in_dependencies value, pass it as relation_type. If it is a custom_definitions entry, pass that definition's id as relation_definition_id and the matched outward/inward label as relation_definition_label (the label sets directionality).

Args: project_id: UUID of the project. work_item_id: UUID of the source work item. work_item_ids: UUIDs of the target work items. relation_type: A built_in_dependencies value, or None for a custom relation. relation_definition_id: UUID of the relation definition (custom relations). relation_definition_label: Definition's outward or inward label (custom relations).

Returns: List of created WorkItemWithRelationType objects.

remove_work_item_relationA

Remove ONE relation between two work items.

A built-in dependency and a custom relation are removed independently — removing one leaves the other intact. Set is_dependency from the relation the user named (see list_work_item_relations): True for a built-in dependency (blocking, blocked_by, start/finish ordering), False for a custom relation.

Args: project_id: UUID of the project. work_item_id: UUID of the source work item. related_work_item_id: UUID of the related work item. is_dependency: True to remove a built-in dependency, False to remove a custom relation.

list_work_logsB

List work logs for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item params: Optional query parameters as a dictionary

Returns: List of WorkItemWorkLog objects

create_work_logA

Create a work log for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item duration: Duration of work in minutes description: Description of the work performed

Returns: Created WorkItemWorkLog object

update_work_logA

Update a work log for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item work_log_id: UUID of the work log duration: Duration of work in minutes description: Description of the work performed

Returns: Updated WorkItemWorkLog object

delete_work_logA

Delete a work log for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item work_log_id: UUID of the work log

list_cyclesA

List cycles in a project. Active (non-archived) cycles by default.

Args: project_id: UUID of the project archived: Set True to list archived cycles instead of active ones. status: Filter active cycles by status — "current" (running now), "upcoming" (starts later), "completed" (ended), "draft" (no dates), or "incomplete" (not yet finished). Ignored when archived is True. cursor: Pagination cursor from a previous response's next_cursor (form "{per_page}:{page}:{offset}"). Omit for the first page. per_page: Number of results per page (1-100). order_by: Field to order results by. Prefix with '-' for descending.

Returns: Paginated envelope: results (cycles) + total_count, next_cursor, next_page_results.

create_cycleB

Create a new cycle.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project name: Cycle name owned_by: UUID of the user who owns the cycle description: Cycle description start_date: Cycle start date (ISO 8601 format) end_date: Cycle end date (ISO 8601 format) external_source: External system source name external_id: External system identifier timezone: Cycle timezone

Returns: Created Cycle object

retrieve_cycleA

Retrieve a cycle by ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project cycle_id: UUID of the cycle

Returns: Cycle object

update_cycleA

Update a cycle by ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project cycle_id: UUID of the cycle name: Cycle name description: Cycle description start_date: Cycle start date (ISO 8601 format) end_date: Cycle end date (ISO 8601 format) owned_by: UUID of the user who owns the cycle external_source: External system source name external_id: External system identifier timezone: Cycle timezone

Returns: Updated Cycle object

delete_cycleC

Delete a cycle by ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project cycle_id: UUID of the cycle

manage_cycle_work_itemsA

Add or remove work items on a cycle in a single call.

At least one of add_ids or remove_ids must be provided.

Args: project_id: UUID of the project cycle_id: UUID of the cycle add_ids: UUIDs of work items to add to the cycle remove_ids: UUIDs of work items to remove from the cycle

list_cycle_work_itemsA

List work items in a cycle with optional PQL filtering.

Args: project_id: UUID of the project cycle_id: UUID of the cycle pql: PQL filter expression. See field description for syntax. Omit to list all items in the cycle. order_by: Field to sort by; prefix with - for descending. per_page: Results per page, 1-100 (default 25). cursor: Pagination cursor from a previous response's next_cursor. expand: Comma-separated related fields to expand. fields: Comma-separated sparse fieldset.

Returns: Paginated envelope with results, total_count, next_cursor, prev_cursor.

transfer_cycle_work_itemsC

Transfer work items from one cycle to another.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project cycle_id: UUID of the source cycle new_cycle_id: UUID of the target cycle to transfer issues to

manage_cycle_archiveA

Archive or unarchive a cycle.

Plane requires the cycle end_date to be in the past before archiving. When archive=True, this tool automatically sets end_date to today if the cycle is still active (end_date is missing or in the future), then archives it.

Args: project_id: UUID of the project cycle_id: UUID of the cycle archive: True to archive the cycle, False to unarchive it

Returns: True if the operation completed successfully

complete_cycleA

Complete (close) a cycle by setting its end date to today.

Plane has no explicit "complete" action — a cycle is considered complete when its end_date is in the past. This tool sets end_date to today, effectively closing the cycle.

Args: project_id: UUID of the project cycle_id: UUID of the cycle to complete

Returns: Updated Cycle object

get_meA

Get current user information.

Returns: UserLite object containing current user information

list_modulesA

List modules in a project.

Args: project_id: UUID of the project archived: Set True to list archived modules instead of active ones. cursor: Pagination cursor from a previous response's next_cursor (form "{per_page}:{page}:{offset}"). Omit for the first page. per_page: Number of results per page (1-100). order_by: Field to order results by. Prefix with '-' for descending.

Returns: Paginated envelope: results (modules) + total_count, next_cursor, next_page_results.

create_moduleC

Create a new module.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project name: Module name description: Module description start_date: Module start date (ISO 8601 format) target_date: Module target/end date (ISO 8601 format) status: Module status (backlog, planned, in-progress, paused, completed, cancelled) lead: UUID of the user who leads the module members: List of user IDs who are members of the module external_source: External system source name external_id: External system identifier

Returns: Created Module object

retrieve_moduleA

Retrieve a module by ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project module_id: UUID of the module

Returns: Module object

update_moduleB

Update a module by ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project module_id: UUID of the module name: Module name description: Module description start_date: Module start date (ISO 8601 format) target_date: Module target/end date (ISO 8601 format) status: Module status (backlog, planned, in-progress, paused, completed, cancelled) lead: UUID of the user who leads the module members: List of user IDs who are members of the module external_source: External system source name external_id: External system identifier

Returns: Updated Module object

delete_moduleC

Delete a module by ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project module_id: UUID of the module

manage_module_work_itemsA

Add or remove work items on a module in a single call.

At least one of add_ids or remove_ids must be provided.

Args: project_id: UUID of the project module_id: UUID of the module add_ids: UUIDs of work items to add to the module remove_ids: UUIDs of work items to remove from the module

list_module_work_itemsA

List work items in a module with optional PQL filtering.

Args: project_id: UUID of the project module_id: UUID of the module pql: PQL filter expression. See field description for syntax. Omit to list all items in the module. order_by: Field to sort by; prefix with - for descending. per_page: Results per page, 1-100 (default 25). cursor: Pagination cursor from a previous response's next_cursor. expand: Comma-separated related fields to expand. fields: Comma-separated sparse fieldset.

Returns: Paginated envelope with results, total_count, next_cursor, prev_cursor.

manage_module_archiveA

Archive or unarchive a module.

Args: project_id: UUID of the project module_id: UUID of the module archive: True to archive the module, False to unarchive it

list_initiativesA

List all initiatives in a workspace.

Args: params: Optional query parameters as a dictionary (e.g., per_page, cursor)

Returns: List of Initiative objects

Raises: ToolError: if the initiatives feature is disabled. When disabled, initiatives are "Initiative" work items — the error gives the steps.

create_initiativeA

Create a new initiative in the workspace.

Args: name: Initiative name description_html: HTML description of the initiative start_date: Initiative start date (ISO 8601 format) end_date: Initiative end date (ISO 8601 format) logo_props: Logo properties dictionary state: Initiative state (DRAFT, PLANNED, ACTIVE, COMPLETED, CLOSED) lead: UUID of the user who leads the initiative

Returns: Created Initiative object

Raises: ToolError: if the workspace's initiatives feature is disabled. Native initiatives require the feature to be enabled in workspace settings. When disabled, create an "Initiative" work item instead — the error message gives the exact steps.

retrieve_initiativeA

Retrieve an initiative by ID.

Args: initiative_id: UUID of the initiative

Returns: Initiative object

Raises: ToolError: if the initiatives feature is disabled. When disabled, the initiative is an "Initiative" work item — the error gives the steps.

update_initiativeA

Update an initiative by ID.

Args: initiative_id: UUID of the initiative name: Initiative name description_html: HTML description of the initiative start_date: Initiative start date (ISO 8601 format) end_date: Initiative end date (ISO 8601 format) logo_props: Logo properties dictionary state: Initiative state (DRAFT, PLANNED, ACTIVE, COMPLETED, CLOSED) lead: UUID of the user who leads the initiative

Returns: Updated Initiative object

Raises: ToolError: if the initiatives feature is disabled. When disabled, the initiative is an "Initiative" work item — the error gives the steps.

delete_initiativeA

Delete an initiative by ID.

Args: initiative_id: UUID of the initiative

Raises: ToolError: if the initiatives feature is disabled. When disabled, the initiative is an "Initiative" work item — the error gives the steps.

list_initiative_projectsA

List projects linked to an initiative.

Args: initiative_id: UUID of the initiative params: Optional query parameters (e.g., per_page, cursor)

Returns: List of linked Project objects

manage_initiative_projectsA

Link or unlink projects of an initiative. Use list_initiative_projects to read.

Args: initiative_id: UUID of the initiative action: "add" to link the projects, "remove" to unlink them project_ids: Project UUIDs to link/unlink

Returns: The initiative's linked projects after the operation

list_intake_work_itemsA

List all intake work items in a project.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project params: Optional query parameters as a dictionary (e.g., per_page, cursor)

Returns: List of IntakeWorkItem objects

create_intake_work_itemC

Create a new intake work item in a project.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project data: Intake work item data as a dictionary

Returns: Created IntakeWorkItem object

retrieve_intake_work_itemB

Retrieve an intake work item by work item ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project work_item_id: UUID of the work item (use the issue field from IntakeWorkItem response, not the intake work item ID) params: Optional query parameters as a dictionary (e.g., expand, fields)

Returns: IntakeWorkItem object

update_intake_work_itemA

Update an intake work item, including triage status.

Status values: -2 = pending (default/unreviewed) -1 = declined 0 = snoozed (requires snoozed_till date) 1 = accepted (converts intake item to active work item) 2 = duplicate (requires duplicate_to work item ID)

Args: project_id: UUID of the project work_item_id: UUID of the work item (use the issue field from IntakeWorkItem response, not the intake work item ID) status: Triage status (-2=pending, -1=declined, 0=snoozed, 1=accepted, 2=duplicate) snoozed_till: ISO 8601 date string, required when status=0 duplicate_to: UUID of the work item this duplicates, required when status=2 source: Source identifier source_email: Source email address

Returns: Updated IntakeWorkItem object

delete_intake_work_itemB

Delete an intake work item by work item ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project work_item_id: UUID of the work item (use the issue field from IntakeWorkItem response, not the intake work item ID)

list_labelsA

List all labels in a project.

Args: project_id: UUID of the project params: Optional query parameters as a dictionary

Returns: List of Label objects

create_labelA

Create a new label.

Args: project_id: UUID of the project name: Label name color: Label color (hex color code) description: Label description parent: UUID of the parent label (for nested labels) sort_order: Sort order for the label external_source: External system source name external_id: External system identifier

Returns: Created Label object

retrieve_labelA

Retrieve a label by ID.

Args: project_id: UUID of the project label_id: UUID of the label

Returns: Label object

update_labelB

Update a label by ID.

Args: project_id: UUID of the project label_id: UUID of the label name: Label name color: Label color (hex color code) description: Label description parent: UUID of the parent label (for nested labels) sort_order: Sort order for the label external_source: External system source name external_id: External system identifier

Returns: Updated Label object

delete_labelB

Delete a label by ID.

Args: project_id: UUID of the project label_id: UUID of the label

list_pagesA

List pages.

Lists a project's pages if project_id is given, otherwise workspace-level pages.

Args: project_id: UUID of the project. Omit to list workspace pages. params: Optional query parameters as a dictionary (e.g., per_page, cursor)

Returns: List of Page objects

attach_page_to_work_itemB

Link a page to a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item page_id: UUID of the page to link

Returns: WorkItemPage link object

list_work_item_pagesA

List all pages linked to a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item

Returns: List of WorkItemPage link objects

detach_page_from_work_itemA

Remove a page link from a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item work_item_page_id: UUID of the work item page link (not the page ID)

retrieve_pageA

Retrieve a page by ID.

Retrieves a project page if project_id is given, otherwise a workspace page.

Args: page_id: UUID of the page project_id: UUID of the project. Omit for a workspace page.

Returns: Page object

create_pageA

Create a page.

Creates a project page if project_id is given, otherwise a workspace-level page.

Args: name: Page name description_html: Page content in HTML format project_id: UUID of the project. Omit to create a workspace page. access: Access level for the page (integer) color: Page color is_locked: Whether the page is locked archived_at: Archive timestamp (ISO 8601 format) view_props: View properties dictionary logo_props: Logo properties dictionary external_id: External system identifier external_source: External system source name

Returns: Created Page object

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/leigangzhang/plane-mcp-server-adapter'

If you have feedback or need assistance with the MCP directory API, please join our Discord server