{
  "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"
}