collection
ChatGPTCollections 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
ChatGPTCustomers 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
ChatGPTCustom 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
ChatGPTRequests 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
ChatGPTCycles (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
ChatGPTPlane 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
ChatGPTWorkspace 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
ChatGPTThe 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
ChatGPTLabels 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
ChatGPTWorkspace 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
ChatGPTMilestones 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
ChatGPTModules (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
ChatGPTPages 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
ChatGPTProjects 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
ChatGPTA 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
ChatGPTReleases 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
ChatGPTRelease 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
ChatGPTRelease 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
ChatGPTWorkflow 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
ChatGPTReusable 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
ChatGPTTime 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
ChatGPTWork 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
ChatGPTChange history for a work item. Actions: list (project_id, workitem_id; optional cursor, per_page); retrieve (project_id, workitem_id, activity_id).
workitem_attachment
ChatGPTFiles 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_link
ChatGPTExternal links attached to a work item. Actions: list (project_id, workitem_id; optional cursor, per_page); retrieve (project_id, workitem_id, link_id); create (project_id, workitem_id, url; optional title); update (project_id, workitem_id, link_id; optional url, title) -- pass at least one of url or title; only the fields you pass are changed; delete (project_id, workitem_id, link_id). url must be http:// or https://. title is the text Plane shows in place of the URL, e.g. title='Design spec' for a long Figma link; without one the URL itself is shown.
workitem_property
ChatGPTCustom 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
ChatGPTRelations 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
ChatGPTWork 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
ChatGPTThe 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
Claudecomplete_cycle
Claudecount_work_items
Claudecreate_cycle
Claudecreate_initiative
Claudecreate_intake_work_item
Claudecreate_label
Claudecreate_milestone
Claudecreate_module
Claudecreate_page
Claudecreate_project
Claudecreate_project_estimate
Claudecreate_project_estimate_points
Claudecreate_state
Claudecreate_work_item
Claudecreate_work_item_link
Claudecreate_work_item_property
Claudecreate_work_item_property_option
Claudecreate_work_item_relation
Claudecreate_work_item_relation_definition
Claudecreate_work_item_type
Claudecreate_work_log
Claudecustomer
Claudecustomer_property
Claudecustomer_request
Claudecycle
Claudedelete_cycle
Claudedelete_initiative
Claudedelete_intake_work_item
Claudedelete_label
Claudedelete_milestone
Claudedelete_module
Claudedelete_project
Claudedelete_project_estimate
Claudedelete_project_estimate_point
Claudedelete_state
Claudedelete_work_item
Claudedelete_work_item_attachment
Claudedelete_work_item_link
Claudedelete_work_item_property
Claudedelete_work_item_property_option
Claudedelete_work_item_property_value
Claudedelete_work_item_relation_definition
Claudedelete_work_item_type
Claudedelete_work_log
Claudedetach_page_from_work_item
Claudeget_features
Claudeget_me
Claudeget_pql_reference
Claudeget_project_estimate
Claudeget_project_members
Claudeget_project_worklog_summary
Claudeget_work_item_attachment_download_url
Claudeget_work_item_property_value
Claudeget_workspace_members
Claudeimport_work_item_types_to_project
Claudeinitiative
Claudeintake
Claudelabel
Claudelink_estimate_to_project
Claudelist_archived_work_items
Claudelist_cycle_work_items
Claudelist_cycles
Claudelist_initiative_projects
Claudelist_initiatives
Claudelist_intake_work_items
Claudelist_labels
Claudelist_milestone_work_items
Claudelist_milestones
Claudelist_module_work_items
Claudelist_modules
Claudelist_pages
Claudelist_project_estimate_points
Claudelist_projects
Claudelist_roles
Claudelist_states
Claudelist_work_item_activities
Claudelist_work_item_attachments
Claudelist_work_item_links
Claudelist_work_item_pages
Claudelist_work_item_properties
Claudelist_work_item_property_options
Claudelist_work_item_relation_definitions
Claudelist_work_item_relations
Claudelist_work_item_types
Claudelist_work_items
Claudelist_work_logs
Claudemanage_cycle_archive
Claudemanage_cycle_work_items
Claudemanage_initiative_projects
Claudemanage_milestone_work_items
Claudemanage_module_archive
Claudemanage_module_work_items
Claudemanage_project_archive
Claudemanage_work_item_archive
Claudemanage_work_item_assignee
Claudemanage_work_item_label
Claudemanage_work_item_type_properties
Claudemember
Claudemilestone
Claudemodule
Claudepage
Claudeproject
Claudeproject_estimate
Clauderead_work_item_attachment
Clauderelease
Clauderelease_label
Clauderelease_tag
Clauderemove_work_item_relation
Clauderesolve_work_item_type
Clauderetrieve_cycle
Clauderetrieve_initiative
Clauderetrieve_intake_work_item
Clauderetrieve_label
Clauderetrieve_milestone
Clauderetrieve_module
Clauderetrieve_page
Clauderetrieve_project
Clauderetrieve_role
Clauderetrieve_state
Clauderetrieve_work_item
Clauderetrieve_work_item_activity
Clauderetrieve_work_item_by_identifier
Clauderetrieve_work_item_link
Clauderetrieve_work_item_property
Clauderetrieve_work_item_property_option
Clauderetrieve_work_item_type
Claudesearch_work_items
Claudeset_work_item_property_value
Claudestate
Claudetransfer_cycle_work_items
Claudeupdate_cycle
Claudeupdate_initiative
Claudeupdate_intake_work_item
Claudeupdate_label
Claudeupdate_milestone
Claudeupdate_module
Claudeupdate_project
Claudeupdate_project_estimate
Claudeupdate_project_estimate_point
Claudeupdate_project_features
Claudeupdate_state
Claudeupdate_work_item
Claudeupdate_work_item_link
Claudeupdate_work_item_property
Claudeupdate_work_item_property_option
Claudeupdate_work_item_relation_definition
Claudeupdate_work_item_type
Claudeupdate_work_log
Claudeupdate_workspace_features
Claudeupload_work_item_attachment_from_url
Claudework_log
Claudeworkitem
Claudeworkitem_activity
Claudeworkitem_attachment
Claudeworkitem_link
Claudeworkitem_property
Claudeworkitem_relation
Claudeworkitem_type
Claudeworkspace
Claude