READ

list_time_logs

Lists time logs newest day first, for a project, for one work item, or for the person the token acts as, each with the item, the person, the minutes, the kind of work and whether it bills, with the totals the filters leave; a guest token reads none.

Read what was logged before you add to it or report on it. Give project_id for a project's logs, work_item_id for one item's (which wins), or neither for the logs of the person the token acts as across the projects it may see. Each row carries reference and work_item_title, user_name, logged_on, minutes and duration, activity, billable, source (manual, timer or import), note, and locked when an approved timesheet holds it. Narrow with user_id, activity, billable, from and to (Y-m-d), or search for words in the note, the reference or the title; page with limit (1 to 100, 50 by default) and page. For a project or an item, meta.totals carries the minutes, the billable_minutes and the count the filters leave, across every page. A client guest's token reads none.

Requires ability

The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.

The REST endpoint and this tool share one action, so validation, permissions and events are identical.

Annotations

Read-only

It reads and never changes anything.

Arguments

project_idstringoptional

UUID of a project, for its logs.

work_item_idstringoptional

UUID of a work item, for its logs; wins over project_id.

user_idstringoptional

Narrow to the time one person worked.

activitystringoptional

Narrow to one kind of work.

developmentreviewtestinganalysismeetingsupportdeploymentother
billablebooleanoptional

True for billable time only, false for the rest.

fromstringoptional

The first day to include, Y-m-d.

tostringoptional

The last day to include, Y-m-d.

searchstringoptional

Words the note, the reference or the title must contain.

limitintegeroptional

Rows per page, 1 to 100; 50 by default.

pageintegeroptional

The page, from 1.

What it returns

{  "data": [    {      "id": "0f1e2d3c-4b5a-4968-8776-655443322110",      "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",      "work_item_id": "b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e",      "reference": "CRM-142",      "work_item_title": "Tier upgrade email",      "user_id": "3f8a1c2e-7b4d-4e5f-9a6b-1c2d3e4f5a6b",      "user_name": "Dev Lead",      "logged_on": "2026-11-02",      "minutes": 90,      "duration": "1h 30m",      "activity": "development",      "billable": true,      "source": "timer",      "note": "Wired the tier job and its tests",      "started_at": "2026-11-02T09:00:00+00:00",      "approved_by": null,      "approved_at": null,      "locked": false,      "locked_at": null,      "created_at": "2026-11-02T10:30:00+00:00",      "updated_at": "2026-11-02T10:30:00+00:00"    }  ],  "meta": {    "page": 1,    "per_page": 50,    "total": 1,    "has_more": false,    "totals": { "minutes": 90, "billable_minutes": 90, "count": 1 }  }}

How it fails

VALIDATION_FAILED

an unknown activity.

RESOURCE_NOT_FOUND

unknown project_id or work_item_id, or one outside the token's scope.

FORBIDDEN

the holder's role on the project does not carry time-log:view-any, or the token is a client guest's.

TOKEN_MISSING_ABILITY

token lacks time-log:view-any.

How is this guide?

Last updated on