log_time
Logs a stretch of time on a work item for the person the token acts as, as minutes or a typed duration, with the day, the kind of work, whether it bills, a note and what is left on the item; the log announces itself.
Write down the time you actually spent on an item, once, when you finish a stretch of work. Give work_item_id and either minutes (1 to 1440) or duration as people type it (1h 30m, 1:30, 1.5h, 90m); add logged_on (Y-m-d, today by default), activity (development by default, or review, testing, analysis, meeting, support, deployment, other), billable (true by default), a note on what was done, and remaining_minutes when you can say what is left on the item, which updates the item's estimate and writes a version of it. The answer is the log with its duration in words. If you would rather be measured than estimate afterwards, start_timer when you begin and stop_timer when you finish. The log belongs to the person the token acts as; a client guest's token is refused.
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.
Arguments
work_item_id*stringUUID of the work item the time went into.
minutesintegeroptionalHow long, in whole minutes, 1 to 1440; or send duration.
durationstringoptionalHow long as people type it: 1h 30m, 1:30, 1.5h or 90m.
logged_onstringoptionalThe day the time was worked, Y-m-d; today by default.
activitystringoptionalWhat it was spent on; development by default.
developmentreviewtestinganalysismeetingsupportdeploymentotherbillablebooleanoptionalWhether the time bills; true by default.
notestringoptionalA word on what was done, up to 500 characters.
remaining_minutesintegeroptionalWhat is left on the item after this, in minutes; leave it out to keep the estimate.
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": "review", "billable": true, "source": "manual", "note": "Reviewed the tier job and its tests", "started_at": null, "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" }}How it fails
VALIDATION_FAILEDneither minutes nor duration sent, the minutes outside one to 1440, a duration that does not read, a day ahead of tomorrow, or an unknown activity.
RESOURCE_NOT_FOUNDunknown work_item_id, or an item outside the token's scope.
FORBIDDENthe holder's role on the project does not carry time-log:create, or the token is a client guest's.
TOKEN_MISSING_ABILITYtoken lacks time-log:create.
Related
How is this guide?
Last updated on