create_project
Create a new, EMPTY project in the user's Onplana workspace: a named container with an optional start and end date and no tasks yet. Fits "start a project called X" or "set up a project for our office move" when there is no work to put in it yet. When the request includes the work itself ("plan a website launch", "set up a project with the tasks for X"), instantiate_plan creates the project and its whole plan in one call; calling this tool first and then instantiate_plan without a projectId produces two projects and leaves this empty one behind. An id from this tool passed to instantiate_plan as projectId fills this project with a plan instead. Tasks can also go in with create_task or bulk_create_tasks. The caller becomes the project owner. If start/end are omitted, the project runs from today to about 90 days out, adjustable later with update_project. In an organization that classifies its projects, type STRATEGIC is refused: a strategic project there starts as a proposal and is created when the proposal passes its gate. list_projects with search shows whether a similarly named project already exists. The result carries nextSteps: the follow-on calls with this project id already filled in. A project left at "created" is an empty project the user then has to fill by hand. The result includes url, a direct link to the project in Onplana. ALWAYS show that link in your reply: the user is working inside another app and has no other way to find what was just created.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Project name, 2–255 chars. | |
| type | No | STRATEGIC or OPERATIONAL. STRATEGIC is refused in an organization that classifies its projects, where a strategic project starts as a proposal. | |
| color | No | Optional hex color for UI display. | |
| budget | No | Optional numeric budget in the project currency. | |
| status | No | Default PLANNING. | |
| endDate | No | Optional ISO 8601 end date (YYYY-MM-DD). Defaults to ~90 days after the start when omitted; when both are given it must be after startDate. | |
| currency | No | ISO 4217 currency code, 3 letters. Default USD. | |
| startDate | No | Optional ISO 8601 start date (YYYY-MM-DD). Defaults to today when omitted. | |
| description | No | Optional description, up to 10000 chars. | |
| idempotencyKey | No | Optional idempotency key. Pass a stable unique value (e.g. a UUID) to make this create safe to retry: calling again with the same key within 24h - even from a new session after a reconnect - replays the original result and creates no duplicate. Org-scoped; works across conversations. |