update_project
Changes a project's record in part, so a conversation can add the launch date, the leads, the client or a status one answer at a time.
Change a project by project_id with any of name, key (only while nothing is numbered under the project), client_id, tagline, description (HTML), status (every status but archived, which has its own door in the application), methodology, visibility, lead_pm_id, lead_ba_id, lead_dev_id, lead_qa_id, starts_on, target_launch_on, launched_on and budget_hours. A field left out keeps its value; a field sent as null is cleared. The change goes through the same action the registry page runs and project.updated goes out with what moved.
The project's settings, from the sprint length to the council's seats, change through update_project_settings. A staff token with project:update on the project is needed.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Fires one event
Delivered to every endpoint subscribed to it once the change is made.
Annotations
A client that honours annotations asks a person before running it.
Arguments
project_id*stringUUID of the project.
namestringoptionalThe project's name, 3 to 100 characters, unique within the team.
keystringoptionalTwo to six upper-case letters and digits starting with a letter; changeable only while nothing is numbered under the project.
client_idstringoptionalUUID of the client; null to make the project internal.
taglinestringoptionalOne line about the project, up to 160 characters.
descriptionstringoptionalWhat the project is, as HTML.
statusstringoptionalThe lifecycle status.
discoveryplanningin_developmentin_testinglivemaintenanceon_holdmethodologystringoptionalHow the project is run.
scrumkanbanhybridwaterfallvisibilitystringoptionalteam or members_only.
teammembers_onlylead_pm_idstringoptionalUUID of the project manager; null to leave the seat empty.
lead_ba_idstringoptionalUUID of the lead business analyst; null to leave the seat empty.
lead_dev_idstringoptionalUUID of the lead developer; null to leave the seat empty.
lead_qa_idstringoptionalUUID of the QA lead; null to leave the seat empty.
starts_onstringoptionalThe planned start, YYYY-MM-DD.
target_launch_onstringoptionalThe target launch, YYYY-MM-DD.
launched_onstringoptionalThe day the project went live, YYYY-MM-DD.
budget_hoursintegeroptionalThe budgeted effort in whole hours.
What it returns
{ "data": { "id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13", "team_id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d", "client_id": "9b1f2c3d-4e5f-4a6b-8c7d-0e1f2a3b4c5d", "key": "SCL", "name": "Super Clean Laundry", "tagline": "Laundry orders online", "description": "<p>An informational website with laundry order placement, tracking, payment and appointment scheduling.</p>", "status": "planning", "methodology": "kanban", "visibility": "team", "health": "on_track", "lead_pm_id": "3f8a1c2e-7b4d-4e5f-9a6b-1c2d3e4f5a6b", "lead_ba_id": "5b6c7d8e-9f0a-4b1c-8d2e-3f4a5b6c7d8e", "lead_dev_id": null, "lead_qa_id": null, "starts_on": "2026-11-02", "target_launch_on": "2027-02-27", "launched_on": null, "budget_hours": 1200, "archived_at": null, "created_at": "2026-10-28T09:15:00+00:00", "updated_at": "2026-10-28T11:02:00+00:00" }}How it fails
VALIDATION_FAILEDa field outside its limits, a key change once a record carries the old one, a name or key the team already uses, a lead who is not on the team, a client_id that is not the team's, or status set to archived.
RESOURCE_NOT_FOUNDunknown project_id, or a project outside the token's scope or the person's visibility.
FORBIDDENthe token is a client guest's, or the holder's role on the project does not carry project:update.
TOKEN_MISSING_ABILITYtoken lacks project:update.
How is this guide?
Last updated on