Plane
plane.so
· Plane Software, Inc.
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.
plane.so via a single DNS TXT record to add the
verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Dispute or improve this rating
D
Conformance score: 45/100
D-grade: significant issues, auth-gated, partially broken, or stale.
click to expand breakdown ▾
click to collapse breakdown ▴
agent-card.json changed within the last 7 days. We track these so downstream callers can react.
Activity (audit trail)
last 24h · 0 invocations Public aggregate · no PII recordedNothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.
Card history
1 snapshot Every change toagent-card.json
| Captured | Hash | |
|---|---|---|
| 2026-09-11 09:28:54 current | bb2afdddda59… |
view → |
Endpoints
| Agent card | https://plane.so/.well-known/agent-card.json |
| Provider | https://plane.so |
| Docs | https://developers.plane.so/dev-tools/mcp-server |
Skills · 41 declared · mapped to canonical taxonomy
Find work items across a workspace by free-text query or a Plane Query Language (PQL) filter, without knowing project ids up front.
Page through the work items in one project, optionally filtered with PQL and narrowed to a sparse field set.
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 r…
Open a new work item in a project with a name, description, priority, state, assignees, labels, and dates.
Change any subset of a work item — state, priority, dates, description, assignees, labels. Only the fields passed are modified.
Post, edit, or read comments on a work item so an agent can report progress where the work lives.
Record a work log with a duration in minutes, and read back the logs on a work item.
Enumerate the projects in a workspace with their ids, identifiers, and enabled features.
Set up a project with a name, short identifier, lead, timezone, and the feature modules it should use.
Create a time-boxed cycle, list what is in it, and move work items in or out — the sprint-planning loop.
Group related work into a module with a lead, members, dates, and a delivery status.
Create and update workspace initiatives, and attach the projects and epics that roll up into them.
List and create pages at workspace (wiki) or project scope, so an agent can file specs and notes next to the work.
Read the intake queue for a project and accept, reject, or convert submitted requests into work items.
Create customer records, log their requests, and link the work items that deliver against them.
Look up workspace and project members and their roles, so names in a prompt can be turned into the ids other capabilities require.
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.
Fetch the Plane Query Language syntax reference — operators, functions, fields, and worked examples. Call this before composing a `pql` filter for any capabilit…
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 requir…
Read a project's labels. Call this to turn label names into the ids that creating and updating work items requires.
Page through the change history of a work item — state moves, reassignments, field edits — to summarise what happened and when.
Create a typed relation between two work items — blocking, blocked by, duplicate, relates to, or a custom workspace relation type — so dependencies are explicit…
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.
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` a…
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`…
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.
Create a project's estimation system and read its points, so the `estimate_point` id required when sizing a work item can be resolved.
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: …
Create dated checkpoints in a project and attach the work items that must land by each one.
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 creat…
Add work items to a module and list what it already contains.
File a request into a project intake queue, then accept, reject, snooze, or mark it duplicate. Pairs with reading the queue.
Record what a customer asked for and link the work items that deliver it, so commitments are traceable back to the account.
Read the teamspaces in a workspace with their members and projects, to scope work to the right team.
Create releases, attach the work items shipping in them, manage release tags and labels, and generate or edit the changelog.
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 …
Aggregate work item counts across a workspace or project, grouped and sub-grouped by state, priority, assignee, label, type, cycle, module, milestone, release, …
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.
Read or change which feature modules a project has enabled — epics, modules, cycles, views, pages, intake, work item types. Check this before calling a capabili…
Read or change which workspace-level features are enabled — initiatives, teamspaces, customers, wiki, project grouping, and Plane AI.
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…
Health · last 30 probes
Cheaper or better alternatives per-skill
For each canonical skill this agent serves, the cheapest priced competitor and the highest-quality competitor. Only shown when at least one beats the current agent. Skills where this agent is already best on both axes are hidden.
Similar agents embedding-nearest
Embed your Agenstry badge
Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.
Markdown / HTML snippets
[](https://agenstry.com/agents/plane.so) [](https://agenstry.com/agents/plane.so) [](https://agenstry.com/agents/plane.so) [](https://agenstry.com/agents/plane.so)
Audit-grade evidence bundle
JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against
our JWKS. See the methodology.
Raw agent card JSON
{
"protocolVersion": "0.3.0",
"name": "Plane",
"description": "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.",
"version": "0.3.0",
"url": "https://mcp.plane.so/http/mcp",
"preferredTransport": "MCP+HTTP",
"documentationUrl": "https://developers.plane.so/dev-tools/mcp-server",
"iconUrl": "https://plane.so/favicon/android-chrome-512x512.png",
"provider": {
"organization": "Plane Software, Inc.",
"url": "https://plane.so"
},
"additionalInterfaces": [
{
"url": "https://mcp.plane.so/http/mcp",
"transport": "MCP+HTTP"
},
{
"url": "https://mcp.plane.so/http/api-key/mcp",
"transport": "MCP+HTTP"
},
{
"url": "https://api.plane.so/api/v1/",
"transport": "HTTP+JSON"
}
],
"capabilities": {
"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."
}
]
},
"defaultInputModes": [
"text/plain",
"application/json"
],
"defaultOutputModes": [
"text/plain",
"application/json"
],
"securitySchemes": {
"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."
}
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
},
{
"planeAccessToken": []
}
],
"skills": [
{
"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"
],
"examples": [
"Find every open work item mentioning \"SSO\" across the workspace.",
"Which work items assigned to me are overdue?"
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"query"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"query": {
"type": "string",
"minLength": 1,
"description": "Free-text search across work item names and identifiers."
},
"pql": {
"type": "string",
"description": "Optional PQL filter, e.g. `stateGroup = \"started\" AND assignee = @me`. Call the PQL reference first."
},
"cursor": {
"type": "string",
"description": "Cursor from a previous response, formatted `value:offset:is_prev`."
},
"per_page": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"order_by": {
"type": "string",
"description": "Field to sort by. Prefix with `-` for descending order."
}
}
},
"outputSchema": {
"type": "object",
"required": [
"results"
],
"properties": {
"results": {
"type": "array",
"items": {
"$ref": "#/$defs/WorkItem"
}
},
"total_count": {
"type": "integer"
},
"count": {
"type": "integer"
},
"total_pages": {
"type": "integer"
},
"next_cursor": {
"type": [
"string",
"null"
]
},
"prev_cursor": {
"type": [
"string",
"null"
]
},
"next_page_results": {
"type": "boolean"
},
"prev_page_results": {
"type": "boolean"
}
}
},
"security": [
{
"planeOAuth": [
"read"
]
}
]
},
{
"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"
],
"examples": [
"List the unfinished work items in the Engineering project, newest first."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"pql": {
"type": "string"
},
"expand": {
"type": "string",
"description": "Comma-separated related fields to inline, e.g. `assignees,labels`."
},
"fields": {
"type": "string",
"description": "Comma-separated sparse field set."
},
"cursor": {
"type": "string",
"description": "Cursor from a previous response, formatted `value:offset:is_prev`."
},
"per_page": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"order_by": {
"type": "string",
"description": "Field to sort by. Prefix with `-` for descending order."
}
}
},
"outputSchema": {
"type": "object",
"required": [
"results"
],
"properties": {
"results": {
"type": "array",
"items": {
"$ref": "#/$defs/WorkItem"
}
},
"total_count": {
"type": "integer"
},
"count": {
"type": "integer"
},
"total_pages": {
"type": "integer"
},
"next_cursor": {
"type": [
"string",
"null"
]
},
"prev_cursor": {
"type": [
"string",
"null"
]
},
"next_page_results": {
"type": "boolean"
},
"prev_page_results": {
"type": "boolean"
}
}
},
"security": [
{
"planeOAuth": [
"read"
]
}
]
},
{
"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 \u2014 every other action takes the work item's UUID.",
"tags": [
"work-items",
"read-only",
"prerequisite"
],
"examples": [
"What is the status of ENG-42?",
"Summarise ENG-42 and tell me who owns it."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"work_item_identifier"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"work_item_identifier": {
"type": "string",
"pattern": "^[A-Za-z0-9]+-[0-9]+$",
"description": "The project identifier and sequence number joined by a hyphen, e.g. `ENG-42`.",
"examples": [
"ENG-42"
]
},
"expand": {
"type": "string",
"description": "Comma-separated related fields to inline, e.g. `assignees,labels`."
},
"fields": {
"type": "string",
"description": "Comma-separated sparse field set."
}
}
},
"outputSchema": {
"$ref": "#/$defs/WorkItem"
},
"security": [
{
"planeOAuth": [
"read"
]
}
]
},
{
"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"
],
"examples": [
"Create an urgent bug in the Engineering project titled \"Login returns 500\" and assign it to me."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id",
"name"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"description_html": {
"type": "string",
"description": "Rich-text body. Wins over `description_stripped`."
},
"description_stripped": {
"type": "string",
"description": "Plain-text body, wrapped into HTML on save."
},
"priority": {
"type": "string",
"enum": [
"urgent",
"high",
"medium",
"low",
"none"
],
"default": "none"
},
"state": {
"type": "string",
"format": "uuid",
"description": "Workflow state id. List the project states first if you only have a name."
},
"assignees": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"labels": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"type_id": {
"type": "string",
"format": "uuid"
},
"parent": {
"type": "string",
"format": "uuid"
},
"estimate_point": {
"type": "string",
"format": "uuid"
},
"start_date": {
"type": "string",
"format": "date"
},
"target_date": {
"type": "string",
"format": "date"
},
"is_draft": {
"type": "boolean",
"default": false
},
"external_source": {
"type": "string",
"description": "Name of the originating system, for idempotent syncs."
},
"external_id": {
"type": "string",
"description": "Identifier in the originating system."
}
}
},
"outputSchema": {
"$ref": "#/$defs/WorkItem"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"id": "update-work-item",
"name": "Update a work item",
"description": "Change any subset of a work item \u2014 state, priority, dates, description, assignees, labels. Only the fields passed are modified.",
"tags": [
"work-items",
"write"
],
"examples": [
"Move ENG-42 to In Progress and set its target date to next Friday."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id",
"work_item_id"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"work_item_id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"maxLength": 255
},
"description_html": {
"type": "string"
},
"priority": {
"type": "string",
"enum": [
"urgent",
"high",
"medium",
"low",
"none"
]
},
"state": {
"type": "string",
"format": "uuid"
},
"assignees": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"labels": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"start_date": {
"type": "string",
"format": "date"
},
"target_date": {
"type": "string",
"format": "date"
}
}
},
"outputSchema": {
"$ref": "#/$defs/WorkItem"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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"
],
"examples": [
"Comment on ENG-42 with a summary of what I changed and link the pull request."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id",
"work_item_id",
"comment_html"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"work_item_id": {
"type": "string",
"format": "uuid"
},
"comment_html": {
"type": "string",
"minLength": 1
},
"access": {
"type": "string",
"enum": [
"INTERNAL",
"EXTERNAL"
],
"default": "INTERNAL"
},
"parent": {
"type": "string",
"format": "uuid",
"description": "Reply to an existing comment."
}
}
},
"outputSchema": {
"$ref": "#/$defs/WorkItemComment"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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"
],
"examples": [
"Log 90 minutes against ENG-42 for the migration work."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id",
"work_item_id",
"duration"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"work_item_id": {
"type": "string",
"format": "uuid"
},
"duration": {
"type": "integer",
"minimum": 1,
"description": "Minutes spent."
},
"description": {
"type": "string"
}
}
},
"outputSchema": {
"$ref": "#/$defs/WorkLog"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"id": "list-projects",
"name": "List projects",
"description": "Enumerate the projects in a workspace with their ids, identifiers, and enabled features.",
"tags": [
"projects",
"read-only"
],
"examples": [
"What projects exist in this workspace and which ones am I a member of?"
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"cursor": {
"type": "string",
"description": "Cursor from a previous response, formatted `value:offset:is_prev`."
},
"per_page": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"order_by": {
"type": "string",
"description": "Field to sort by. Prefix with `-` for descending order."
}
}
},
"outputSchema": {
"type": "object",
"required": [
"results"
],
"properties": {
"results": {
"type": "array",
"items": {
"$ref": "#/$defs/Project"
}
},
"total_count": {
"type": "integer"
},
"count": {
"type": "integer"
},
"total_pages": {
"type": "integer"
},
"next_cursor": {
"type": [
"string",
"null"
]
},
"prev_cursor": {
"type": [
"string",
"null"
]
},
"next_page_results": {
"type": "boolean"
},
"prev_page_results": {
"type": "boolean"
}
}
},
"security": [
{
"planeOAuth": [
"read"
]
}
]
},
{
"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"
],
"examples": [
"Create a project called Platform with identifier PLAT and cycles enabled."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"name",
"identifier"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"identifier": {
"type": "string",
"minLength": 1,
"maxLength": 12,
"description": "Short prefix for work item ids, e.g. `ENG`."
},
"description": {
"type": "string"
},
"project_lead": {
"type": "string",
"format": "uuid"
},
"default_assignee": {
"type": "string",
"format": "uuid"
},
"timezone": {
"type": "string",
"description": "IANA timezone name."
},
"cycle_view": {
"type": "boolean"
},
"module_view": {
"type": "boolean"
},
"page_view": {
"type": "boolean"
},
"intake_view": {
"type": "boolean"
},
"is_time_tracking_enabled": {
"type": "boolean"
}
}
},
"outputSchema": {
"$ref": "#/$defs/Project"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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 \u2014 the sprint-planning loop.",
"tags": [
"planning",
"cycles",
"write"
],
"examples": [
"Open a two-week cycle in Engineering starting Monday and add the three highest-priority bugs."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id",
"name"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"description": {
"type": "string"
},
"start_date": {
"type": "string",
"format": "date"
},
"end_date": {
"type": "string",
"format": "date"
},
"owned_by": {
"type": "string",
"format": "uuid"
},
"timezone": {
"type": "string"
}
}
},
"outputSchema": {
"$ref": "#/$defs/Cycle"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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"
],
"examples": [
"Create a module for the billing rewrite, lead it with Priya, and target end of quarter."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id",
"name"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"description": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"backlog",
"planned",
"in-progress",
"paused",
"completed",
"cancelled"
]
},
"lead": {
"type": "string",
"format": "uuid"
},
"members": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"start_date": {
"type": "string",
"format": "date"
},
"target_date": {
"type": "string",
"format": "date"
}
}
},
"outputSchema": {
"$ref": "#/$defs/Module"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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"
],
"examples": [
"Create an initiative for FY26 platform reliability and link the Platform and Infra projects."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"name"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"description_html": {
"type": "string"
},
"lead": {
"type": "string",
"format": "uuid"
},
"start_date": {
"type": "string",
"format": "date"
},
"end_date": {
"type": "string",
"format": "date"
}
}
},
"outputSchema": {
"$ref": "#/$defs/Initiative"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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"
],
"examples": [
"Write up the incident timeline as a page in the Platform project."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"name",
"description_html"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid",
"description": "Omit to create a workspace wiki page instead of a project page."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"description_html": {
"type": "string"
},
"access": {
"type": "integer",
"enum": [
0,
1
],
"description": "0 public within the workspace, 1 private to the author."
},
"is_locked": {
"type": "boolean"
}
}
},
"outputSchema": {
"$ref": "#/$defs/Page"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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"
],
"examples": [
"Summarise everything waiting in the Support intake queue and flag likely duplicates."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"cursor": {
"type": "string",
"description": "Cursor from a previous response, formatted `value:offset:is_prev`."
},
"per_page": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"order_by": {
"type": "string",
"description": "Field to sort by. Prefix with `-` for descending order."
}
}
},
"outputSchema": {
"type": "object",
"required": [
"results"
],
"properties": {
"results": {
"type": "array",
"items": {
"$ref": "#/$defs/IntakeWorkItem"
}
},
"total_count": {
"type": "integer"
},
"count": {
"type": "integer"
},
"total_pages": {
"type": "integer"
},
"next_cursor": {
"type": [
"string",
"null"
]
},
"prev_cursor": {
"type": [
"string",
"null"
]
},
"next_page_results": {
"type": "boolean"
},
"prev_page_results": {
"type": "boolean"
}
}
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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"
],
"examples": [
"Add Acme Corp as a customer and link the two feature requests they raised."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"name"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"email": {
"type": "string",
"format": "email"
},
"domain": {
"type": "string"
},
"website_url": {
"type": "string",
"format": "uri"
},
"employees": {
"type": "integer",
"minimum": 0
},
"stage": {
"type": "string"
},
"contract_status": {
"type": "string"
},
"description_html": {
"type": "string"
}
}
},
"outputSchema": {
"$ref": "#/$defs/Customer"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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"
],
"examples": [
"Who are the admins of this workspace?"
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"display_name": {
"type": "string"
},
"email": {
"type": "string"
},
"role_slug": {
"type": "string",
"description": "Filter by role, e.g. `admin`, `member`, `guest`."
},
"is_active": {
"type": "boolean"
},
"cursor": {
"type": "string",
"description": "Cursor from a previous response, formatted `value:offset:is_prev`."
},
"per_page": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"order_by": {
"type": "string",
"description": "Field to sort by. Prefix with `-` for descending order."
}
}
},
"outputSchema": {
"type": "object",
"required": [
"results"
],
"properties": {
"results": {
"type": "array",
"items": {
"$ref": "#/$defs/Member"
}
},
"total_count": {
"type": "integer"
},
"count": {
"type": "integer"
},
"total_pages": {
"type": "integer"
},
"next_cursor": {
"type": [
"string",
"null"
]
},
"prev_cursor": {
"type": [
"string",
"null"
]
},
"next_page_results": {
"type": "boolean"
},
"prev_page_results": {
"type": "boolean"
}
}
},
"security": [
{
"planeOAuth": [
"read"
]
}
]
},
{
"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"
],
"examples": [
"Who am I connected as, and is this a bot account?"
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"additionalProperties": false,
"properties": {}
},
"outputSchema": {
"$ref": "#/$defs/CurrentUser"
},
"security": [
{
"planeOAuth": [
"read"
]
}
]
},
{
"id": "get-pql-reference",
"name": "Retrieve the query language reference",
"description": "Fetch the Plane Query Language syntax reference \u2014 operators, functions, fields, and worked examples. Call this before composing a `pql` filter for any capability that accepts one.",
"tags": [
"query",
"read-only",
"prerequisite"
],
"examples": [
"Show me the PQL syntax for overdue, in-progress work assigned to me."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"additionalProperties": false,
"properties": {
"detail": {
"type": "string",
"enum": [
"full",
"brief"
],
"default": "full",
"description": "`full` gives operators, functions and examples; `brief` gives a compact field and operator list."
}
}
},
"outputSchema": {
"type": "object",
"properties": {
"reference": {
"type": "string",
"description": "The PQL reference as text."
}
}
},
"security": [
{
"planeOAuth": [
"read"
]
}
]
},
{
"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"
],
"examples": [
"What states does the Engineering project have, and which one counts as done?"
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"cursor": {
"type": "string",
"description": "Cursor from a previous response, formatted `value:offset:is_prev`."
},
"per_page": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"order_by": {
"type": "string",
"description": "Field to sort by. Prefix with `-` for descending order."
}
}
},
"outputSchema": {
"type": "object",
"required": [
"results"
],
"properties": {
"results": {
"type": "array",
"items": {
"$ref": "#/$defs/State"
}
},
"total_count": {
"type": "integer"
},
"count": {
"type": "integer"
},
"total_pages": {
"type": "integer"
},
"next_cursor": {
"type": [
"string",
"null"
]
},
"prev_cursor": {
"type": [
"string",
"null"
]
},
"next_page_results": {
"type": "boolean"
},
"prev_page_results": {
"type": "boolean"
}
}
},
"security": [
{
"planeOAuth": [
"read"
]
}
]
},
{
"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"
],
"examples": [
"Which labels exist in the Platform project?"
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"cursor": {
"type": "string",
"description": "Cursor from a previous response, formatted `value:offset:is_prev`."
},
"per_page": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"order_by": {
"type": "string",
"description": "Field to sort by. Prefix with `-` for descending order."
}
}
},
"outputSchema": {
"type": "object",
"required": [
"results"
],
"properties": {
"results": {
"type": "array",
"items": {
"$ref": "#/$defs/Label"
}
},
"total_count": {
"type": "integer"
},
"count": {
"type": "integer"
},
"total_pages": {
"type": "integer"
},
"next_cursor": {
"type": [
"string",
"null"
]
},
"prev_cursor": {
"type": [
"string",
"null"
]
},
"next_page_results": {
"type": "boolean"
},
"prev_page_results": {
"type": "boolean"
}
}
},
"security": [
{
"planeOAuth": [
"read"
]
}
]
},
{
"id": "read-work-item-activity",
"name": "Read a work item's history",
"description": "Page through the change history of a work item \u2014 state moves, reassignments, field edits \u2014 to summarise what happened and when.",
"tags": [
"work-items",
"audit",
"read-only"
],
"examples": [
"Summarise what changed on ENG-42 this week, including state changes and reassignments."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id",
"work_item_id"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"work_item_id": {
"type": "string",
"format": "uuid"
},
"cursor": {
"type": "string",
"description": "Cursor from a previous response, formatted `value:offset:is_prev`."
},
"per_page": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"order_by": {
"type": "string",
"description": "Field to sort by. Prefix with `-` for descending order."
}
}
},
"outputSchema": {
"type": "object",
"required": [
"results"
],
"properties": {
"results": {
"type": "array",
"items": {
"$ref": "#/$defs/WorkItemActivity"
}
},
"total_count": {
"type": "integer"
},
"count": {
"type": "integer"
},
"total_pages": {
"type": "integer"
},
"next_cursor": {
"type": [
"string",
"null"
]
},
"prev_cursor": {
"type": [
"string",
"null"
]
},
"next_page_results": {
"type": "boolean"
},
"prev_page_results": {
"type": "boolean"
}
}
},
"security": [
{
"planeOAuth": [
"read"
]
}
]
},
{
"id": "relate-work-items",
"name": "Relate work items",
"description": "Create a typed relation between two work items \u2014 blocking, blocked by, duplicate, relates to, or a custom workspace relation type \u2014 so dependencies are explicit.",
"tags": [
"work-items",
"dependencies",
"write"
],
"examples": [
"Mark ENG-42 as blocked by ENG-17."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id",
"work_item_id",
"relation_type",
"related_work_item_ids"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"work_item_id": {
"type": "string",
"format": "uuid"
},
"relation_type": {
"type": "string",
"description": "Relation kind. List the workspace relation definitions first to discover custom types.",
"examples": [
"blocked_by",
"blocks",
"duplicate",
"relates_to"
]
},
"related_work_item_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
},
"minItems": 1
}
}
},
"outputSchema": {
"type": "array",
"items": {
"$ref": "#/$defs/WorkItemRelation"
}
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"id": "link-work-item",
"name": "Attach an external link to a work item",
"description": "Add a titled external URL to a work item \u2014 a pull request, a dashboard, a design file \u2014 and read back the links already on it.",
"tags": [
"work-items",
"links",
"write"
],
"examples": [
"Link the pull request for this fix to ENG-42."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id",
"work_item_id",
"url"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"work_item_id": {
"type": "string",
"format": "uuid"
},
"url": {
"type": "string",
"format": "uri"
},
"title": {
"type": "string"
}
}
},
"outputSchema": {
"$ref": "#/$defs/WorkItemLink"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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"
],
"examples": [
"Attach the failing test log to ENG-42."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id",
"work_item_id",
"name",
"size",
"type"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"work_item_id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"description": "File name including its extension."
},
"size": {
"type": "integer",
"minimum": 1,
"description": "File size in bytes."
},
"type": {
"type": "string",
"description": "MIME type, e.g. `image/png`."
},
"external_source": {
"type": "string"
},
"external_id": {
"type": "string"
}
}
},
"outputSchema": {
"$ref": "#/$defs/WorkItemAttachmentUpload"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"id": "manage-work-item-types",
"name": "Manage work item types",
"description": "List and create the work item types in a project \u2014 Bug, Story, Epic and any custom type \u2014 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"
],
"examples": [
"Add an Incident work item type to the Platform project."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id",
"name"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid",
"description": "Omit for the workspace's own set of types rather than one project's."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"description": {
"type": "string"
},
"is_active": {
"type": "boolean"
},
"logo_props": {
"type": "object",
"additionalProperties": true
}
}
},
"outputSchema": {
"$ref": "#/$defs/WorkItemType"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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"
],
"examples": [
"Set the Severity property on ENG-42 to S1."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id",
"work_item_id",
"property_id",
"values"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"work_item_id": {
"type": "string",
"format": "uuid"
},
"property_id": {
"type": "string",
"format": "uuid",
"description": "List the work item type's properties first to find this id."
},
"values": {
"type": "array",
"minItems": 1,
"description": "One entry per value. Multi-select properties accept several.",
"items": {
"type": "string"
}
}
}
},
"outputSchema": {
"type": "array",
"items": {
"$ref": "#/$defs/WorkItemPropertyValue"
}
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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"
],
"examples": [
"Set up Fibonacci story points on the Engineering project."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id",
"name",
"type"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"type": {
"type": "string",
"enum": [
"points",
"categories",
"time"
]
},
"estimate_points": {
"type": "array",
"description": "The selectable values, in order.",
"items": {
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "integer"
},
"value": {
"type": "string"
}
}
}
}
}
},
"outputSchema": {
"$ref": "#/$defs/Estimate"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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"
],
"examples": [
"Create an epic for the billing rewrite and move the five related bugs under it."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id",
"name"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"description_html": {
"type": "string"
},
"state_id": {
"type": "string",
"format": "uuid"
},
"parent_id": {
"type": "string",
"format": "uuid"
},
"priority": {
"type": "string",
"enum": [
"urgent",
"high",
"medium",
"low",
"none"
]
},
"assignee_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"label_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"start_date": {
"type": "string",
"format": "date"
},
"target_date": {
"type": "string",
"format": "date"
}
}
},
"outputSchema": {
"$ref": "#/$defs/Epic"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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"
],
"examples": [
"Add a Beta milestone to the Platform project targeting 15 March."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id",
"title"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"target_date": {
"type": "string",
"format": "date"
}
}
},
"outputSchema": {
"$ref": "#/$defs/Milestone"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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 \u2014 the rest of the sprint loop beyond creating the cycle.",
"tags": [
"planning",
"cycles",
"write"
],
"examples": [
"Put the three highest-priority bugs into the current cycle."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id",
"cycle_id",
"work_item_ids"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"cycle_id": {
"type": "string",
"format": "uuid"
},
"work_item_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
},
"minItems": 1
}
}
},
"outputSchema": {
"type": "object",
"required": [
"results"
],
"properties": {
"results": {
"type": "array",
"items": {
"$ref": "#/$defs/WorkItem"
}
},
"total_count": {
"type": "integer"
},
"count": {
"type": "integer"
},
"total_pages": {
"type": "integer"
},
"next_cursor": {
"type": [
"string",
"null"
]
},
"prev_cursor": {
"type": [
"string",
"null"
]
},
"next_page_results": {
"type": "boolean"
},
"prev_page_results": {
"type": "boolean"
}
}
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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"
],
"examples": [
"Move everything labelled billing into the billing module."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id",
"module_id",
"work_item_ids"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"module_id": {
"type": "string",
"format": "uuid"
},
"work_item_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
},
"minItems": 1
}
}
},
"outputSchema": {
"type": "object",
"required": [
"results"
],
"properties": {
"results": {
"type": "array",
"items": {
"$ref": "#/$defs/WorkItem"
}
},
"total_count": {
"type": "integer"
},
"count": {
"type": "integer"
},
"total_pages": {
"type": "integer"
},
"next_cursor": {
"type": [
"string",
"null"
]
},
"prev_cursor": {
"type": [
"string",
"null"
]
},
"next_page_results": {
"type": "boolean"
},
"prev_page_results": {
"type": "boolean"
}
}
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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"
],
"examples": [
"File this bug report into the Support intake queue."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id",
"issue"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"issue": {
"type": "object",
"required": [
"name"
],
"description": "The work item to submit for triage.",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"description_html": {
"type": "string"
},
"priority": {
"type": "string",
"enum": [
"urgent",
"high",
"medium",
"low",
"none"
]
}
}
}
}
},
"outputSchema": {
"$ref": "#/$defs/IntakeWorkItem"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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"
],
"examples": [
"Log Acme's request for SAML and link the two work items covering it."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"customer_id",
"name"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"customer_id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"description_html": {
"type": "string"
},
"link": {
"type": "string",
"format": "uri",
"description": "Where the request came from, e.g. a support ticket."
},
"work_item_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
}
},
"outputSchema": {
"$ref": "#/$defs/CustomerRequest"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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"
],
"examples": [
"Which teamspaces exist and which projects belong to each?"
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"cursor": {
"type": "string",
"description": "Cursor from a previous response, formatted `value:offset:is_prev`."
},
"per_page": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"order_by": {
"type": "string",
"description": "Field to sort by. Prefix with `-` for descending order."
}
}
},
"outputSchema": {
"type": "object",
"required": [
"results"
],
"properties": {
"results": {
"type": "array",
"items": {
"$ref": "#/$defs/Teamspace"
}
},
"total_count": {
"type": "integer"
},
"count": {
"type": "integer"
},
"total_pages": {
"type": "integer"
},
"next_cursor": {
"type": [
"string",
"null"
]
},
"prev_cursor": {
"type": [
"string",
"null"
]
},
"next_page_results": {
"type": "boolean"
},
"prev_page_results": {
"type": "boolean"
}
}
},
"security": [
{
"planeOAuth": [
"read"
]
}
]
},
{
"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"
],
"examples": [
"Cut a 2.4.0 release with everything completed in the current cycle and draft the changelog."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"name"
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"description_html": {
"type": "string"
},
"released_at": {
"type": "string",
"format": "date-time"
},
"work_item_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
}
},
"outputSchema": {
"$ref": "#/$defs/Release"
},
"security": [
{
"planeOAuth": [
"read"
]
}
]
},
{
"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"
],
"examples": [
"Reply in the Agent Run with the fix I applied and mark the run complete."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"agent_run_id",
"type",
"content"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"agent_run_id": {
"type": "string",
"format": "uuid",
"description": "From the webhook that triggered this run."
},
"type": {
"type": "string",
"enum": [
"thought",
"action",
"response",
"elicitation",
"error"
],
"description": "`thought` and `action` are ephemeral; `response` posts a comment; `elicitation` asks the user a question."
},
"content": {
"type": "object",
"description": "Shape depends on `type`. See the signals and content payload reference.",
"additionalProperties": true
},
"signal": {
"type": "string",
"enum": [
"continue",
"complete",
"failed"
],
"description": "Whether the run stays open after this activity."
}
}
},
"outputSchema": {
"$ref": "#/$defs/AgentRunActivity"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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"
],
"examples": [
"How many open work items are there per assignee in the Engineering project?",
"Break down this cycle by state group and priority."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid",
"description": "Omit to count across the whole workspace."
},
"pql": {
"type": "string",
"description": "Optional PQL filter. Call the PQL reference first."
},
"group_by": {
"type": "string",
"description": "Grouping key. These are grouping keys only \u2014 they are not PQL filter fields.",
"enum": [
"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": {
"type": "string",
"description": "Second grouping key, from the same set as `group_by`.",
"enum": [
"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"
]
}
}
},
"outputSchema": {
"$ref": "#/$defs/WorkItemCountBreakdown"
},
"security": [
{
"planeOAuth": [
"read"
]
}
]
},
{
"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"
],
"examples": [
"How much time has been logged per work item in the Platform project this month?"
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
}
}
},
"outputSchema": {
"type": "array",
"items": {
"$ref": "#/$defs/WorkLogTotal"
}
},
"security": [
{
"planeOAuth": [
"read"
]
}
]
},
{
"id": "manage-project-features",
"name": "Read and toggle project features",
"description": "Read or change which feature modules a project has enabled \u2014 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"
],
"examples": [
"Are cycles enabled on the Platform project? If not, turn them on."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"project_id"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_id": {
"type": "string",
"format": "uuid"
},
"epics": {
"type": "boolean"
},
"modules": {
"type": "boolean"
},
"cycles": {
"type": "boolean"
},
"views": {
"type": "boolean"
},
"pages": {
"type": "boolean"
},
"intakes": {
"type": "boolean"
},
"work_item_types": {
"type": "boolean"
}
}
},
"outputSchema": {
"$ref": "#/$defs/ProjectFeatures"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"id": "manage-workspace-features",
"name": "Read and toggle workspace features",
"description": "Read or change which workspace-level features are enabled \u2014 initiatives, teamspaces, customers, wiki, project grouping, and Plane AI.",
"tags": [
"workspace",
"configuration",
"write",
"prerequisite"
],
"examples": [
"Which workspace features are on, and is Plane AI enabled?"
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"project_grouping": {
"type": "boolean"
},
"initiatives": {
"type": "boolean"
},
"teams": {
"type": "boolean",
"description": "Teamspaces."
},
"customers": {
"type": "boolean"
},
"wiki": {
"type": "boolean"
},
"pi": {
"type": "boolean",
"description": "Plane AI."
}
}
},
"outputSchema": {
"$ref": "#/$defs/WorkspaceFeatures"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
},
{
"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 \u2014 the native integrations (GitHub, GitLab, Slack, Sentry, Bitbucket) are configured in workspace settings and have no public endpoints.",
"tags": [
"workspace",
"identity",
"integration",
"write"
],
"examples": [
"Map the engineering-all IdP group to the Member role in this workspace."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
],
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"idp_group_name",
"role"
],
"additionalProperties": false,
"properties": {
"workspace_slug": {
"type": "string",
"description": "Workspace identifier from the workspace URL, e.g. `my-team`. Implied by the credential on MCP."
},
"idp_group_name": {
"type": "string",
"description": "Group name as it appears in the identity provider."
},
"role": {
"type": "string",
"description": "Plane role to grant members of that group."
}
}
},
"outputSchema": {
"$ref": "#/$defs/IdpGroupMapping"
},
"security": [
{
"planeOAuth": [
"read",
"write"
]
}
]
}
],
"$defs": {
"WorkItem": {
"type": "object",
"title": "Work item",
"description": "A task, bug, or story. Epics are work items of an epic type.",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"description_html": {
"type": [
"string",
"null"
]
},
"sequence_id": {
"type": "integer",
"description": "Per-project counter behind the human identifier, e.g. 42 in ENG-42."
},
"project": {
"type": "string",
"format": "uuid"
},
"state": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"priority": {
"type": "string",
"enum": [
"urgent",
"high",
"medium",
"low",
"none"
]
},
"assignees": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"labels": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"type_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"parent": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"estimate_point": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"start_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"target_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"completed_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"archived_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"is_draft": {
"type": "boolean"
},
"external_source": {
"type": [
"string",
"null"
]
},
"external_id": {
"type": [
"string",
"null"
]
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"WorkItemComment": {
"type": "object",
"title": "Work item comment",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"comment_html": {
"type": [
"string",
"null"
]
},
"access": {
"type": "string",
"enum": [
"INTERNAL",
"EXTERNAL"
]
},
"issue": {
"type": "string",
"format": "uuid"
},
"parent": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"actor": {
"type": "string",
"format": "uuid"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"WorkLog": {
"type": "object",
"title": "Work log",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"duration": {
"type": "integer",
"description": "Minutes logged."
},
"description": {
"type": [
"string",
"null"
]
},
"issue_id": {
"type": "string",
"format": "uuid"
},
"logged_by": {
"type": "string",
"format": "uuid"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"Project": {
"type": "object",
"title": "Project",
"required": [
"id",
"name",
"identifier"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"identifier": {
"type": "string",
"description": "Short prefix used in work item identifiers, e.g. `ENG`."
},
"description": {
"type": [
"string",
"null"
]
},
"network": {
"type": "integer",
"enum": [
0,
2
],
"description": "0 private to members, 2 visible to the whole workspace."
},
"project_lead": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"default_assignee": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"timezone": {
"type": "string"
},
"cycle_view": {
"type": "boolean"
},
"module_view": {
"type": "boolean"
},
"page_view": {
"type": "boolean"
},
"intake_view": {
"type": "boolean"
},
"is_time_tracking_enabled": {
"type": "boolean"
},
"archived_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"Cycle": {
"type": "object",
"title": "Cycle",
"description": "A time-boxed iteration within a project.",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"start_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"end_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"status": {
"type": "string",
"enum": [
"draft",
"upcoming",
"current",
"completed"
]
},
"owned_by": {
"type": "string",
"format": "uuid"
},
"project": {
"type": "string",
"format": "uuid"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"Module": {
"type": "object",
"title": "Module",
"description": "A grouping of related work within a project.",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string",
"enum": [
"backlog",
"planned",
"in-progress",
"paused",
"completed",
"cancelled"
]
},
"lead": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"members": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"start_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"target_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"project": {
"type": "string",
"format": "uuid"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"Milestone": {
"type": "object",
"title": "Milestone",
"required": [
"id",
"title"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"title": {
"type": "string"
},
"target_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"project": {
"type": "string",
"format": "uuid"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"Epic": {
"type": "object",
"title": "Epic",
"description": "A large body of work that parents other work items.",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"description_html": {
"type": [
"string",
"null"
]
},
"state_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"parent_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"priority": {
"type": "string",
"enum": [
"urgent",
"high",
"medium",
"low",
"none"
]
},
"assignee_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"label_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"start_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"target_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"Initiative": {
"type": "object",
"title": "Initiative",
"description": "A workspace-level goal that projects and epics roll up into.",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"description_html": {
"type": [
"string",
"null"
]
},
"lead": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"state": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"start_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"end_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"archived_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"State": {
"type": "object",
"title": "Workflow state",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"color": {
"type": "string"
},
"group": {
"type": "string",
"enum": [
"backlog",
"unstarted",
"started",
"completed",
"cancelled"
]
},
"description": {
"type": [
"string",
"null"
]
},
"sequence": {
"type": "number"
},
"default": {
"type": "boolean"
},
"is_triage": {
"type": "boolean"
},
"project": {
"type": "string",
"format": "uuid"
}
}
},
"Label": {
"type": "object",
"title": "Label",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"color": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
]
},
"parent": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"sort_order": {
"type": "number"
},
"project": {
"type": "string",
"format": "uuid"
}
}
},
"Page": {
"type": "object",
"title": "Page",
"description": "A document at workspace (wiki) or project scope.",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"description_html": {
"type": [
"string",
"null"
]
},
"access": {
"type": "integer",
"enum": [
0,
1
]
},
"is_locked": {
"type": "boolean"
},
"archived_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"owned_by": {
"type": "string",
"format": "uuid"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"IntakeWorkItem": {
"type": "object",
"title": "Intake work item",
"description": "A submitted request awaiting triage.",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"status": {
"type": "integer",
"enum": [
-2,
-1,
0,
1,
2
],
"description": "-2 pending, -1 rejected, 0 snoozed, 1 accepted, 2 duplicate."
},
"snoozed_till": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"duplicate_to": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"source": {
"type": [
"string",
"null"
],
"description": "Where the request came in from, e.g. `in-app`, `email`, `forms`."
},
"issue": {
"type": "string",
"format": "uuid"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"Customer": {
"type": "object",
"title": "Customer",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"email": {
"type": [
"string",
"null"
],
"format": "email"
},
"domain": {
"type": [
"string",
"null"
]
},
"website_url": {
"type": [
"string",
"null"
],
"format": "uri"
},
"employees": {
"type": [
"integer",
"null"
]
},
"stage": {
"type": [
"string",
"null"
]
},
"contract_status": {
"type": [
"string",
"null"
]
},
"revenue": {
"type": [
"string",
"null"
]
},
"description_html": {
"type": [
"string",
"null"
]
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"Member": {
"type": "object",
"title": "Workspace member",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"member": {
"type": "object",
"description": "The user record for this membership.",
"additionalProperties": true
},
"display_name": {
"type": "string"
},
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
},
"email": {
"type": [
"string",
"null"
],
"format": "email"
},
"role_slug": {
"type": "string",
"description": "Role within the namespace, e.g. `admin`, `member`, `guest`."
},
"is_active": {
"type": "boolean"
},
"is_bot": {
"type": "boolean"
}
}
},
"WorkItemActivity": {
"type": "object",
"title": "Work item activity",
"description": "One entry in a work item's change history.",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"field": {
"type": [
"string",
"null"
],
"description": "Which field changed, e.g. `state`, `priority`, `assignees`."
},
"verb": {
"type": "string",
"description": "What happened, e.g. `created`, `updated`."
},
"old_value": {
"type": [
"string",
"null"
]
},
"new_value": {
"type": [
"string",
"null"
]
},
"comment": {
"type": [
"string",
"null"
],
"description": "Human-readable summary of the change."
},
"actor": {
"type": "string",
"format": "uuid"
},
"issue": {
"type": "string",
"format": "uuid"
},
"created_at": {
"type": "string",
"format": "date-time"
}
}
},
"WorkItemLink": {
"type": "object",
"title": "Work item link",
"description": "An external URL attached to a work item.",
"required": [
"id",
"url"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"url": {
"type": "string",
"format": "uri"
},
"title": {
"type": [
"string",
"null"
]
},
"metadata": {
"type": "object",
"additionalProperties": true
},
"issue": {
"type": "string",
"format": "uuid"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"WorkItemAttachment": {
"type": "object",
"title": "Work item attachment",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"asset": {
"type": "string",
"description": "Storage key for the uploaded file."
},
"attributes": {
"type": "object",
"description": "File metadata.",
"properties": {
"name": {
"type": "string"
},
"size": {
"type": "integer"
},
"type": {
"type": "string"
}
}
},
"issue_id": {
"type": "string",
"format": "uuid"
},
"created_at": {
"type": "string",
"format": "date-time"
}
}
},
"WorkItemAttachmentUpload": {
"type": "object",
"title": "Attachment upload credentials",
"description": "Presigned target to POST the file to, followed by a completion call.",
"properties": {
"upload_data": {
"type": "object",
"description": "Presigned URL and the form fields to send with the file.",
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"fields": {
"type": "object",
"additionalProperties": true
}
}
},
"asset_id": {
"type": "string",
"format": "uuid"
},
"asset_url": {
"type": "string"
}
}
},
"WorkItemRelation": {
"type": "object",
"title": "Work item relation",
"description": "A typed link between two work items, such as blocking or duplicate.",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"relation_type": {
"type": "string",
"description": "Relation kind. Workspaces can also define custom relation types.",
"examples": [
"blocked_by",
"blocks",
"duplicate",
"relates_to"
]
},
"issue": {
"type": "string",
"format": "uuid"
},
"related_issue": {
"type": "string",
"format": "uuid"
},
"created_at": {
"type": "string",
"format": "date-time"
}
}
},
"WorkItemType": {
"type": "object",
"title": "Work item type",
"description": "A type that gives work items their own icon and custom properties.",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"logo_props": {
"type": "object",
"additionalProperties": true
},
"is_active": {
"type": "boolean"
},
"is_epic": {
"type": "boolean"
},
"is_default": {
"type": "boolean"
},
"level": {
"type": "integer"
},
"project_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"WorkItemPropertyValue": {
"type": "object",
"title": "Custom property value",
"description": "The value of one custom property on one work item.",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"property": {
"type": "string",
"format": "uuid"
},
"value": {
"description": "Shape depends on the property type \u2014 text, number, date, boolean, or option id."
},
"value_text": {
"type": [
"string",
"null"
]
},
"value_option": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"Estimate": {
"type": "object",
"title": "Estimate",
"description": "A project's estimation system.",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"points",
"categories",
"time"
]
},
"last_used": {
"type": "boolean"
},
"project": {
"type": "string",
"format": "uuid"
},
"created_at": {
"type": "string",
"format": "date-time"
}
}
},
"EstimatePoint": {
"type": "object",
"title": "Estimate point",
"description": "One selectable value in an estimate system.",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"key": {
"type": "integer"
},
"value": {
"type": "string"
},
"estimate": {
"type": "string",
"format": "uuid"
},
"created_at": {
"type": "string",
"format": "date-time"
}
}
},
"CustomerRequest": {
"type": "object",
"title": "Customer request",
"description": "Something a customer asked for, linkable to the work items that deliver it.",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"description_html": {
"type": [
"string",
"null"
]
},
"link": {
"type": [
"string",
"null"
],
"format": "uri"
},
"customer_id": {
"type": "string",
"format": "uuid"
},
"work_item_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"Teamspace": {
"type": "object",
"title": "Teamspace",
"description": "A group of members and projects that share a space.",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"description_html": {
"type": [
"string",
"null"
]
},
"lead_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"member_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"project_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"logo_props": {
"type": "object",
"additionalProperties": true
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"CurrentUser": {
"type": "object",
"title": "Current user",
"description": "The user or bot the credential authenticates as.",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"email": {
"type": [
"string",
"null"
],
"format": "email"
},
"display_name": {
"type": "string"
},
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
},
"avatar": {
"type": [
"string",
"null"
]
},
"is_bot": {
"type": "boolean"
},
"last_workspace_id": {
"type": [
"string",
"null"
],
"format": "uuid"
}
}
},
"Release": {
"type": "object",
"title": "Release",
"description": "A release in the workspace, with its tags, labels, and changelog.",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"description_html": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string"
},
"released_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"changelog": {
"type": [
"string",
"null"
]
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"AgentRunActivity": {
"type": "object",
"title": "Agent run activity",
"description": "One unit of communication inside an Agent Run. Thoughts and actions are ephemeral; a response becomes a visible comment.",
"required": [
"id",
"type"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"type": {
"type": "string",
"enum": [
"prompt",
"thought",
"action",
"response",
"elicitation",
"error"
]
},
"content": {
"type": "object",
"additionalProperties": true
},
"signal": {
"type": [
"string",
"null"
],
"enum": [
"continue",
"complete",
"failed",
null
]
},
"agent_run": {
"type": "string",
"format": "uuid"
},
"created_at": {
"type": "string",
"format": "date-time"
}
}
},
"WorkItemCountBreakdown": {
"type": "object",
"title": "Work item count breakdown",
"description": "Aggregated work item counts, optionally grouped and sub-grouped. The closest thing Plane exposes programmatically to a dashboard figure.",
"properties": {
"count": {
"type": "integer",
"description": "Total matching work items."
},
"group_by": {
"type": [
"string",
"null"
]
},
"sub_group_by": {
"type": [
"string",
"null"
]
},
"groups": {
"type": "array",
"description": "One entry per group when `group_by` is set.",
"items": {
"type": "object",
"properties": {
"key": {
"type": [
"string",
"null"
],
"description": "The grouping value, e.g. a state id or a priority."
},
"count": {
"type": "integer"
},
"sub_groups": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": [
"string",
"null"
]
},
"count": {
"type": "integer"
}
}
}
}
}
}
}
}
},
"WorkLogTotal": {
"type": "object",
"title": "Work log total",
"description": "Total time logged against one work item, in minutes.",
"properties": {
"issue_id": {
"type": "string",
"format": "uuid"
},
"duration": {
"type": "integer",
"description": "Total minutes logged."
}
}
},
"ProjectFeatures": {
"type": "object",
"title": "Project features",
"description": "Which feature modules are enabled on a project. Read this before calling a capability that depends on one.",
"properties": {
"epics": {
"type": "boolean"
},
"modules": {
"type": "boolean"
},
"cycles": {
"type": "boolean"
},
"views": {
"type": "boolean"
},
"pages": {
"type": "boolean"
},
"intakes": {
"type": "boolean"
},
"work_item_types": {
"type": "boolean"
}
}
},
"WorkspaceFeatures": {
"type": "object",
"title": "Workspace features",
"description": "Which workspace-level features are enabled, including Plane AI (`pi`).",
"properties": {
"project_grouping": {
"type": "boolean"
},
"initiatives": {
"type": "boolean"
},
"teams": {
"type": "boolean",
"description": "Teamspaces."
},
"customers": {
"type": "boolean"
},
"wiki": {
"type": "boolean"
},
"pi": {
"type": "boolean",
"description": "Plane AI."
}
}
},
"IdpGroupMapping": {
"type": "object",
"title": "Identity provider group mapping",
"description": "Maps a group from your identity provider to a Plane role, at workspace or project scope.",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"idp_group_name": {
"type": "string",
"description": "Group name as it appears in the identity provider."
},
"role": {
"type": "string",
"description": "Plane role granted to members of that group."
},
"project_id": {
"type": [
"string",
"null"
],
"format": "uuid",
"description": "Set on project mappings only."
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"Error": {
"type": "object",
"title": "Error",
"description": "An error. Read `error` or `detail`, whichever is present, for the message; `error_code` is the stable machine-readable code where the endpoint sets one.",
"properties": {
"error": {
"type": "string",
"description": "Human-readable message. Set on request, throttling, and not-found failures."
},
"error_code": {
"type": "string",
"description": "Stable code for programmatic handling, where the endpoint sets one."
},
"detail": {
"type": "string",
"description": "Human-readable message. Set on authentication and permission failures."
}
}
}
},
"supportsAuthenticatedExtendedCard": false,
"x-plane": {
"repositoryUrl": "https://github.com/makeplane/plane-mcp-server",
"sourceUrl": "https://github.com/makeplane/plane",
"developerDocsUrl": "https://developers.plane.so",
"supportEmail": "support@plane.so",
"deployments": [
"cloud",
"self-hosted",
"air-gapped"
]
}
}