{"openapi":"3.1.0","info":{"title":"Plane (BYOK) API","version":"0.1.0","description":"Plane (BYOK) lets an AI assistant read your own Plane data through the Plane API with a key you supply (Plane personal access token (Profile Settings > Personal Access Tokens)). Read-only: 10 tools (list_projects, list_work_items, get_work_item_by_identifier, list_states, list_labels, list_cycles, list_modules, list_epics, list_milestones, list_workspace_members). The BYOK key travels with each...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-plane.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-plane/docs"},"termsOfService":"https://connectorbay.com/byok-plane/terms"},"servers":[{"url":"https://byok-plane.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-plane/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_projects":{"post":{"operationId":"list_projects","summary":"List the projects of a Plane workspace with name, identifier prefix, description and network type. Use for \"Which projec","description":"List the projects of a Plane workspace with name, identifier prefix, description and network type. Use for \"Which projects are in my Plane workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_slug":{"description":"Plane workspace slug: the first part of the workspace URL, for example 'my-team' in app.plane.so/my-team/projects.","maxLength":60,"title":"Workspace Slug","type":"string"},"order_by":{"anyOf":[{"maxLength":50,"type":"string"},{"type":"null"}],"default":null,"description":"Field to order by; prefix with - for descending, for example name.","title":"Order By"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"next_cursor from the previous answer, to get the next page.","title":"Cursor"}},"required":["workspace_slug"],"title":"list_projectsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_work_items":{"post":{"operationId":"list_work_items","summary":"List the work items (issues) of one Plane project with priority, state, labels, assignees and creation time. Use for \"Wh","description":"List the work items (issues) of one Plane project with priority, state, labels, assignees and creation time. Use for \"What work items are open in my Plane project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_slug":{"description":"Plane workspace slug: the first part of the workspace URL, for example 'my-team' in app.plane.so/my-team/projects.","maxLength":60,"title":"Workspace Slug","type":"string"},"project_id":{"description":"Project id (UUID); get it from list_projects.","maxLength":60,"title":"Project Id","type":"string"},"order_by":{"anyOf":[{"maxLength":50,"type":"string"},{"type":"null"}],"default":null,"description":"Field to order by; prefix with - for descending, for example -created_at.","title":"Order By"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"next_cursor from the previous answer, to get the next page.","title":"Cursor"}},"required":["workspace_slug","project_id"],"title":"list_work_itemsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_work_item_by_identifier":{"post":{"operationId":"get_work_item_by_identifier","summary":"Get one Plane work item by its readable identifier, project prefix plus number (for example WEB-42). Use for \"Show Plane","description":"Get one Plane work item by its readable identifier, project prefix plus number (for example WEB-42). Use for \"Show Plane work item WEB-42\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_slug":{"description":"Plane workspace slug: the first part of the workspace URL, for example 'my-team' in app.plane.so/my-team/projects.","maxLength":60,"title":"Workspace Slug","type":"string"},"project_identifier":{"description":"The project's identifier prefix, for example WEB.","maxLength":20,"title":"Project Identifier","type":"string"},"issue_identifier":{"description":"The work item number within the project, for example 42.","maximum":99999999,"minimum":1,"title":"Issue Identifier","type":"integer"}},"required":["workspace_slug","project_identifier","issue_identifier"],"title":"get_work_item_by_identifierArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_states":{"post":{"operationId":"list_states","summary":"List the workflow states of a Plane project (for example backlog, started, completed) with group and order. Use for \"Wha","description":"List the workflow states of a Plane project (for example backlog, started, completed) with group and order. Use for \"What workflow states does my Plane project have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_slug":{"description":"Plane workspace slug: the first part of the workspace URL, for example 'my-team' in app.plane.so/my-team/projects.","maxLength":60,"title":"Workspace Slug","type":"string"},"project_id":{"description":"Project id (UUID); get it from list_projects.","maxLength":60,"title":"Project Id","type":"string"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"next_cursor from the previous answer, to get the next page.","title":"Cursor"}},"required":["workspace_slug","project_id"],"title":"list_statesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_labels":{"post":{"operationId":"list_labels","summary":"List the labels of a Plane project with colour and description. Use for \"Which labels exist in my Plane project\".","description":"List the labels of a Plane project with colour and description. Use for \"Which labels exist in my Plane project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_slug":{"description":"Plane workspace slug: the first part of the workspace URL, for example 'my-team' in app.plane.so/my-team/projects.","maxLength":60,"title":"Workspace Slug","type":"string"},"project_id":{"description":"Project id (UUID); get it from list_projects.","maxLength":60,"title":"Project Id","type":"string"},"order_by":{"anyOf":[{"maxLength":50,"type":"string"},{"type":"null"}],"default":null,"description":"Field to order by; prefix with - for descending, for example name.","title":"Order By"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"next_cursor from the previous answer, to get the next page.","title":"Cursor"}},"required":["workspace_slug","project_id"],"title":"list_labelsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_cycles":{"post":{"operationId":"list_cycles","summary":"List the cycles (sprints) of a Plane project with dates and status. Use for \"What is the current Plane cycle\".","description":"List the cycles (sprints) of a Plane project with dates and status. Use for \"What is the current Plane cycle\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_slug":{"description":"Plane workspace slug: the first part of the workspace URL, for example 'my-team' in app.plane.so/my-team/projects.","maxLength":60,"title":"Workspace Slug","type":"string"},"project_id":{"description":"Project id (UUID); get it from list_projects.","maxLength":60,"title":"Project Id","type":"string"},"cycle_view":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Filter cycles by status, for example current or upcoming.","title":"Cycle View"},"order_by":{"anyOf":[{"maxLength":50,"type":"string"},{"type":"null"}],"default":null,"description":"Field to order by; prefix with - for descending, for example -start_date.","title":"Order By"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"next_cursor from the previous answer, to get the next page.","title":"Cursor"}},"required":["workspace_slug","project_id"],"title":"list_cyclesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_modules":{"post":{"operationId":"list_modules","summary":"List the modules of a Plane project with start and target dates and status. Use for \"Which Plane modules are in progress","description":"List the modules of a Plane project with start and target dates and status. Use for \"Which Plane modules are in progress\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_slug":{"description":"Plane workspace slug: the first part of the workspace URL, for example 'my-team' in app.plane.so/my-team/projects.","maxLength":60,"title":"Workspace Slug","type":"string"},"project_id":{"description":"Project id (UUID); get it from list_projects.","maxLength":60,"title":"Project Id","type":"string"},"order_by":{"anyOf":[{"maxLength":50,"type":"string"},{"type":"null"}],"default":null,"description":"Field to order by; prefix with - for descending, for example -created_at.","title":"Order By"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"next_cursor from the previous answer, to get the next page.","title":"Cursor"}},"required":["workspace_slug","project_id"],"title":"list_modulesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_epics":{"post":{"operationId":"list_epics","summary":"List the epics of a Plane project. Use for \"What epics does my Plane project have\".","description":"List the epics of a Plane project. Use for \"What epics does my Plane project have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_slug":{"description":"Plane workspace slug: the first part of the workspace URL, for example 'my-team' in app.plane.so/my-team/projects.","maxLength":60,"title":"Workspace Slug","type":"string"},"project_id":{"description":"Project id (UUID); get it from list_projects.","maxLength":60,"title":"Project Id","type":"string"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"next_cursor from the previous answer, to get the next page.","title":"Cursor"}},"required":["workspace_slug","project_id"],"title":"list_epicsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_milestones":{"post":{"operationId":"list_milestones","summary":"List the milestones of a Plane project with target dates. Use for \"What Plane milestones are coming up\".","description":"List the milestones of a Plane project with target dates. Use for \"What Plane milestones are coming up\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_slug":{"description":"Plane workspace slug: the first part of the workspace URL, for example 'my-team' in app.plane.so/my-team/projects.","maxLength":60,"title":"Workspace Slug","type":"string"},"project_id":{"description":"Project id (UUID); get it from list_projects.","maxLength":60,"title":"Project Id","type":"string"}},"required":["workspace_slug","project_id"],"title":"list_milestonesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_workspace_members":{"post":{"operationId":"list_workspace_members","summary":"List the members of a Plane workspace with name, email and numeric role. Use for \"Who is in my Plane workspace\".","description":"List the members of a Plane workspace with name, email and numeric role. Use for \"Who is in my Plane workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_slug":{"description":"Plane workspace slug: the first part of the workspace URL, for example 'my-team' in app.plane.so/my-team/projects.","maxLength":60,"title":"Workspace Slug","type":"string"}},"required":["workspace_slug"],"title":"list_workspace_membersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}