Skip to main content
Glama

Get a Redmine version

get_version
Read-onlyIdempotent

Retrieve a specific Redmine version by its ID to view its details, custom fields, and estimated/spent hours when available. Read-only operation respecting project visibility.

Instructions

Read one visible Redmine version from GET /versions/:id.json for the configured Redmine API user. The required version_id is a positive safe integer, and this route has no query parameters or documented include controls. Results include the documented version fields and visible custom fields, plus estimatedHours and spentHours only when Redmine returns them. Redmine enforces version and project visibility and may return HTTP 401, 403, or 404. This tool never changes Redmine data.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
version_idYesPositive Redmine version ID

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYes
urlYes
nameYes
statusNo
dueDateNo
projectNo
sharingNo
createdOnNo
updatedOnNo
spentHoursNo
descriptionNo
customFieldsNo
wikiPageTitleNo
estimatedHoursNo

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=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: it explicitly states 'This tool never changes Redmine data,' notes that visibility is enforced by Redmine, and discloses possible HTTP error codes (401, 403, 404). It also explains that estimatedHours and spentHours are included only when Redmine returns them, which is useful conditional behavior. This goes beyond the annotations without contradicting them.

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 compact and front-loaded: it opens with the core action and resource, then adds route details, parameter constraints, response behavior, and error conditions in a logical order. Every sentence adds value, and there is no repetition of schema or annotation content. It is appropriately sized for the tool's simplicity.

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?

For a single-parameter read tool with a rich output schema, the description covers everything an agent needs: the route, the parameter, the response fields, visibility/error behavior, and the no-mutation guarantee. The output schema exists, so return values need not be enumerated in the description. The tool is simple, and the description is complete for its complexity.

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 description coverage is 100%, so the schema already documents version_id as a positive Redmine version ID. The description adds meaning by specifying that version_id must be a 'positive safe integer' and that the route has no query parameters or include controls, which clarifies the parameter's role and constraints beyond the schema. This is a solid complement to the schema.

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 ('Read'), a specific resource ('one visible Redmine version'), and the exact API route ('GET /versions/:id.json'). It also clarifies the scope ('for the configured Redmine API user') and distinguishes it from list_project_versions by focusing on a single version by ID. This is unambiguous and clearly differentiated from siblings.

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 clearly states when to use this tool: to read one visible Redmine version by ID. It also implicitly distinguishes it from list_project_versions (which lists versions) and other get_* tools. However, it does not explicitly name alternatives or state when not to use it, so it falls just short of a 5.

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