Skip to main content
Glama

List Redmine time entries

list_time_entries
Read-onlyIdempotent

Fetch visible Redmine time entries with filters for user, project, issue, activity, and spent-on date range. Read-only access respects Redmine permissions.

Instructions

Read visible Redmine time entries from GET /time_entries.json for the configured API user. Supports offset, limit, and page pagination, a positive numeric user_id or me, project_id, issue_id, activity_id, exact Redmine spent_on date/range forms, and real YYYY-MM-DD from/to filters. Redmine enforces the user's view-time-entry permissions and visibility. This tool never changes Redmine data.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toNoLatest real YYYY-MM-DD spent-on date, inclusive
fromNoEarliest real YYYY-MM-DD spent-on date, inclusive
pageNoPage number. Redmine converts it to an offset using the selected limit.
limitNoNumber of time entries to return. Redmine caps this at 100.
offsetNoNumber of time entries to skip
user_idNoUser ID or `me` whose visible time entries should be returned
issue_idNoIssue ID whose visible time entries should be returned
spent_onNoBare date, =date, >=date, <=date, or ><date|date spent-on filter
project_idNoProject ID or Redmine project identifier
activity_idNoTime-entry activity ID

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
pagingYes
filtersYes
timeEntriesYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds useful context beyond those annotations by noting that Redmine enforces the configured API user's view-time-entry permissions and visibility, and by explicitly stating the tool never changes Redmine data. This is relevant behavioral context for the agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences, front-loaded with the tool's purpose and endpoint, followed by capability, permission context, and a safety note. Every sentence contributes new, non-redundant information and the length is proportionate to the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich input schema, output schema, and annotations, the description is complete enough. It covers the endpoint, filtering capabilities, pagination, permission-dependent visibility, and non-mutating behavior. No essential context for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by summarizing parameter groups and emphasizing distinctions such as 'exact Redmine spent_on date/range forms' versus 'real YYYY-MM-DD from/to filters,' which helps the agent understand the differing parameter semantics without opening every schema definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Read visible Redmine time entries from GET /time_entries.json for the configured API user.' It clearly identifies the operation as a read/list action and is distinguishable from siblings like get_time_entry and list_time_entry_activities by the endpoint and resource scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context that this is the list endpoint for time entries and enumerates the available filters, so an agent can infer when to use it. It does not explicitly exclude alternatives such as get_time_entry for single entries or list_time_entry_activities for activities, but the context is not misleading.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.