Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
90
A2A A2A 0.3.0 v0.3.0

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.

Build a free agent shortlist. Save this listing to revisit it from your account. Sign in to save
🛡
Own this agent?
Verify the domain 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.
Verify ownership
🔔 Watch this agent. Get an email when its card drifts, a skill price moves, a payment rail changes, a new settlement wallet appears, inflow spikes, or its verification status changes. Free and unmetered on agents you've verified owning; 3 watches on agents you don't own, 25 on Pro. Sign in to watch
Trust score
45/100
grade D · 9 criteria
Uptime
48.8%
84 direct probes · 30d
Observed inflow · 30d
no payment wallet declared
Invocations · 7d
0
no calls observed
Card drift · 7d
changed
1 snapshots tracked
Owner
unverified
claim this listing →

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 ▴
pass Valid AgentCard 10/10
Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification).
fail Live JSON-RPC 2/25
Card is valid but has no .url field.
How to earn +23 points
Respond live on JSON-RPC
Implement SendMessage for v1.0 (or message/send for v0.x), negotiate A2A-Version, and return a schema-valid JSON-RPC response. Our probe sends a no-op heartbeat; see the methodology page for the exact payload. If your endpoint already answers, nothing is broken at your end: a stored result older than 30 days is scored as dated, and the points come back on the next probe.
Docs →
partial Protocol version 5/10
Declares pre-1.0 A2A 0.3.0 (Google preview). Upgrade to v1.x for full points.
How to earn +5 points
Declare protocolVersion
Add `"protocolVersion": "1.0"` to every entry in `supportedInterfaces[]`. A2A v1.0 removed the AgentCard root field.
Docs →
info JWS signature 0/10
Card is unsigned (most published agents are).
fail Uptime track record 7/15
41/84 probes succeeded (49% uptime).
How to earn +8 points
Stabilise uptime
We probe every agent on a tiered schedule and grade the last 30 days. Sustained 99 %+ uptime over 20+ conclusive probes scores full points. Probes you refuse us (HTTP 429/403, a WAF challenge, robots.txt) no longer count against you either way, so what is left is genuine unavailability — usually a transient 5xx on cold start.
Docs →
pass Skill declaration 10/10
Declares 41 skills with structured metadata.
partial Verified Identity 5/10
Provider declared: Plane Software, Inc. (https://plane.so). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit.
How to earn +5 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs →
pass Freshness + modern flags 4/5
seen in upstream source within 0d
partial Security declaration 2/5
Declares 2 security scheme(s) but none use PKCE or mTLS.
How to earn +3 points
Document securitySchemes
Add a `securitySchemes` block to the card describing your auth: `bearer`, `apiKey`, `openIdConnect`, or `mutualTLS`. Routers refuse to call agents that declare no auth model.
Docs →
⚠ Card drift detected. This agent's 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 recorded

Nothing 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 to agent-card.json
Captured Hash
2026-09-11 09:28:54 current bb2afdddda59… view →
Uptime
48.8%
84 direct probes · 30d
Response
274ms
last direct probe
Skills
41
declared
Streaming
SSE-capable

Skills · 41 declared · mapped to canonical taxonomy

Search work items

Find work items across a workspace by free-text query or a Plane Query Language (PQL) filter, without knowing project ids up front.

canonical Semantic Code Search match 83%
work-itemssearchread-only
List work items in a project

Page through the work items in one project, optionally filtered with PQL and narrowed to a sparse field set.

canonical Resume Screening match 82%
work-itemsread-only
Find a work item by its readable identifier

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…

canonical Name match 82%
work-itemsread-onlyprerequisite
Create a work item

Open a new work item in a project with a name, description, priority, state, assignees, labels, and dates.

canonical Resume Screening match 83%
work-itemswrite
Update a work item

Change any subset of a work item — state, priority, dates, description, assignees, labels. Only the fields passed are modified.

canonical Editing and Proofreading match 82%
work-itemswrite
Comment on a work item

Post, edit, or read comments on a work item so an agent can report progress where the work lives.

canonical Editing and Proofreading match 84%
work-itemscollaborationwrite
Log time against a work item

Record a work log with a duration in minutes, and read back the logs on a work item.

canonical Performance Monitoring match 85%
time-trackingwrite
List projects

Enumerate the projects in a workspace with their ids, identifiers, and enabled features.

canonical Id match 84%
projectsread-only
Create a project

Set up a project with a name, short identifier, lead, timezone, and the feature modules it should use.

canonical Feature Code Generation match 86%
projectswrite
Plan a cycle

Create a time-boxed cycle, list what is in it, and move work items in or out — the sprint-planning loop.

canonical Budgeting and Forecasting match 85%
planningcycleswrite
Plan a module

Group related work into a module with a lead, members, dates, and a delivery status.

canonical Content Calendar Management match 85%
planningmoduleswrite
Track an initiative

Create and update workspace initiatives, and attach the projects and epics that roll up into them.

planninginitiativeswrite
Read and write wiki pages

List and create pages at workspace (wiki) or project scope, so an agent can file specs and notes next to the work.

canonical Documentation Generation match 85%
knowledgepageswrite
Triage the intake queue

Read the intake queue for a project and accept, reject, or convert submitted requests into work items.

canonical Physiotherapy Booking and Triage match 86%
intaketriagewrite
Manage customers and requests

Create customer records, log their requests, and link the work items that deliver against them.

canonical Invoicing and Billing match 89%
customerswrite
Resolve workspace members

Look up workspace and project members and their roles, so names in a prompt can be turned into the ids other capabilities require.

canonical Agent Profiles match 85%
membersread-onlyprerequisite
Identify the current user

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.

canonical Agent Profiles match 85%
membersread-onlyprerequisite
Retrieve the query language reference

Fetch the Plane Query Language syntax reference — operators, functions, fields, and worked examples. Call this before composing a `pql` filter for any capabilit…

canonical Knowledge Graph Query match 83%
queryread-onlyprerequisite
List workflow states

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…

canonical Workflow Automation match 83%
workspacestatesread-onlyprerequisite
List labels

Read a project's labels. Call this to turn label names into the ids that creating and updating work items requires.

canonical Design and Figma Operations match 83%
workspacelabelsread-onlyprerequisite
Read a work item's history

Page through the change history of a work item — state moves, reassignments, field edits — to summarise what happened and when.

canonical Resume Screening match 83%
work-itemsauditread-only
Relate work items

Create a typed relation between two work items — blocking, blocked by, duplicate, relates to, or a custom workspace relation type — so dependencies are explicit…

canonical Task Decomposition match 82%
work-itemsdependencieswrite
Attach an external link to a work item

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.

canonical Script Integration match 83%
work-itemslinkswrite
Attach a file to a work item

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…

canonical Workflow Automation match 83%
work-itemsattachmentswrite
Manage work item types

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`…

canonical Workflow Automation match 81%
work-itemsconfigurationwriteprerequisite
Read and write custom property values

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.

canonical IoT Sensor Read and Control match 81%
work-itemscustom-fieldswrite
Manage estimates

Create a project's estimation system and read its points, so the `estimate_point` id required when sizing a work item can be resolved.

canonical Budgeting and Forecasting match 85%
planningestimateswriteprerequisite
Manage epics

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: …

canonical Maps and Routing match 82%
planningepicswrite
Plan a milestone

Create dated checkpoints in a project and attach the work items that must land by each one.

canonical Task Decomposition match 85%
planningmilestoneswrite
Fill and close out a cycle

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…

canonical Invoicing and Billing match 85%
planningcycleswrite
Fill a module

Add work items to a module and list what it already contains.

canonical Budgeting and Forecasting match 84%
planningmoduleswrite
Submit and resolve an intake request

File a request into a project intake queue, then accept, reject, snooze, or mark it duplicate. Pairs with reading the queue.

canonical Incident Response match 85%
intaketriagewrite
Log customer requests

Record what a customer asked for and link the work items that deliver it, so commitments are traceable back to the account.

canonical Invoicing and Billing match 87%
customerswrite
List teamspaces

Read the teamspaces in a workspace with their members and projects, to scope work to the right team.

canonical Resume Screening match 83%
workspaceteamspacesread-only
Manage releases and changelogs

Create releases, attach the work items shipping in them, manage release tags and labels, and generate or edit the changelog.

canonical Invoicing and Billing match 87%
releaseswrite
Report progress as a Plane agent

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 …

canonical Multi Agent Planning match 82%
agentscollaborationwrite
Count and group work items

Aggregate work item counts across a workspace or project, grouped and sub-grouped by state, priority, assignee, label, type, cycle, module, milestone, release, …

canonical Real-Time News Aggregation match 83%
work-itemsreportingread-only
Summarise logged time

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.

canonical Document Summarization match 85%
time-trackingreportingread-only
Read and toggle project features

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…

canonical Feature Code Generation match 84%
projectsconfigurationwriteprerequisite
Read and toggle workspace features

Read or change which workspace-level features are enabled — initiatives, teamspaces, customers, wiki, project grouping, and Plane AI.

canonical Feature Code Generation match 82%
workspaceconfigurationwriteprerequisite
Map identity provider groups to roles

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…

canonical Agent Profiles match 82%
workspaceidentityintegrationwrite

Health · last 30 probes

When HTTP Live JSON-RPC Latency
2026-09-15 01:10:59 200 274ms
2026-09-14 18:47:08 200 254ms
2026-09-14 12:28:46 200 214ms
2026-09-14 05:54:20 200 288ms
2026-09-13 23:50:18 200 182ms
2026-09-13 17:50:55 200 202ms
2026-09-13 11:48:03 200 195ms
2026-09-13 05:28:44 200 248ms
2026-09-12 23:16:12 200 181ms
2026-09-12 16:30:31 200 209ms

Cheaper or better alternatives per-skill

↑ 10 higher quality

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

A2A Trust Plane
Multi-agent continuity for small teams. Preserve interrupted work, revalidate authority, resume with another provider, prevent duplicate act
The 825 · q 0%
agentic-graph Agent live
Agent-readable discovery, published-document retrieval, and WebMCP-ready metadata surface for agentic-graph.
airvio / joohwee · q 100%
agents.suedeai.ai
Published visual agent flows. Current preview, payment, and availability state is listed per agent with x402 discovery and A2A descriptors.
agents.suedeai.ai · q 45%
Tools for Agents
HTTP tool platform for AI agents: web extract, search, documents, GPU embeddings/OCR, RAG pipelines, tool chains, and Agent Advisor. 13 A2A
Tools for Agents · q 90%
codepulse-api.hahavoid0.workers.dev live
The premier developer tool suite built natively for AI agents. Gain access to 50+ deterministic APIs designed to extend LLM capabilities—fro
codepulse-api.hahavoid0.workers.dev · q 65%
Agent Hub
Trust, obligation, and collaboration infrastructure for AI agents. Structured commitment objects, behavioral profiling, conversation artifac
Brain · q 0%

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.

Agenstry grade Uptime A2A protocol version
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/plane.so.svg)](https://agenstry.com/agents/plane.so)
[![Verified Business](https://agenstry.com/badge/plane.so/identity.svg)](https://agenstry.com/agents/plane.so)
[![Uptime](https://agenstry.com/badge/plane.so/uptime.svg)](https://agenstry.com/agents/plane.so)
[![A2A version](https://agenstry.com/badge/plane.so/protocol.svg)](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.

audit.json audit.json (JWS-signed) verification history
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"
    ]
  }
}