MCP App Store
by KeenEthics

Overview

Plane is an AI-native project management platform that unifies Projects, Wiki, and work tracking in one workspace. This official connector, maintained by Plane, lets Claude work directly inside your Plane workspace through the Model Context Protocol. Once connected, Claude can create and update work items, triage your backlog, plan and manage cycles (sprints) and modules, organize epics, initiatives and milestones, move issues through workflow states, apply labels, log time, add comments, and read or write wiki and project pages — all in natural language. Typical uses: • Turn a meeting summary into structured work items • Triage and re-prioritize incoming issues • Summarize a cycle's progress, blockers and scope changes • Draft a project plan as work items, epics and cycles • Query project status across your workspace in plain English The connector exposes 20+ tools spanning projects, work items, cycles, modules, epics, initiatives, milestones, states, labels, comments, worklogs, intake and pages. It authenticates with OAuth 2.1 (PKCE); you authorize with your Plane account and Claude acts within your existing workspace permissions.

Tools

collection

ChatGPT
Collections grouping workspace pages. Actions: list (no required params); retrieve (collection_id); create (name; optional access) -- access is fixed at creation and cannot be changed afterwards; update (collection_id; optional name, sort_order) -- only the fields you pass are changed; delete (collection_id; optional archive_pages) -- the pages survive; archive_pages defaults to true, pass false to leave them unfiled instead; list_pages (collection_id; optional search, parent_id, cursor, per_page); search_pages (collection_id; optional search) -- pages not yet in this collection, to pick ids for add_pages; add_pages (collection_id, page_ids) -- files existing pages; use page create to make new ones; remove_page (collection_id, page_collection_id) -- page_collection_id is the membership id from list_pages, not the page id; the page itself is kept; list_members (collection_id); add_member (collection_id, user_id, member_access); update_member (collection_id, collection_member_id, member_access); remove_member (collection_id, collection_member_id) -- collection_member_id is the membership id from list_members, not the user id. access is one of: public, private -- a private collection is visible only to its members, and the level cannot be changed once the collection exists. member_access is one of: view, comment, edit and is a separate scale from access. Collections group workspace pages only; a project's pages cannot be filed in one. To file or move a page, use page set_collection -- it works out which collection holds the page for you, so it needs no membership id.

customer

ChatGPT
Customers in the workspace. Actions: list (no required params; optional query, cursor, per_page); retrieve (customer_id); create (name; optional description_html, email, website_url, domain, employees, stage, contract_status, revenue, external_source, external_id) -- upsert: matches on external_source + external_id, else on name, so it never duplicates; update (customer_id; optional name, description_html, email, website_url, domain, employees, stage, contract_status, revenue, external_source, external_id) -- only the fields you pass are changed; delete (no required params; optional customer_id, external_source, external_id) -- address by customer_id, or by external_source plus external_id; list_workitems (customer_id; optional customer_request_id, search); manage_workitems (customer_id; optional link_ids, unlink_ids, customer_request_id) -- pass at least one of link_ids or unlink_ids; returns nothing, read back with list_workitems. 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_property

ChatGPT
Custom properties on customers. Actions: list (no required params; optional cursor, per_page); retrieve (property_id); create (display_name, property_type; optional relation_type, description, is_required, is_multi, is_active, default_value, options, display_format, external_source, external_id); update (property_id; optional display_name, relation_type, description, is_required, is_multi, is_active, default_value, options, external_source, external_id) -- only the fields you pass are changed; delete (property_id); get_values (customer_id; optional property_id) -- omit property_id to read them all; set_values (customer_id, values) -- replaces the values of the properties named; others keep theirs. 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. relation_type (required for RELATION) is one of: ISSUE, USER. 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.

customer_request

ChatGPT
Requests raised by a customer. Actions: list (customer_id; optional query, cursor, per_page); retrieve (customer_id, request_id); create (customer_id, name; optional description_html, link, workitem_ids) -- workitem_ids can only be set here; change links afterwards with customer manage_workitems; update (customer_id, request_id; optional name, description_html, link) -- only the fields you pass are changed; delete (customer_id, request_id). link is a URL associated with the request. workitem_ids is never echoed back -- read the links with customer list_workitems.

cycle

