Tools in this category
| Tool | Mutating | Description |
|---|---|---|
list_projects |
no | List projects with optional status, search, date-range, and pagination filters. Use rangeStart/rangeEnd to filter projects whose [startDate, endDate] span overlaps a calendar range, or undatedOnly for projects with no dates. Default page size 20, max 50. |
get_project |
no | Fetch a single project by UUID or display ID (e.g. "P-7"), including its status, clients, dates, and description. |
create_project |
yes | Create a new project. Use list_project_statuses first to get a valid statusId. |
update_project |
yes | Update a project. Only the supplied fields change; omit a field to leave it untouched. Logged in the MCP audit trail. |
delete_project |
yes | Delete a project by UUID or display ID. Cascades to dependent records (tasks become unassigned). Logged in the MCP audit trail. |
bulk_create_projects |
yes | Create many projects in one call, all sharing a status. Counts against the plan quota as a whole, so an over-quota batch is rejected before any project is created. |
bulk_update_projects |
yes | Apply per-id partial updates to many projects in one call — close out a set of projects, move their end dates, or relink them to a client. Each id is logged separately in the audit trail. |
bulk_delete_projects |
yes | Delete many projects in one call. Linked tasks and documents are unlinked rather than deleted, and invoices and transactions keep their rows with the project cleared. Prefer this over looping delete_project. |
list_projects
Mutating: no
List projects with optional status, search, date-range, and pagination filters. Use rangeStart/rangeEnd to filter projects whose [startDate, endDate] span overlaps a calendar range, or undatedOnly for projects with no dates. Default page size 20, max 50.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
page |
number | no | Page number (default: 1) |
limit |
number | no | Items per page (default: 20, max: 50) |
status |
string | no | Filter by statusId |
search |
string | no | Search in name and description |
rangeStart |
string | no | Optional ISO 8601 lower bound: include projects whose [startDate, endDate] span overlaps the range. |
rangeEnd |
string | no | Optional ISO 8601 upper bound (use together with rangeStart). |
undatedOnly |
boolean | no | Only projects with no startDate and no endDate |
sortBy |
string (displaySeq | name | statusConfigId | createdAt | updatedAt | startDate | endDate | isInternal) |
no | Sort field (default: displaySeq). |
sortOrder |
string (asc | desc) |
no | Sort direction: asc or desc. |
get_project
Mutating: no
Fetch a single project by UUID or display ID (e.g. "P-7"), including its status, clients, dates, and description.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id |
string | yes | Project ID — accepts UUID or display ID (e.g. "P-7") |
create_project
Mutating: yes
Create a new project. Use list_project_statuses first to get a valid statusId.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
name |
string | yes | Project name |
status |
string | yes | Status ID from list_project_statuses |
description |
string | no | Optional description |
startDate |
string | no | ISO 8601 start date (optional) |
endDate |
string | no | ISO 8601 end date (optional) |
hourlyRate |
number | no | Optional per-project hourly rate, the most specific level of the brand → client → project chain. Omit to inherit. |
currency |
string | no | Optional ISO 4217 code (e.g. EUR) overriding the inherited invoicing currency for this project. Omit to inherit from the client, then the brand. |
budget |
number | no | Optional spend ceiling for the project, in the project currency (else the account default). Consumed by invoices plus linked income transactions. Omit for no budget; 0 means the project may not be billed at all. |
isInternal |
boolean | no | Mark the project as in-house work rather than work for a client. Presentation only: it draws an indicator beside the project name and a row on its detail view, and no behaviour anywhere reads it. Defaults to false. |
clientDisplayIds |
array | no | Optional client display IDs to link (e.g. ["C-1", "C-2"]). A project can belong to multiple clients. |
update_project
Mutating: yes
Update a project. Only the supplied fields change; omit a field to leave it untouched. Logged in the MCP audit trail.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id |
string | yes | Project ID — accepts UUID or display ID (e.g. "P-7") |
name |
string | no | Project name. |
status |
string | no | Status ID from list_project_statuses |
description |
string | no | Free-form project description; markdown supported. |
startDate |
string | no | ISO 8601 date, or empty string to clear |
endDate |
string | no | ISO 8601 date, or empty string to clear |
hourlyRate |
number | no | Per-project hourly rate override. Omit to leave untouched; there is no clear-to-inherit via this tool. |
currency |
string | no | ISO 4217 code overriding the inherited invoicing currency. Omit to leave untouched; clear the override back to inherited from the project form. |
budget |
number | no | Spend ceiling for the project, in the project currency (else the account default). Omit to leave untouched; clear it back to "no budget" from the project form. |
suppressBudgetAlerts |
boolean | no | Mute this project's budget alert without clearing the budget. Affects that alert only — the flag and end-date alerts still fire. |
isInternal |
boolean | no | Mark the project as in-house work rather than work for a client. Presentation only: it draws an indicator beside the project name and a row on its detail view, and no behaviour anywhere reads it. Defaults to false. |
clientDisplayIds |
array | no | Full set of client display IDs to link; replaces existing client links. Pass [] to detach from all clients. Use link_project_to_clients / unlink_project_from_client for incremental changes. |
delete_project
Mutating: yes
Delete a project by UUID or display ID. Cascades to dependent records (tasks become unassigned). Logged in the MCP audit trail.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id |
string | yes | Project ID — accepts UUID or display ID (e.g. "P-7") |
bulk_create_projects
Mutating: yes
Create many projects in one call, all sharing a status. Counts against the plan quota as a whole, so an over-quota batch is rejected before any project is created.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
items |
array | yes | Projects to create. |
status |
string | yes | Status slug from list_project_statuses, applied to every project. |
Items of items:
name(string) — Project name.description(string) — Free-form description.clientIds(array) — Client UUIDs to link this project to.startDate(string) — ISO 8601 start date.endDate(string) — ISO 8601 end date.tags(array) — Tag names to attach; created on demand if they do not exist.
bulk_update_projects
Mutating: yes
Apply per-id partial updates to many projects in one call — close out a set of projects, move their end dates, or relink them to a client. Each id is logged separately in the audit trail.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
updates |
array | yes | Per-id patches to apply. |
status |
string | no | Optional status slug from list_project_statuses, applied to every project in the call. Resolved once rather than once per row. |
Items of updates:
id(string) — Project ID — accepts UUID or display ID (e.g. "P-3").data(object) — Partial project fields — same shape as update_project input, minus id and status. clientIds replaces the whole link set; [] detaches every client.
bulk_delete_projects
Mutating: yes
Delete many projects in one call. Linked tasks and documents are unlinked rather than deleted, and invoices and transactions keep their rows with the project cleared. Prefer this over looping delete_project.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
ids |
array | yes | Project IDs to delete — each accepts a UUID or a display ID (e.g. "P-3"). |