create_project
Creates a project on the team's registry from a name and a paragraph, with the key suggested when none is given, so Heimdall can open a project in conversation.
Create a project: name is required and unique within the team; key, two to six upper-case letters and digits starting with a letter, is the prefix of every reference inside the project (SCL-12) and is suggested from the name when left out; client_id names one of the team's clients (omit it for an internal project); description holds the brief as HTML; tagline, status (discovery by default), methodology (scrum by default), visibility (team by default), the four lead ids, starts_on, target_launch_on, launched_on and budget_hours fill in the rest. The project is written through the same action the registry page and the intake wizard run, and project.created goes out.
This is the door the conversational intake opens: find or create the client, create the project with the brief as its description, then write the record under it with the component, environment, stakeholder, persona, epic, story, requirement, rule and glossary tools, and convene the council on the project when the scaffold is in. The answer carries the key chosen, which every later reference uses. A staff token with project:create 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
name*stringThe project's name, 3 to 100 characters, unique within the team.
keystringoptionalTwo to six upper-case letters and digits starting with a letter, such as SCL; suggested from the name when left out.
client_idstringoptionalUUID of the client the project is for; omit for an internal project.
taglinestringoptionalOne line about the project, up to 160 characters.
descriptionstringoptionalWhat the project is, as HTML; the brief as the person gave it fits here.
statusstringoptionalThe lifecycle status; discovery by default.
discoveryplanningin_developmentin_testinglivemaintenanceon_holdmethodologystringoptionalHow the project is run; scrum by default.
scrumkanbanhybridwaterfallvisibilitystringoptionalteam when every member sees it, members_only when only its project members do.
teammembers_onlylead_pm_idstringoptionalUUID of the project manager, a member of the team.
lead_ba_idstringoptionalUUID of the lead business analyst.
lead_dev_idstringoptionalUUID of the lead developer.
lead_qa_idstringoptionalUUID of the QA lead.
starts_onstringoptionalThe planned start, YYYY-MM-DD.
target_launch_onstringoptionalThe target launch, YYYY-MM-DD, on or after the start.
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, tracking, payment and pickups online", "description": "<p>An informational website with laundry order placement, tracking, payment and appointment scheduling.</p>", "status": "discovery", "methodology": "scrum", "visibility": "team", "health": "unknown", "lead_pm_id": null, "lead_ba_id": null, "lead_dev_id": null, "lead_qa_id": null, "starts_on": null, "target_launch_on": null, "launched_on": null, "budget_hours": null, "archived_at": null, "created_at": "2026-10-28T09:15:00+00:00", "updated_at": "2026-10-28T09:15:00+00:00" }}How it fails
VALIDATION_FAILEDname missing or outside 3 to 100 characters, a key that is not two to six upper-case letters and digits starting with a letter, a key or a name the team already had, a client_id that is not the team's, a lead who is not on the team, a launch before the start, or status set to archived.
FORBIDDENthe token is a client guest's, or the holder's team role does not carry project:create.
TOKEN_MISSING_ABILITYtoken lacks project:create.
How is this guide?
Last updated on