ChatGPT
Cycles (time-boxed iterations) in a project. Actions: list (project_id; optional archived, status, cursor, per_page, order_by); retrieve (project_id, cycle_id); create (project_id, name, owned_by; optional description, start_date, end_date, timezone, external_source, external_id); update (project_id, cycle_id; optional name, description, start_date, end_date, owned_by, timezone, external_source, external_id) -- only the fields you pass are changed; delete (project_id, cycle_id); list_workitems (project_id, cycle_id; optional pql, order_by, cursor, per_page, expand, fields); manage_workitems (project_id, cycle_id; optional add_ids, remove_ids) -- pass at least one of add_ids or remove_ids; returns nothing, read back with list_workitems; transfer_workitems (project_id, cycle_id, new_cycle_id) -- moves only the unfinished work items to new_cycle_id; the source cycle must have ended first, so complete it before transferring or the call is rejected; complete (project_id, cycle_id) -- sets end_date to today; archive (project_id, cycle_id) -- ends the cycle first if it is still running; unarchive (project_id, cycle_id). 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.

get_pql_reference

ChatGPT
Plane Query Language (PQL) syntax reference. Call this before composing a pql filter for the workitem list, list_archived or count actions. Actions: read (no required params; optional detail) -- this tool has no action parameter. detail 'full' gives operators, functions, common mistakes and worked examples; 'brief' gives the compact field and operator quick reference.

initiative

ChatGPT
Workspace initiatives. Actions: list (no required params) -- returns every initiative; this endpoint does not paginate; retrieve (initiative_id); create (name; optional description_html, start_date, end_date, state, lead); update (initiative_id; optional name, description_html, start_date, end_date, state, lead) -- only the fields you pass are changed; delete (initiative_id); list_projects (initiative_id; optional cursor, per_page); add_projects (initiative_id, project_ids) -- returns nothing, read back with list_projects; remove_projects (initiative_id, project_ids) -- returns nothing, read back with list_projects; list_workitems (initiative_id; optional cursor, per_page); manage_workitems (initiative_id; optional add_ids, remove_ids) -- pass at least one of add_ids or remove_ids; each takes one id or several, and removals apply first; returns nothing, read back with list_workitems. 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, add_ids and remove_ids work item UUIDs. A work item of any type can be linked to an initiative.

intake

ChatGPT
The intake (triage) queue for a project. Actions: list (project_id; optional cursor, per_page); retrieve (project_id, workitem_id); create (project_id, name; optional description_html, priority); update (project_id, workitem_id; optional status, snoozed_till, duplicate_to, source, source_email) -- pass status to make a triage decision; delete (project_id, workitem_id). 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.

label

ChatGPT
Labels within a project. Actions: list (project_id; optional cursor, per_page); retrieve (project_id, label_id); create (project_id, name; optional color, description, parent, sort_order, external_source, external_id); update (project_id, label_id; optional name, color, description, parent, sort_order, external_source, external_id) -- only the fields you pass are changed; delete (project_id, label_id). color is a hex code such as #EF4444. parent is the UUID of another label, for nesting.

member

ChatGPT
Workspace and project members, and role definitions. Actions: me (no required params) -- the authenticated user; list_workspace (no required params; optional first_name, last_name, email, display_name, role_slug, is_active, is_bot, cursor, per_page, order_by) -- name filters match case-insensitively and combine with AND; list_project (project_id); list_roles (no required params; optional namespace, cursor, per_page); retrieve_role (role_id). 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).

milestone

ChatGPT
Milestones within a project. Actions: list (project_id; optional cursor, per_page); retrieve (project_id, milestone_id); create (project_id, title; optional target_date, external_source, external_id); update (project_id, milestone_id; optional title, target_date, external_source, external_id) -- only the fields you pass are changed; delete (project_id, milestone_id); list_workitems (project_id, milestone_id; optional cursor, per_page); manage_workitems (project_id, milestone_id; optional add_ids, remove_ids) -- pass at least one of add_ids or remove_ids; returns nothing, read back with list_workitems. target_date is ISO 8601 (YYYY-MM-DD). add_ids and remove_ids take work item UUIDs.

module

ChatGPT
Modules (feature groupings) in a project. Actions: list (project_id; optional archived, cursor, per_page, order_by); retrieve (project_id, module_id); create (project_id, name; optional description, start_date, target_date, status, lead, members, external_source, external_id); update (project_id, module_id; optional name, description, start_date, target_date, status, lead, members, external_source, external_id) -- only the fields you pass are changed; delete (project_id, module_id); list_workitems (project_id, module_id; optional pql, order_by, cursor, per_page, expand, fields); manage_workitems (project_id, module_id; optional add_ids, remove_ids) -- pass at least one of add_ids or remove_ids; returns nothing, read back with list_workitems; archive (project_id, module_id); unarchive (project_id, module_id). 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.

