update_project
Partially update one project: name, description, status (PLANNING/ACTIVE/ON_HOLD/COMPLETED/CANCELLED), startDate, endDate, budget (number or null), color, retainedLogic (true: the remaining work of a started task waits on its links, so a late predecessor pushes it; false: a started task holds). Only supplied fields change. startDate and endDate are the project's own target dates: writing them moves no task, so the plan's tasks keep their dates even when they then sit long before the new finish. move_project is the tool that shifts the plan itself (every task without actual work, durations and links kept). Caller must have project.edit on the project. Project progress is not writable here: it is derived from the progress of the tasks underneath, so it changes through update_task rather than through this tool.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"projectId": "<projectId>"
},
"name": "update_project"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | 2-255 chars. | |
| color | No | ||
| budget | No | ||
| status | No | ||
| endDate | No | ISO date, the project's target finish. Moves no task (move_project shifts the schedule). Must be after startDate when both are set. | |
| feeAmount | No | FIXED_FEE / MILESTONE: the sold fee, distinct from budget (the cost plan). | |
| projectId | Yes | ||
| startDate | No | ISO date. | |
| statusDate | No | ISO date the schedule is reported "as of" (MS Project Status Date, P6 Data Date). null clears, meaning today. | |
| description | No | ||
| billingModel | No | How the project bills: TIME_AND_MATERIALS (hours x rate), FIXED_FEE (feeAmount recognised by approved-hours share of estimatedHours, capped), RETAINER (retainerAmount per retainerPeriod, over-servicing above retainerIncludedHours), MILESTONE (milestoneSchedule amounts recognised as linked milestones complete). Changing it clears the other models' terms. | |
| retainedLogic | No | How a started task meets its links. true (retained logic): its remaining work waits on its incoming links, so a late predecessor pushes it. false (the default): it holds at its actual start. Takes effect on the next reschedule, and only while the server switch retained_logic_enabled is on. | |
| estimatedHours | No | FIXED_FEE: hours the fee was priced on. | |
| retainerAmount | No | RETAINER: fee per period. | |
| retainerPeriod | No | ||
| milestoneSchedule | No | MILESTONE: [{ label, amount, milestoneId? }], each milestone linked at most once. | |
| retainerIncludedHours | No | RETAINER: hours the fee covers per period. |