update_cycle
Update an existing cycle's details including name, dates, owner, or external references using project and cycle identifiers.
Instructions
Update a cycle by ID.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | UUID of the project | |
| cycle_id | Yes | UUID of the cycle | |
| name | No | Cycle name | |
| description | No | Cycle description | |
| start_date | No | Cycle start date (ISO 8601 format) | |
| end_date | No | Cycle end date (ISO 8601 format) | |
| owned_by | No | UUID of the user who owns the cycle | |
| external_source | No | External system source name | |
| external_id | No | External system identifier | |
| timezone | No | Cycle timezone |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| total_issues | No | ||
| cancelled_issues | No | ||
| completed_issues | No | ||
| started_issues | No | ||
| unstarted_issues | No | ||
| backlog_issues | No | ||
| total_estimates | No | ||
| completed_estimates | No | ||
| started_estimates | No | ||
| created_at | No | ||
| updated_at | No | ||
| deleted_at | No | ||
| name | Yes | ||
| description | No | ||
| start_date | No | ||
| end_date | No | ||
| view_props | No | ||
| sort_order | No | ||
| external_source | No | ||
| external_id | No | ||
| progress_snapshot | No | ||
| archived_at | No | ||
| logo_props | No | ||
| timezone | No | ||
| version | No | ||
| created_by | No | ||
| updated_by | No | ||
| project | No | ||
| workspace | No | ||
| owned_by | No |
Implementation Reference
- plane_mcp/tools/cycles.py:107-152 (handler)The update_cycle tool handler function. It is decorated with @mcp.tool(), accepts project_id, cycle_id, and optional fields (name, description, start_date, end_date, owned_by, external_source, external_id, timezone). Constructs an UpdateCycle model instance and calls client.cycles.update().
@mcp.tool() def update_cycle( project_id: str, cycle_id: str, name: str | None = None, description: str | None = None, start_date: str | None = None, end_date: str | None = None, owned_by: str | None = None, external_source: str | None = None, external_id: str | None = None, timezone: str | None = None, ) -> Cycle: """ Update a cycle by ID. Args: workspace_slug: The workspace slug identifier project_id: UUID of the project cycle_id: UUID of the cycle name: Cycle name description: Cycle description start_date: Cycle start date (ISO 8601 format) end_date: Cycle end date (ISO 8601 format) owned_by: UUID of the user who owns the cycle external_source: External system source name external_id: External system identifier timezone: Cycle timezone Returns: Updated Cycle object """ client, workspace_slug = get_plane_client_context() data = UpdateCycle( name=name, description=description, start_date=start_date, end_date=end_date, owned_by=owned_by, external_source=external_source, external_id=external_id, timezone=timezone, ) return client.cycles.update(workspace_slug=workspace_slug, project_id=project_id, cycle_id=cycle_id, data=data) - plane_mcp/tools/cycles.py:13-14 (schema)Import of the UpdateCycle model from plane.models.cycles, which serves as the input validation/schema for the update_cycle tool.
UpdateCycle, ) - plane_mcp/tools/cycles.py:20-36 (registration)The register_cycle_tools function is called by the main tool registration in tools/__init__.py, which registers the update_cycle tool via the @mcp.tool() decorator.
def register_cycle_tools(mcp: FastMCP) -> None: """Register all cycle-related tools with the MCP server.""" @mcp.tool() def list_cycles( project_id: str, params: dict[str, Any] | None = None, ) -> list[Cycle]: """ List all cycles in a project. Args: workspace_slug: The workspace slug identifier project_id: UUID of the project params: Optional query parameters as a dictionary Returns: - plane_mcp/tools/__init__.py:27-49 (registration)The register_tools function calls register_cycle_tools(mcp), which is the registration entry point for the update_cycle tool.
def register_tools(mcp: FastMCP) -> None: """Register all tools with the MCP server.""" register_project_tools(mcp) register_work_item_tools(mcp) register_work_item_activity_tools(mcp) register_work_item_comment_tools(mcp) register_work_item_link_tools(mcp) register_work_item_relation_tools(mcp) register_work_log_tools(mcp) register_cycle_tools(mcp) register_user_tools(mcp) register_module_tools(mcp) register_initiative_tools(mcp) register_intake_tools(mcp) register_label_tools(mcp) register_page_tools(mcp) register_work_item_property_tools(mcp) register_work_item_type_tools(mcp) register_state_tools(mcp) register_workspace_tools(mcp) register_epic_tools(mcp) register_milestone_tools(mcp)