page

ChatGPT
Pages at workspace or project scope. Actions: list (no required params; optional project_id, cursor, per_page) -- workspace pages unless project_id is given; retrieve (page_id; optional project_id); create (name, description_html; optional project_id, parent_id, collection_id, access, color, is_locked, external_source, external_id) -- parent_id nests the new page under an existing one; collection_id files it. Pass one or the other, never both; update (page_id; optional project_id, name, description_html) -- pass name, description_html, or both; description_html replaces the whole body, so retrieve the page first when editing part of it; a locked or archived page is refused; archive (page_id; optional project_id, archive) -- archive defaults to true; pass archive=false to restore; delete (page_id; optional project_id) -- requires the page to be archived first; set_collection (page_id, collection_id) -- files a page into a collection, or moves it out of the one it is in; workspace pages only, and collection_id comes from the collection tool; list_workitem_pages (project_id, workitem_id); attach_to_workitem (project_id, workitem_id, page_id); detach_from_workitem (project_id, workitem_id, workitem_page_id) -- workitem_page_id is the link id from list_workitem_pages, not the page id. description_html is the page body as HTML. access is the page access level. update changes only the fields you pass. A page must be archived before it can be deleted. Omit project_id to work with workspace-level pages. A page's parent is fixed at creation -- pass parent_id to create to build a hierarchy, since nothing can reparent it afterwards. list and retrieve both report a page's parent_id and the collection_id it is filed in, so neither needs looking up. Collections themselves live in the collection tool; here, create files a new page into one and set_collection files or moves an existing page.

project

ChatGPT
Projects in a workspace. Actions: list (no required params; optional cursor, per_page, order_by) -- trimmed fields; use retrieve for full detail; retrieve (project_id); create (name, identifier; optional description, description_html, project_lead, default_assignee, emoji, cover_image, timezone, archive_in, close_in, external_source, external_id); update (project_id; optional name, description, description_html, identifier, project_lead, default_assignee, emoji, cover_image, network, timezone, archive_in, close_in, default_state, estimate, is_time_tracking_enabled, external_source, external_id) -- only the fields you pass are changed; delete (project_id); archive (project_id); unarchive (project_id); worklog_summary (project_id); get_features (project_id); update_features (project_id; optional modules, cycles, views, pages, intakes, workitem_types, epics, parallel_cycles, project_updates, workflows) -- toggles project features on or off. 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.

project_estimate

ChatGPT
A project's estimate system and its points. Actions: retrieve (project_id) -- a project has at most one estimate; create (project_id, name; optional type, description, last_used, external_source, external_id) -- creates the estimate only; add its values afterwards with create_points; update (project_id; optional name, description, external_source, external_id); delete (project_id); link (project_id, estimate_id) -- makes that estimate the project's active one; list_points (project_id, estimate_id); create_points (project_id, estimate_id, points); update_point (project_id, estimate_id, estimate_point_id; optional value, key, description, external_source, external_id); delete_point (project_id, estimate_id, estimate_point_id). 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.

release

ChatGPT
Releases in the workspace. Actions: list (no required params; optional cursor, per_page); retrieve (release_id); create (name; optional description_html, status, release_date, target_date, tag_id, lead_id, is_prerelease, external_source, external_id); update (release_id; optional name, description_html, status, release_date, target_date, tag_id, lead_id, is_prerelease) -- only the fields you pass are changed; delete (release_id); get_changelog (release_id); update_changelog (release_id; optional description_html, description_stripped); list_workitems (release_id; optional cursor, per_page); manage_workitems (release_id; optional add_ids, remove_ids) -- pass at least one of add_ids or remove_ids; returns nothing, read back with list_workitems. 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_label

ChatGPT
Release labels, workspace palette and per release. Actions: list (no required params; optional release_id, cursor, per_page) -- the workspace palette unless release_id is given; create (name; optional color, sort_order) -- adds to the workspace palette; update (label_id; optional name, color, sort_order); delete (label_id) -- removes it from the palette entirely; attach (release_id, label_ids) -- returns nothing, read back with list; detach (release_id, label_ids) -- returns nothing, read back with list. 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.

