DESTRUCTIVE

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

Destructive

A client that honours annotations asks a person before running it.

Arguments

project_id*string

UUID of the project.

namestringoptional

The project's name, 3 to 100 characters, unique within the team.

keystringoptional

Two to six upper-case letters and digits starting with a letter; changeable only while nothing is numbered under the project.

client_idstringoptional

UUID of the client; null to make the project internal.

taglinestringoptional

One line about the project, up to 160 characters.

descriptionstringoptional

What the project is, as HTML.

statusstringoptional

The lifecycle status.

discoveryplanningin_developmentin_testinglivemaintenanceon_hold
methodologystringoptional

How the project is run.

scrumkanbanhybridwaterfall
visibilitystringoptional

team or members_only.

teammembers_only
lead_pm_idstringoptional

UUID of the project manager; null to leave the seat empty.

lead_ba_idstringoptional

UUID of the lead business analyst; null to leave the seat empty.

lead_dev_idstringoptional

UUID of the lead developer; null to leave the seat empty.

lead_qa_idstringoptional

UUID of the QA lead; null to leave the seat empty.

starts_onstringoptional

The planned start, YYYY-MM-DD.

target_launch_onstringoptional

The target launch, YYYY-MM-DD.

launched_onstringoptional

The day the project went live, YYYY-MM-DD.

budget_hoursintegeroptional

The 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_FAILED

a 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_FOUND

unknown project_id, or a project outside the token's scope or the person's visibility.

FORBIDDEN

the token is a client guest's, or the holder's role on the project does not carry project:update.

TOKEN_MISSING_ABILITY

token lacks project:update.

How is this guide?

Last updated on