Tools in this category
| Tool | Mutating | Description |
|---|---|---|
list_time_entries |
no | List time-tracker entries with optional filters (status, taskDisplayId, projectDisplayId, date range, free-text search). |
aggregate_time_entries |
no | Aggregate total tracked time over a filter set. Returns { totalSeconds, entryCount } and an optional groups breakdown when groupBy is set. Running entries are counted up to "now". Each entry is counted exactly once in the headline totals, even when it links to multiple tasks. With groupBy=task or groupBy=project, an entry that links to N tasks/projects contributes its full duration to EACH bucket, so the group totals can legitimately sum to more than totalSeconds. |
get_time_entry |
no | Fetch a single time entry by ID, including its start/end timestamps, status, linked tasks, and tags. |
start_time_session |
yes | Start a new RUNNING time session. Any other running session for this user is auto-stopped at the new session's start time. Optionally name it, link it to one or more tasks, or attach tags. A single entry counts once toward totals regardless of how many tasks it links. |
resume_last_time_session |
yes | Start a new RUNNING entry copying name, linked tasks, and tags from the most recent FINISHED entry. Throws if no prior entry exists. |
update_time_entry |
yes | Update a time entry. Only supplied fields change. Switching status to RUNNING auto-stops any other running entry for this user at the new entry’s start time, the same as start_time_session. |
bulk_update_time_entries |
yes | Apply per-id partial updates to many time entries in one call. Covers bulk rename (set name), bulk retag (set tags), task relinking (set taskDisplayId, or pass an empty string to detach) and startTime/endTime/status edits. |
delete_time_entry |
yes | Delete a time entry by ID. The original input is preserved in the MCP audit trail. |
bulk_delete_time_entries |
yes | Delete many time entries in one call. Prefer this over looping delete_time_entry; each id is logged separately in the audit trail. |
list_time_entries
Mutating: no
List time-tracker entries with optional filters (status, taskDisplayId, projectDisplayId, date range, free-text search).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
page |
number | no | Page number (default: 1) |
limit |
number | no | Items per page (default: 20, max: 50) |
status |
string (running | finished) |
no | Filter by status |
taskDisplayId |
string | no | Filter by task display ID |
projectDisplayId |
string | no | Filter by task's project display ID |
startDate |
string | no | ISO 8601 lower bound on startTime |
endDate |
string | no | ISO 8601 upper bound on startTime |
search |
string | no | Search in name, task name, project name, and tag names |
sortBy |
string (name | startTime | endTime | status | createdAt | updatedAt) |
no | Field to sort by |
sortOrder |
string (asc | desc) |
no | Sort direction; defaults to asc. |
aggregate_time_entries
Mutating: no
Aggregate total tracked time over a filter set. Returns { totalSeconds, entryCount } and an optional groups breakdown when groupBy is set. Running entries are counted up to "now". Each entry is counted exactly once in the headline totals, even when it links to multiple tasks. With groupBy=task or groupBy=project, an entry that links to N tasks/projects contributes its full duration to EACH bucket, so the group totals can legitimately sum to more than totalSeconds.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
status |
string (running | finished) |
no | Filter by status (running or finished). |
taskDisplayId |
string | no | Filter by task display ID. |
projectDisplayId |
string | no | Filter by task's project display ID. |
startDate |
string | no | ISO 8601 lower bound on startTime |
endDate |
string | no | ISO 8601 upper bound on startTime |
search |
string | no | Search in name, task name, project name, tags. |
groupBy |
string (task | project | tag | day) |
no | Optional dimension to group totals by |
get_time_entry
Mutating: no
Fetch a single time entry by ID, including its start/end timestamps, status, linked tasks, and tags.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id |
string | yes | Time entry ID |
start_time_session
Mutating: yes
Start a new RUNNING time session. Any other running session for this user is auto-stopped at the new session's start time. Optionally name it, link it to one or more tasks, or attach tags. A single entry counts once toward totals regardless of how many tasks it links.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
name |
string | no | Optional session name |
taskDisplayIds |
array | no | Optional task display IDs to associate (e.g. ["T-7", "T-9"]). A time entry can link to multiple tasks; the entry still counts once toward totals. |
tags |
array | no | Tag names to attach |
resume_last_time_session
Mutating: yes
Start a new RUNNING entry copying name, linked tasks, and tags from the most recent FINISHED entry. Throws if no prior entry exists.
Parameters
No parameters.
update_time_entry
Mutating: yes
Update a time entry. Only supplied fields change. Switching status to RUNNING auto-stops any other running entry for this user at the new entry’s start time, the same as start_time_session.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id |
string | yes | Time entry ID |
name |
string | no | Display name for the session. |
taskDisplayIds |
array | no | Full set of task display IDs to link; replaces existing task links. Pass [] to unlink from all tasks. Use link_time_entry_to_tasks / unlink_time_entry_from_task for incremental changes. |
tags |
array | no | Full tag set; replaces existing tags. |
startTime |
string | no | ISO 8601 |
endTime |
string | no | ISO 8601 |
status |
string (running | finished) |
no | Entry status (running or finished). |
bulk_update_time_entries
Mutating: yes
Apply per-id partial updates to many time entries in one call. Covers bulk rename (set name), bulk retag (set tags), task relinking (set taskDisplayId, or pass an empty string to detach) and startTime/endTime/status edits.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
updates |
array | yes | Per-id patches |
Items of updates:
id(string) — Time entry ID to update.data(object) — Partial fields — same as update_time_entry input (minus id) for name/tags/startTime/endTime/status/taskDisplayId. Setting taskDisplayId REPLACES the entry's whole task link set; an empty string detaches every task. Use link_time_entry_to_tasks/unlink_time_entry_from_task to add or drop one link without touching the rest.
delete_time_entry
Mutating: yes
Delete a time entry by ID. The original input is preserved in the MCP audit trail.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id |
string | yes | Time entry ID |
bulk_delete_time_entries
Mutating: yes
Delete many time entries in one call. Prefer this over looping delete_time_entry; each id is logged separately in the audit trail.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
ids |
array | yes | Time entry IDs to delete |