release_tag

ChatGPT
Release tags (version markers). Actions: list (no required params; optional cursor, per_page); retrieve (tag_id); create (version; optional description, commit_hash, git_tag); update (tag_id; optional version, description, commit_hash, git_tag) -- only the fields you pass are changed; delete (tag_id). version is a version string such as "v1.2.0". A tag id is what release takes as tag_id.

state

ChatGPT
Workflow states within a project. Actions: list (no required params; optional project_id, cursor, per_page) -- workspace scope when project_id is omitted; retrieve (state_id; optional project_id); create (name, color; optional project_id, description, sequence, group, default, external_source, external_id) -- group is required at workspace scope; update (state_id; optional project_id, name, color, description, sequence, group, default) -- only the fields you pass are changed; delete (state_id; optional project_id). group is one of: backlog, unstarted, started, completed, cancelled. color is a hex code such as #EF4444. A project also has a triage state, but Plane owns it: it cannot be created here and is not listed, and Triage is a reserved name. Omit project_id to work with the workspace catalogue, which is where states live once the workspace owns them; sequence and default apply to a project's states only.

template

ChatGPT
Reusable templates for work items, pages and projects. Actions: list (kind; optional project_id); create (kind, name, template_data; optional project_id, description); update (kind, template_id; optional project_id, name, description, template_data) -- only the fields you pass are changed; delete (kind, template_id; optional project_id). kind is one of: workitem, page, project. project_id chooses the scope a write lands in; omit it for the workspace, which is also the only scope a project kind can live at. For a workitem or page kind, listing without project_id is the wider view: it returns a project's templates as well as the workspace's own, told apart by a non-null project. Pass project_id to list one project's alone. template_data is a JSON object holding what gets templated -- for a work item template, the fields a work item created from it starts with, such as {"name": "Spec", "description_html": "<p>Context / Acceptance criteria</p>", "priority": "medium"}. update merges it into what is there rather than replacing it, so pass only what changes. description is the template's own summary, not the templated body.

work_log

ChatGPT
Time logged against a work item. Actions: list (project_id, workitem_id; optional cursor, per_page); create (project_id, workitem_id, duration; optional description); update (project_id, workitem_id, work_log_id; optional duration, description); delete (project_id, workitem_id, work_log_id). duration is in minutes.

workitem

ChatGPT
Work items -- issues, tasks and epics. Actions: list (no required params; optional project_id, pql, order_by, per_page, cursor, expand, fields, external_id, external_source) -- omit project_id to search the whole workspace; list_archived (project_id; optional pql, order_by, per_page, cursor, expand, fields, external_id, external_source); retrieve (project_id, workitem_id; optional expand, fields, external_id, external_source, order_by); retrieve_by_identifier (workitem_identifier; optional expand, fields, external_id, external_source, order_by) -- identifier is PROJECT-N, e.g. ENG-42; search (query; optional expand, fields, external_id, external_source, order_by); count (no required params; optional project_id, pql, group_by, sub_group_by) -- counts the whole workspace unless project_id narrows it; create (project_id, name; optional 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_id); update (project_id, workitem_id; optional name, 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_id) -- only the fields you pass are changed; delete (project_id, workitem_id); archive (project_id, workitem_id; optional archive) -- archive defaults to true; pass archive=false to unarchive. Only completed or cancelled items can be archived; manage_assignee (project_id, workitem_id; optional add_user_id, remove_user_id) -- each takes one id or several; the list is merged, not replaced, and removals apply first; manage_label (project_id, workitem_id; optional add_label_id, remove_label_id) -- each takes one id or several; the list is merged, not replaced, and removals apply first. 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. To clear a field on update: assignees=[] or labels=[], and start_date=null or target_date=null. A field you leave out is not changed. 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_activity

ChatGPT
Change history for a work item. Actions: list (project_id, workitem_id; optional cursor, per_page); retrieve (project_id, workitem_id, activity_id).

workitem_attachment

ChatGPT
Files attached to a work item. Actions: list (project_id, workitem_id); read (project_id, workitem_id, attachment_id) -- returns images and text inline; use download_url for anything else; download_url (project_id, workitem_id, attachment_id); upload_from_url (project_id, workitem_id, url; optional name); delete (project_id, workitem_id, attachment_id). 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.

workitem_comment

