{ "annotations": { "destructiveHint": true, "idempotentHint": false, "readOnlyHint": false, "title": "Manage GitHub Projects" }, "description": "Create and manage GitHub Projects: create projects, add/update/delete items, create status updates, and add iteration fields.", "inputSchema": { "properties": { "body": { "description": "The body of the status update (markdown). Used for 'create_project_status_update' method.", "type": "string" }, "field_name": { "description": "The name of the iteration field (e.g. 'Sprint'). Required for 'create_iteration_field' method.", "type": "string" }, "issue_number": { "description": "The issue number. Required for 'add_project_item' when item_type is 'issue'. Also accepted by 'update_project_item' to resolve the item by issue number (combine with item_owner and item_repo).", "type": "number" }, "item_id": { "description": "The project item ID. Required for 'delete_project_item'. For 'update_project_item', provide either item_id, or (item_owner + item_repo + issue_number) to resolve the item by issue.", "type": "number" }, "item_owner": { "description": "The owner (user or organization) of the repository containing the issue or pull request. Required for 'add_project_item' method. Also accepted by 'update_project_item' when resolving the item by issue number.", "type": "string" }, "item_repo": { "description": "The name of the repository containing the issue or pull request. Required for 'add_project_item' method. Also accepted by 'update_project_item' when resolving the item by issue number.", "type": "string" }, "item_type": { "description": "The item's type, either issue or pull_request. Required for 'add_project_item' method.", "enum": [ "issue", "pull_request" ], "type": "string" }, "iteration_duration": { "description": "Duration in days for iterations of the field (e.g. 7 for weekly, 14 for bi-weekly). Required for 'create_iteration_field' method.", "type": "number" }, "iterations": { "description": "Custom iterations for 'create_iteration_field' method. Only set this when you need iterations with varying durations, breaks between them, or specific titles. Otherwise omit it: GitHub auto-creates three iterations of 'iteration_duration' days starting on 'start_date', which is the right choice for most cases.", "items": { "additionalProperties": false, "properties": { "duration": { "description": "Duration in days", "type": "number" }, "start_date": { "description": "Start date in YYYY-MM-DD format", "type": "string" }, "title": { "description": "Iteration title (e.g. 'Sprint 1')", "type": "string" } }, "required": [ "title", "start_date", "duration" ], "type": "object" }, "type": "array" }, "method": { "description": "The method to execute", "enum": [ "add_project_item", "update_project_item", "delete_project_item", "create_project_status_update", "create_project", "create_iteration_field" ], "type": "string" }, "owner": { "description": "The project owner (user or organization login). The name is not case sensitive.", "type": "string" }, "owner_type": { "description": "Owner type (user or org). Required for 'create_project' method. If not provided for other methods, will be automatically detected.", "enum": [ "user", "org" ], "type": "string" }, "project_number": { "description": "The project's number. Required for all methods except 'create_project'.", "type": "number" }, "pull_request_number": { "description": "The pull request number (use when item_type is 'pull_request' for 'add_project_item' method). Provide either issue_number or pull_request_number.", "type": "number" }, "start_date": { "description": "Start date in YYYY-MM-DD format. Used for 'create_project_status_update' and 'create_iteration_field' methods.", "type": "string" }, "status": { "description": "The status of the project. Used for 'create_project_status_update' method.", "enum": [ "INACTIVE", "ON_TRACK", "AT_RISK", "OFF_TRACK", "COMPLETE" ], "type": "string" }, "target_date": { "description": "The target date of the status update in YYYY-MM-DD format. Used for 'create_project_status_update' method.", "type": "string" }, "title": { "description": "The project title. Required for 'create_project' method.", "type": "string" }, "updated_field": { "description": "Object describing the field to update and its new value. Required for 'update_project_item'. Two shapes are accepted: (1) by ID — {\"id\": 123456, \"value\": \"...\"}; (2) by name — {\"name\": \"Status\", \"value\": \"In Progress\"}. For single-select fields, option-name resolution requires the by-name shape; on the by-ID shape, pass the option ID. Set value to null to clear the field.", "type": "object" } }, "required": [ "method", "owner" ], "type": "object" }, "name": "projects_write" }