{"domain":"plane.so","count":1,"changes":[{"captured_at":"2026-09-11T09:28:54","card_hash":"bb2afdddda59e636172a61b65e3fde5bae7bd0e69de052586722cd1636444d3f","previous_card_hash":null,"diff":{"skills_added":[{"id":"attach-file-to-work-item","name":"Attach a file to a work item","description":"Upload a file to a work item. Request presigned upload credentials, POST the file to the returned URL, then confirm the upload. Over MCP the `upload_from_url` action does all three in one call.","tags":["work-items","attachments","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"comment-on-work-item","name":"Comment on a work item","description":"Post, edit, or read comments on a work item so an agent can report progress where the work lives.","tags":["work-items","collaboration","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"count-work-items","name":"Count and group work items","description":"Aggregate work item counts across a workspace or project, grouped and sub-grouped by state, priority, assignee, label, type, cycle, module, milestone, release, creator, or date. This is the reporting primitive: Plane's Dashboards and Analytics views themselves have no public API, so an agent answers \"how many, broken down by what\" with this.","tags":["work-items","reporting","read-only"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"create-project","name":"Create a project","description":"Set up a project with a name, short identifier, lead, timezone, and the feature modules it should use.","tags":["projects","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"create-work-item","name":"Create a work item","description":"Open a new work item in a project with a name, description, priority, state, assignees, labels, and dates.","tags":["work-items","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"find-work-item-by-identifier","name":"Find a work item by its readable identifier","description":"Retrieve a work item from the identifier people actually use, such as ENG-42, without first resolving a UUID. This is the only work item action that accepts a readable identifier — every other action takes the work item's UUID.","tags":["work-items","read-only","prerequisite"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"get-current-user","name":"Identify the current user","description":"Resolve who the credential authenticates as, including whether it is a bot. Call this to attribute work and to interpret `@me` in a PQL filter.","tags":["members","read-only","prerequisite"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"get-pql-reference","name":"Retrieve the query language reference","description":"Fetch the Plane Query Language syntax reference — operators, functions, fields, and worked examples. Call this before composing a `pql` filter for any capability that accepts one.","tags":["query","read-only","prerequisite"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"link-work-item","name":"Attach an external link to a work item","description":"Add a titled external URL to a work item — a pull request, a dashboard, a design file — and read back the links already on it.","tags":["work-items","links","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"list-labels","name":"List labels","description":"Read a project's labels. Call this to turn label names into the ids that creating and updating work items requires.","tags":["workspace","labels","read-only","prerequisite"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"list-projects","name":"List projects","description":"Enumerate the projects in a workspace with their ids, identifiers, and enabled features.","tags":["projects","read-only"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"list-teamspaces","name":"List teamspaces","description":"Read the teamspaces in a workspace with their members and projects, to scope work to the right team.","tags":["workspace","teamspaces","read-only"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"list-work-items","name":"List work items in a project","description":"Page through the work items in one project, optionally filtered with PQL and narrowed to a sparse field set.","tags":["work-items","read-only"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"list-workflow-states","name":"List workflow states","description":"Read a project's workflow states and their groups. Call this to turn a state name such as \"In Progress\" into the id that creating and updating work items requires.","tags":["workspace","states","read-only","prerequisite"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"log-time","name":"Log time against a work item","description":"Record a work log with a duration in minutes, and read back the logs on a work item.","tags":["time-tracking","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"manage-customer-requests","name":"Log customer requests","description":"Record what a customer asked for and link the work items that deliver it, so commitments are traceable back to the account.","tags":["customers","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"manage-customers","name":"Manage customers and requests","description":"Create customer records, log their requests, and link the work items that deliver against them.","tags":["customers","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"manage-cycle-work-items","name":"Fill and close out a cycle","description":"Add work items to a cycle, list what is in it, transfer unfinished work to the next cycle, and complete or archive it — the rest of the sprint loop beyond creating the cycle.","tags":["planning","cycles","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"manage-epics","name":"Manage epics","description":"Create epics and attach the work items that roll up into them. Plane models an epic as a work item whose type is named Epic, so over MCP there is no epic tool: resolve the Epic type with `workitem_type resolve`, pass the returned id as `type_id` to `workitem create`, then list epics with `pql='type = \"<type id>\"'` and an epic's children with `pql='childOf(\"ENG-12\")'`. REST has dedicated epic paths that do this for you.","tags":["planning","epics","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"manage-estimates","name":"Manage estimates","description":"Create a project's estimation system and read its points, so the `estimate_point` id required when sizing a work item can be resolved.","tags":["planning","estimates","write","prerequisite"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"manage-module-work-items","name":"Fill a module","description":"Add work items to a module and list what it already contains.","tags":["planning","modules","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"manage-project-features","name":"Read and toggle project features","description":"Read or change which feature modules a project has enabled — epics, modules, cycles, views, pages, intake, work item types. Check this before calling a capability that depends on a module being on.","tags":["projects","configuration","write","prerequisite"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"manage-releases","name":"Manage releases and changelogs","description":"Create releases, attach the work items shipping in them, manage release tags and labels, and generate or edit the changelog.","tags":["releases","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"manage-wiki-pages","name":"Read and write wiki pages","description":"List and create pages at workspace (wiki) or project scope, so an agent can file specs and notes next to the work.","tags":["knowledge","pages","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"manage-work-item-types","name":"Manage work item types","description":"List and create the work item types in a project — Bug, Story, Epic and any custom type — each with its own icon and custom properties. Prefer the MCP `resolve` action over `create`: it finds an existing type or creates one without duplicating, which is also the only way to get a usable type in a workspace that centrally governs its type vocabulary and refuses project-scoped writes. `import_to_project` links existing workspace types to a project.","tags":["work-items","configuration","write","prerequisite"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"manage-workspace-features","name":"Read and toggle workspace features","description":"Read or change which workspace-level features are enabled — initiatives, teamspaces, customers, wiki, project grouping, and Plane AI.","tags":["workspace","configuration","write","prerequisite"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"map-identity-provider-groups","name":"Map identity provider groups to roles","description":"List and create mappings from identity provider groups to Plane roles, at workspace or project scope. This is the one integration-shaped API Plane exposes — the native integrations (GitHub, GitLab, Slack, Sentry, Bitbucket) are configured in workspace settings and have no public endpoints.","tags":["workspace","identity","integration","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"plan-cycle","name":"Plan a cycle","description":"Create a time-boxed cycle, list what is in it, and move work items in or out — the sprint-planning loop.","tags":["planning","cycles","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"plan-milestone","name":"Plan a milestone","description":"Create dated checkpoints in a project and attach the work items that must land by each one.","tags":["planning","milestones","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"plan-module","name":"Plan a module","description":"Group related work into a module with a lead, members, dates, and a delivery status.","tags":["planning","modules","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"read-work-item-activity","name":"Read a work item's history","description":"Page through the change history of a work item — state moves, reassignments, field edits — to summarise what happened and when.","tags":["work-items","audit","read-only"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"relate-work-items","name":"Relate work items","description":"Create a typed relation between two work items — blocking, blocked by, duplicate, relates to, or a custom workspace relation type — so dependencies are explicit.","tags":["work-items","dependencies","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"report-agent-run-activity","name":"Report progress as a Plane agent","description":"For agents installed as Plane apps: post thoughts, actions, responses, elicitations, and errors into the Agent Run created when a user @mentions the agent on a work item. Thoughts and actions are ephemeral; a response becomes a visible comment.","tags":["agents","collaboration","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"resolve-members","name":"Resolve workspace members","description":"Look up workspace and project members and their roles, so names in a prompt can be turned into the ids other capabilities require.","tags":["members","read-only","prerequisite"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"search-work-items","name":"Search work items","description":"Find work items across a workspace by free-text query or a Plane Query Language (PQL) filter, without knowing project ids up front.","tags":["work-items","search","read-only"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"set-custom-property-values","name":"Read and write custom property values","description":"Set or read the value of a work item's custom properties, so an agent can populate the fields a team actually tracks rather than only the built-in ones.","tags":["work-items","custom-fields","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"submit-intake-request","name":"Submit and resolve an intake request","description":"File a request into a project intake queue, then accept, reject, snooze, or mark it duplicate. Pairs with reading the queue.","tags":["intake","triage","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"summarise-logged-time","name":"Summarise logged time","description":"Total the time logged against every work item in a project, for timesheet and capacity reporting. Pairs with logging time on an individual work item.","tags":["time-tracking","reporting","read-only"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"track-initiative","name":"Track an initiative","description":"Create and update workspace initiatives, and attach the projects and epics that roll up into them.","tags":["planning","initiatives","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"triage-intake","name":"Triage the intake queue","description":"Read the intake queue for a project and accept, reject, or convert submitted requests into work items.","tags":["intake","triage","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"update-work-item","name":"Update a work item","description":"Change any subset of a work item — state, priority, dates, description, assignees, labels. Only the fields passed are modified.","tags":["work-items","write"],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]}],"skills_removed":[],"skills_changed":[],"fields_changed":[{"field":"name","before":null,"after":"Plane"},{"field":"description","before":null,"after":"Project management for humans and AI agents. Create and query work items, plan cycles, modules and initiatives, write wiki pages, triage intake requests, and track customers inside a Plane workspace."},{"field":"version","before":null,"after":"0.3.0"},{"field":"protocolVersion","before":null,"after":"0.3.0"},{"field":"url","before":null,"after":"https://mcp.plane.so/http/mcp"},{"field":"documentationUrl","before":null,"after":"https://developers.plane.so/dev-tools/mcp-server"},{"field":"iconUrl","before":null,"after":"https://plane.so/favicon/android-chrome-512x512.png"},{"field":"preferredTransport","before":null,"after":"MCP+HTTP"},{"field":"supportsAuthenticatedExtendedCard","before":null,"after":false},{"field":"securitySchemes","before":null,"after":{"planeOAuth":{"type":"oauth2","description":"Sign in to Plane and select a workspace. Supports dynamic client registration and PKCE.","flows":{"authorizationCode":{"authorizationUrl":"https://mcp.plane.so/authorize","tokenUrl":"https://mcp.plane.so/token","scopes":{"read":"Read workspace data","write":"Create and modify workspace data"}}}},"planeAccessToken":{"type":"http","scheme":"bearer","description":"Personal access token sent as `Authorization: Bearer <token>` with an `x-workspace-slug` header. For automations and headless agents."}}},{"field":"security","before":null,"after":[{"planeOAuth":["read","write"]},{"planeAccessToken":[]}]},{"field":"capabilities","before":null,"after":{"streaming":false,"pushNotifications":false,"stateTransitionHistory":false,"extensions":[{"uri":"https://modelcontextprotocol.io","required":true,"description":"Plane's agent interface is a Model Context Protocol server, not A2A JSON-RPC. Connect an MCP client to the url in this card. The machine-readable server description is at https://plane.so/.well-known/mcp.json"},{"uri":"https://spec.openapis.org/oas/v3.1.0","required":false,"description":"The same capabilities are available over REST. The OpenAPI 3.1 description is at https://plane.so/openapi.json."}]}},{"field":"provider","before":null,"after":{"organization":"Plane Software, Inc.","url":"https://plane.so"}}],"other_changed":true,"is_empty":false,"human_summary":"added 41 skills · name ∅ → Plane · description ∅ → Project management for humans and AI age · version ∅ → 0.3.0 · protocolVersion ∅ → 0.3.0 · url ∅ → https://mcp.plane.so/http/mcp · documentationUrl ∅ → https://developers.plane.so/dev-tools/mc · iconUrl ∅ → https://plane.so/favicon/android-chrome- · preferredTransport ∅ → MCP+HTTP · supportsAuthenticatedExtendedCard ∅ → False · securitySchemes ∅ → planeAccessToken, planeOAuth · security ∅ → planeAccessToken, planeOAuth · capabilities ∅ → extensions, pushNotifications, stateTran · provider ∅ → Plane Software, Inc."}}]}