ChatGPT
Comments on a work item. Actions: list (project_id, workitem_id; optional cursor, per_page); retrieve (project_id, workitem_id, comment_id); create (project_id, workitem_id, comment_html; optional access, external_source, external_id); update (project_id, workitem_id, comment_id; optional comment_html, access, external_source, external_id); delete (project_id, workitem_id, comment_id). comment_html is HTML, e.g. '<p>Looks good.</p>'. access is INTERNAL or EXTERNAL.

workitem_property

ChatGPT
Custom work item properties and their options. Actions: list (no required params; optional project_id, workitem_type_id, cursor, per_page) -- no ids lists every workspace property in one call -- the fast path for PQL; retrieve (workitem_property_id; optional project_id, workitem_type_id); create (display_name, property_type; optional project_id, workitem_type_id, description, relation_type, is_required, is_multi, is_active, default_value, options, display_format, external_source, external_id); update (workitem_property_id; optional project_id, workitem_type_id, display_name, property_type, description, relation_type, is_required, is_multi, is_active, default_value, display_format, external_source, external_id) -- only the fields you pass are changed; delete (workitem_property_id; optional project_id, workitem_type_id); manage_type_properties (workitem_type_id; optional project_id, attach_ids, detach_ids) -- omit project_id where the workspace owns types; detach removes the association only, it does not delete the property; list_options (property_id; optional project_id); retrieve_option (property_id, option_id; optional project_id); create_option (property_id, name; optional project_id, description, color, is_default, external_source, external_id); update_option (property_id, option_id; optional project_id, name, description, color, is_default, external_source, external_id); delete_option (property_id, option_id; optional project_id); get_value (project_id, workitem_id, property_id); set_value (project_id, workitem_id, property_id; optional value, description_html, external_source, external_id) -- upsert; pass value, or description_html for a rich text property; for a multi-value property this replaces every existing value; delete_value (project_id, workitem_id, property_id). property_type is one of: TEXT, DATETIME, DECIMAL, BOOLEAN, OPTION, RELATION, URL, EMAIL, FILE, FORMULA, CASCADING. 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. A rich text property is a RELATION with relation_type RICH_TEXT. Write it with description_html (HTML, e.g. '<p>Notes</p>') instead of value; get_value returns the content in value_detail.description_html, and its value is only that content's storage id.

workitem_relation

ChatGPT
Relations between work items, and the definitions that type them. Actions: list (project_id, workitem_id); create (project_id, workitem_id, workitem_ids; optional relation_type, relation_definition_id, relation_definition_label) -- pass relation_type for a dependency, or definition id + label for a custom relation; delete (project_id, workitem_id, related_workitem_id; optional is_dependency) -- removes one relation; dependencies and custom relations are independent, so is_dependency must match the kind that was created (default false); list_definitions (no required params; optional is_default, is_active); create_definition (name; optional outward, inward, is_active, color); update_definition (definition_id; optional name, outward, inward, is_active, color); delete_definition (definition_id). 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.

workitem_type

ChatGPT
Work item types, at project or workspace scope. Actions: list (no required params; optional project_id, cursor, per_page) -- workspace scope when project_id is omitted; retrieve (workitem_type_id; optional project_id); resolve (project_id, name) -- finds or creates a named type usable in the project; never duplicates; create (name; optional project_id, description, project_ids, is_active, external_source, external_id); update (workitem_type_id; optional project_id, name, description, project_ids, is_active, external_source, external_id) -- only the fields you pass are changed; delete (workitem_type_id; optional project_id); import_to_project (project_id, workitem_type_ids) -- links workspace types to a project. 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.

workspace

ChatGPT
The connected workspace, and its feature flags. Actions: retrieve (no required params) -- the workspace this connection is bound to: slug, id, name and how it connected. id and name are known only on an OAuth connection and are null otherwise; get_features (no required params) -- feature flags for the current workspace; update_features (no required params; optional project_grouping, initiatives, teams, customers, wiki, pi) -- only the flags you pass are changed. For a project's feature flags use project get_features and project update_features.

attach_page_to_work_item

Claude

complete_cycle

Claude

count_work_items

Claude

create_cycle

Claude

create_initiative

Claude

create_intake_work_item

Claude

create_label

Claude

create_milestone

Claude

create_module

Claude

create_page

Claude

create_project

Claude

create_project_estimate

Claude

create_project_estimate_points

