Skip to main content
Glama

Plane MCP Server

Official
by makeplane
schemas.ts10.5 kB
import { z } from "zod"; export const Cycle = z.object({ archived_at: z.string().datetime({ offset: true }).optional(), backlog_issues: z.number().int().readonly(), cancelled_issues: z.number().int().readonly(), completed_estimates: z.number().readonly(), completed_issues: z.number().int().readonly(), created_at: z.string().datetime({ offset: true }).readonly(), created_by: z.string().uuid().readonly(), deleted_at: z.string().datetime({ offset: true }).readonly(), description: z.string().optional(), end_date: z.string().date().optional().describe("The end date of the cycle of format YYYY-MM-DD"), external_id: z.string().max(255).optional(), external_source: z.string().max(255).optional(), id: z.string().uuid().readonly(), logo_props: z.any().optional(), name: z.string().max(255), owned_by: z.string().uuid().readonly(), progress_snapshot: z.any().optional(), project_id: z.string().uuid().readonly(), sort_order: z.number().optional(), start_date: z.string().date().optional().describe("The start date of the cycle of format YYYY-MM-DD"), started_estimates: z.number().readonly(), started_issues: z.number().int().readonly(), timezone: z.any().optional(), total_estimates: z.number().readonly(), total_issues: z.number().int().readonly(), unstarted_issues: z.number().int().readonly(), updated_at: z.string().datetime({ offset: true }).readonly(), updated_by: z.string().uuid().readonly(), version: z.number().int().gte(-2147483648).lte(2147483647).optional(), view_props: z.any().optional(), workspace: z.string().uuid().readonly(), }); export type Cycle = z.infer<typeof Cycle>; export const Issue = z.object({ archived_at: z.string().date().optional(), assignees: z.array(z.string().uuid()).optional(), completed_at: z.string().datetime({ offset: true }).optional(), created_at: z.string().datetime({ offset: true }).readonly(), created_by: z.string().uuid().optional(), deleted_at: z.string().datetime({ offset: true }).optional(), description_binary: z.string().readonly(), description_html: z.string().optional(), estimate_point: z.string().uuid().optional(), external_id: z.string().max(255).optional(), external_source: z.string().max(255).optional(), id: z.string().uuid().readonly(), is_draft: z.boolean().optional(), labels: z.array(z.string().uuid()).optional(), name: z.string().max(255), parent: z.string().uuid().optional(), point: z.number().int().gte(0).lte(12).optional(), priority: z.any().optional(), project: z.string().uuid().readonly(), sequence_id: z.number().int().gte(-2147483648).lte(2147483647).optional(), sort_order: z.number().optional(), start_date: z.string().date().optional(), state: z.string().uuid().optional(), target_date: z.string().date().optional(), type: z.string().uuid().optional(), type_id: z.string().uuid().optional(), updated_at: z.string().datetime({ offset: true }).readonly(), updated_by: z.string().uuid().readonly(), workspace: z.string().uuid().readonly(), }); export type Issue = z.infer<typeof Issue>; export const CycleIssue = z.object({ created_at: z.string().datetime({ offset: true }).readonly(), created_by: z.string().uuid().optional(), cycle: z.string().uuid().readonly(), deleted_at: z.string().datetime({ offset: true }), id: z.string().uuid().readonly(), issue: z.string().uuid(), project: z.string().uuid().readonly(), sub_issues_count: z.number().int().readonly(), updated_at: z.string().datetime({ offset: true }).readonly(), updated_by: z.string().uuid().optional(), workspace: z.string().uuid().readonly(), }); export type CycleIssue = z.infer<typeof CycleIssue>; export const IssueTypeAPI = z.object({ created_at: z.string().datetime({ offset: true }).readonly(), created_by: z.string().uuid().readonly(), deleted_at: z.string().datetime({ offset: true }).readonly(), description: z.string().optional(), external_id: z.string().max(255).optional(), external_source: z.string().max(255).optional(), id: z.string().uuid().readonly(), is_active: z.boolean().optional(), is_default: z.boolean().readonly(), level: z.number().int().readonly(), logo_props: z.any().readonly(), name: z.string().max(255), project_ids: z.array(z.string().uuid()).optional(), updated_at: z.string().datetime({ offset: true }).readonly(), updated_by: z.string().uuid().readonly(), workspace: z.string().uuid().readonly(), }); export type IssueTypeAPI = z.infer<typeof IssueTypeAPI>; export const Label = z.object({ color: z.string().max(255).optional(), created_at: z.string().datetime({ offset: true }).readonly(), created_by: z.string().uuid().readonly(), deleted_at: z.string().datetime({ offset: true }).readonly(), description: z.string().optional(), external_id: z.string().max(255).optional(), external_source: z.string().max(255).optional(), id: z.string().uuid().readonly(), name: z.string().max(255), parent: z.string().uuid().optional(), project: z.string().uuid().readonly(), sort_order: z.number().optional(), updated_at: z.string().datetime({ offset: true }).readonly(), updated_by: z.string().uuid().readonly(), workspace: z.string().uuid().readonly(), }); export type Label = z.infer<typeof Label>; export const State = z.object({ color: z.string().max(255), created_at: z.string().datetime({ offset: true }).readonly(), created_by: z.string().uuid().readonly(), default: z.boolean().optional(), deleted_at: z.string().datetime({ offset: true }).readonly(), description: z.string().optional(), external_id: z.string().max(255).optional(), external_source: z.string().max(255).optional(), group: z.any().optional(), id: z.string().uuid().readonly(), is_triage: z.boolean().optional(), name: z.string().max(255), project: z.string().uuid().readonly(), sequence: z.number().optional(), slug: z.string().regex(new RegExp("^[-a-zA-Z0-9_]+$")).max(100).optional(), updated_at: z.string().datetime({ offset: true }).readonly(), updated_by: z.string().uuid().readonly(), workspace: z.string().uuid().readonly(), }); export type State = z.infer<typeof State>; export const ModuleIssue = z.object({ created_at: z.string().datetime({ offset: true }).readonly(), created_by: z.string().uuid().readonly(), deleted_at: z.string().datetime({ offset: true }), id: z.string().uuid().readonly(), issue: z.string().uuid(), module: z.string().uuid().readonly(), project: z.string().uuid().readonly(), sub_issues_count: z.number().int().readonly(), updated_at: z.string().datetime({ offset: true }).readonly(), updated_by: z.string().uuid().readonly(), workspace: z.string().uuid().readonly(), }); export type ModuleIssue = z.infer<typeof ModuleIssue>; export const Module = z.object({ archived_at: z.string().datetime({ offset: true }).optional(), backlog_issues: z.number().int().readonly(), cancelled_issues: z.number().int().readonly(), completed_issues: z.number().int().readonly(), created_at: z.string().datetime({ offset: true }).readonly(), created_by: z.string().uuid().readonly(), deleted_at: z.string().datetime({ offset: true }).readonly(), description: z.string().optional(), description_html: z.any().optional(), description_text: z.any().optional(), external_id: z.string().max(255).optional(), external_source: z.string().max(255).optional(), id: z.string().uuid().readonly(), lead: z.string().uuid().optional(), logo_props: z.any().optional(), members: z.array(z.string().uuid()).optional(), name: z.string().max(255), project: z.string().uuid().readonly(), sort_order: z.number().optional(), start_date: z.string().date().optional(), started_issues: z.number().int().readonly(), status: z.any().optional(), target_date: z.string().date().optional(), total_issues: z.number().int().readonly(), unstarted_issues: z.number().int().readonly(), updated_at: z.string().datetime({ offset: true }).readonly(), updated_by: z.string().uuid().readonly(), view_props: z.any().optional(), workspace: z.string().uuid().readonly(), }); export type Module = z.infer<typeof Module>; export const Project = z.object({ archive_in: z.number().int().gte(0).lte(12).optional(), archived_at: z.string().datetime({ offset: true }).optional(), close_in: z.number().int().gte(0).lte(12).optional(), cover_image: z.string().optional(), cover_image_asset: z.string().uuid().optional(), cover_image_url: z.string().readonly(), created_at: z.string().datetime({ offset: true }).readonly(), created_by: z.string().uuid().readonly(), cycle_view: z.boolean().optional(), default_assignee: z.string().uuid().optional(), default_state: z.string().uuid().optional(), deleted_at: z.string().datetime({ offset: true }).readonly(), description: z.string().optional(), description_html: z.any().optional(), description_text: z.any().optional(), emoji: z.string().readonly(), estimate: z.string().uuid().optional(), guest_view_all_features: z.boolean().optional(), icon_prop: z.any().optional(), id: z.string().uuid().readonly(), identifier: z.string().max(12), inbox_view: z.boolean().optional(), is_deployed: z.boolean().readonly(), is_issue_type_enabled: z.boolean().optional(), is_member: z.boolean().readonly(), is_time_tracking_enabled: z.boolean().optional(), issue_views_view: z.boolean().optional(), logo_props: z.any().optional(), member_role: z.number().int().readonly(), module_view: z.boolean().optional(), name: z.string().max(255), network: z.any().optional(), page_view: z.boolean().optional(), project_lead: z.string().uuid().optional(), sort_order: z.number().readonly(), timezone: z.any().optional(), total_cycles: z.number().int().readonly(), total_members: z.number().int().readonly(), total_modules: z.number().int().readonly(), updated_at: z.string().datetime({ offset: true }).readonly(), updated_by: z.string().uuid().readonly(), workspace: z.string().uuid().readonly(), }); export type Project = z.infer<typeof Project>; export const IssueWorkLog = z.object({ issue_id: z.string().uuid(), description: z.string().optional(), logged_by_id: z.string().uuid(), duration: z.number().int().min(0).describe("The duration of the worklog in minutes"), created_at: z.string().datetime(), updated_at: z.string().datetime(), project_id: z.string().uuid(), workspace_id: z.string().uuid(), }); export type IssueWorkLog = z.infer<typeof IssueWorkLog>;

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/makeplane/plane-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server