Skip to main content
Glama

Get a Redmine issue

get_issue
Read-onlyIdempotent

Retrieve a single Redmine issue by its ID, with optional related details like attachments, journals, and watchers. Read-only access to issue data without modifying the server.

Instructions

Read one visible Redmine issue from GET /issues/:id.json for the configured API user. The required issue_id is a positive issue ID. Optionally include children, attachments, relations, changesets, journals, watchers, allowed_statuses, and reactions. This tool never changes Redmine data; include=journals also returns the issue's journal history.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
includeNoIssue associations to include: children, attachments, relations, changesets, journals, watchers, allowed_statuses, or reactions
issue_idYesPositive Redmine issue ID

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYes
urlYes
authorYes
parentYes
statusYes
dueDateYes
projectYes
subjectYes
trackerYes
categoryYes
childrenYes
closedOnYes
journalsYes
priorityYes
watchersYes
createdOnYes
doneRatioYes
isPrivateYes
reactionsYes
relationsYes
startDateYes
updatedOnYes
assignedToYes
changesetsYes
spentHoursYes
attachmentsYes
descriptionYes
customFieldsYes
fixedVersionYes
estimatedHoursYes
allowedStatusesYes
totalSpentHoursYes
totalEstimatedHoursYes

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 and destructiveHint=false, and the description reinforces this with 'This tool never changes Redmine data.' It adds a specific behavioral detail about include=journals returning journal history, which goes beyond the schema. It does not mention auth specifics or rate limits, but for a read-only tool the description is sufficiently transparent given the annotation coverage.

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?

Two sentences, front-loaded with the primary action and endpoint, followed by a brief behavioral note. Every sentence earns its place; there is no redundant fluff or repetition of schema content.

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 read-only tool with a simple parameter set and an output schema (mentioned as present), the description covers purpose, parameter constraints, and a key behavioral detail. It does not need to explain return format since the output schema exists, and error handling is not required for a basic read operation. Sibling differentiation is implicit but sufficient.

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 both parameters are fully documented in the schema. The description adds a useful clarification that issue_id must be positive (already in schema) and highlights the journal history behavior for the include parameter, which adds value beyond the schema. It does not explain each include option's semantics, but the schema already lists them.

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), resource (one visible Redmine issue), and even the exact API endpoint (GET /issues/:id.json). It distinguishes from siblings like list_issues by explicitly limiting to a single issue, and from get_issue_relation by focusing on the issue itself. The addition of 'for the configured API user' adds precision.

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 implies usage for a single issue retrieval ('Read one visible Redmine issue'), which distinguishes it from list_issues for bulk retrieval. It does not explicitly name alternatives or exclusion conditions, but the context is unambiguous enough for an agent to infer when to use it. The include parameter guidance is also implicit rather than explicit.

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