Claude

create_state

Claude

create_work_item

Claude

create_work_item_comment

Claude

create_work_item_property

Claude

create_work_item_property_option

Claude

create_work_item_relation

Claude

create_work_item_relation_definition

Claude

create_work_item_type

Claude

create_work_log

Claude

customer

Claude

customer_property

Claude

customer_request

Claude

cycle

Claude

delete_cycle

Claude

delete_initiative

Claude

delete_intake_work_item

Claude

delete_label

Claude

delete_milestone

Claude

delete_module

Claude

delete_project

Claude

delete_project_estimate

Claude

delete_project_estimate_point

Claude

delete_state

Claude

delete_work_item

Claude

delete_work_item_attachment

Claude

delete_work_item_comment

Claude

delete_work_item_property

Claude

delete_work_item_property_option

Claude

delete_work_item_property_value

Claude

delete_work_item_relation_definition

Claude

delete_work_item_type

Claude

delete_work_log

Claude

detach_page_from_work_item

Claude

get_features

Claude

get_me

Claude

get_pql_reference

Claude

get_project_estimate

Claude

get_project_members

Claude

get_project_worklog_summary

Claude

get_work_item_attachment_download_url

Claude

get_work_item_property_value

Claude

get_workspace_members

Claude

import_work_item_types_to_project

Claude

initiative

Claude

intake

Claude

label

Claude

list_archived_work_items

Claude

list_cycle_work_items

Claude

list_cycles

Claude

list_initiative_projects

Claude

list_initiatives

Claude

list_intake_work_items

Claude

list_labels

Claude

list_milestone_work_items

Claude

list_milestones

Claude

list_module_work_items

Claude

list_modules

Claude

list_pages

Claude

list_project_estimate_points

Claude

list_projects

Claude

list_roles

Claude

list_states

Claude

list_work_item_activities

Claude

list_work_item_attachments

Claude

list_work_item_comments

Claude

list_work_item_pages

Claude

list_work_item_properties

Claude

list_work_item_property_options

Claude

list_work_item_relation_definitions

Claude

list_work_item_relations

Claude

list_work_item_types

Claude

list_work_items

Claude

list_work_logs

Claude

manage_cycle_archive

Claude

manage_cycle_work_items

Claude

manage_initiative_projects

Claude

manage_milestone_work_items

Claude

manage_module_archive

Claude

manage_module_work_items

Claude

manage_project_archive

Claude

manage_work_item_archive

Claude

manage_work_item_assignee

Claude

manage_work_item_label

Claude

manage_work_item_type_properties

Claude

member

Claude

milestone

Claude

module

Claude

page

Claude

project

Claude

project_estimate

Claude

read_work_item_attachment

Claude

release

Claude

release_label

Claude

release_tag

Claude

remove_work_item_relation

Claude

resolve_work_item_type

Claude

retrieve_cycle

Claude

retrieve_initiative

Claude

retrieve_intake_work_item

Claude

retrieve_label

Claude

retrieve_milestone

Claude

retrieve_module

Claude

retrieve_page

Claude

retrieve_project

Claude

retrieve_role

Claude

retrieve_state

Claude

retrieve_work_item

Claude

retrieve_work_item_activity

Claude

retrieve_work_item_by_identifier

Claude

retrieve_work_item_comment

Claude

retrieve_work_item_property

Claude

retrieve_work_item_property_option

Claude

retrieve_work_item_type

Claude

search_work_items

Claude

set_work_item_property_value

Claude

state

Claude

transfer_cycle_work_items

Claude

update_cycle

Claude

update_initiative

Claude

update_intake_work_item

Claude

update_label

Claude

update_milestone

Claude

update_module

Claude

update_project

Claude

update_project_estimate

Claude

update_project_estimate_point

Claude

update_project_features

Claude

update_state

Claude

update_work_item

Claude

update_work_item_comment

Claude

update_work_item_property

Claude

update_work_item_property_option

Claude

update_work_item_relation_definition

Claude

update_work_item_type

Claude

update_work_log

Claude

update_workspace_features

Claude

upload_work_item_attachment_from_url

Claude

work_log

Claude

workitem

Claude

workitem_activity

Claude

workitem_attachment

Claude

workitem_comment

Claude

workitem_property

Claude

workitem_relation

Claude

workitem_type

Claude

workspace

Claude

Capabilities

Writes

Similar Apps