Appearance
Time Entry Tools
Four tools for time tracking: create entries, query aggregated data, update, and delete.
create-time-entry
Log time spent on an issue.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
issue_id | integer | One of | The numeric ID of the issue (provide issue_id or issue_key, not both) |
issue_key | string | One of | The issue key, e.g. "KD-0042" (provide issue_id or issue_key, not both) |
minutes_spent | integer | Yes | Time in minutes (minimum 1) |
started_at | date | No | When work started (ISO 8601 format, e.g., 2026-03-13) |
note | string | No | Description of the work done (max 10,000 characters) |
Behavior
- The authenticated user is automatically recorded as the time logger
- Returns the created entry with issue, project, hours (decimal),
started_at, andcreated_at/updated_at(ISO 8601)
Example Prompt
I just spent an hour and a half fixing the email validation bug. Log the time with a note about what I did.
get-time-entries
Query time entry data with optional filtering and grouping. This tool is read-only and safe to call repeatedly.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
date_from | date | Yes | Start date (ISO 8601, e.g., 2026-01-01), matched against the day the work started, or the creation day when started_at is not set |
date_to | date | Yes | End date (ISO 8601, e.g., 2026-01-31), matched like date_from. Must be ≥ date_from. |
project_id | integer | No | Filter to a specific project |
user_id | integer | No | Filter to a specific user |
team_id | integer | No | Filter to members of a specific team |
issue_id | integer | No | Filter to a specific issue |
group_by | string | No | Aggregation mode (see below). Default: none |
Grouping Modes
The group_by parameter controls how results are aggregated:
| Mode | Returns | Use Case |
|---|---|---|
none | Raw time entries (max 100) in entries, plus has_more | Detailed view of individual entries |
user | Total hours per user: user, user_id, hours, entries | Team utilization overview |
project | Total hours per project: project, project_id, hours, entries | Project cost tracking |
team | Total hours per team: team, team_id, hours, entries | Department-level reporting |
issue | Total hours per issue: issue, issue_id, hours, entries | Issue effort analysis |
day | Total hours per day the work started (the creation day when started_at is not set): date, hours, entries | Daily activity patterns |
Behavior
- An entry counts on the day its work started (
started_at), or on its creation day (created_at) whenstarted_atis not set. The date window, thedaybuckets and the newest-first order of raw entries all go by that day, so time logged today for last week's work shows up in last week - Raw entries (group_by
none) are capped at 100 results with ahas_moreflag, and each entry carriescreated_at/updated_at(ISO 8601) rather than a bare date - Every mode returns
period,total_hoursandtotal_entries. A grouped mode adds agroupsarray and sends neitherentriesnorhas_more; each group'sentriesis a count - With
team, users without a team fall under aNo Teamgroup whoseteam_idisnull. An entry counts under every team of its user, so the group totals can sum abovetotal_hours - Grouped results return decimal hours (e.g.,
1.5for 90 minutes); thedaymode's bucket key is still a plaindatestring — a day label, not an entity timestamp - Respects project accessibility — non-admin users only see data for projects they can access
- Marked as
#[IsReadOnly]and#[IsIdempotent]
Example Prompts
How much time did the team spend on the kendo project last week?
Show me a breakdown of hours per person for January 2026
Which issues in the kendo project have the most time logged this sprint?
update-time-entry
Update or correct an existing time entry — change minutes, note, start time, or move it to a different issue.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
time_entry_id | integer | Yes | The ID of the time entry to update |
issue_id | integer | No | Move to a different issue (must be in the same project) |
minutes_spent | integer | No | New time in minutes (minimum 1) |
started_at | date | No | When work started (ISO 8601), or null to clear |
note | string | No | Note about the work done (max 10,000 characters), or null to clear |
Behavior
- Only the user who originally logged the time can update it
- Only provided fields are changed — omitted fields keep their current values
- Response includes
created_atandupdated_at(ISO 8601) - Use
get-time-entriesfirst to find time entry IDs
Example Prompt
I accidentally logged 30 minutes instead of 60 on that time entry. Fix it to 60 minutes.
delete-time-entry
Permanently delete a time entry.
Destructive
This action cannot be undone. The time entry is permanently removed.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
time_entry_id | integer | Yes | The ID of the time entry to delete |
Behavior
- Only the user who originally logged the time can delete it
- Use
get-time-entriesfirst to find time entry IDs - Returns confirmation with the deleted entry's details
Example Prompt
Delete the duplicate time entry I logged earlier today on KD-42
See Also
- Resources — Read time totals via
kendo://issues/{id}(total_minutes_spentfield) - Time Tracking Guide — Understanding time entries and exports
- Time Entries API — REST endpoints for time tracking