Skip to main content
Glama

Get a Redmine user

get_user
Read-onlyIdempotent

Retrieve a single Redmine user's visible details by ID, with optional memberships. Returns only fields the requesting user can access; never modifies data.

Instructions

Read one visible Redmine user from GET /users/:id.json for the configured API user. The required user_id is a positive safe integer. Optionally include memberships, which Redmine documents for non-admin callers and filters to projects visible to the requesting user. Redmine omits private or administrator-only fields such as email when hidden, status, API keys, two-factor settings, authentication sources, groups, and password metadata. This is a non-admin read, but Redmine still enforces user visibility and may return HTTP 403 or 404. This tool never changes Redmine data.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
includeNoUser associations to include: memberships
user_idYesPositive Redmine user ID

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYes
urlYes
emailNo
loginNo
lastNameYes
avatarUrlNo
createdOnNo
firstNameYes
updatedOnNo
lastLoginOnNo
membershipsNo
customFieldsNo

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 beyond annotations: it explains that Redmine may return 403/404 due to visibility enforcement, that private fields are omitted, and that memberships are filtered to visible projects. It also explicitly states 'This tool never changes Redmine data,' reinforcing the read-only nature. This is strong behavioral disclosure for a read tool.

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 endpoint, then adds parameter semantics, then behavioral caveats, and ends with a clear safety statement. Every sentence earns its place, and there is no redundant repetition of schema or annotation content. It is appropriately sized for 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 tool's simplicity (2 params, 1 required), the rich annotations, and the presence of an output schema, the description is complete. It covers the endpoint, parameter semantics, visibility/error behavior, field filtering, and read-only guarantee. An agent has everything needed to select and invoke this tool correctly without opening the schema or output schema.

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 both parameters. The description adds meaning by explaining that user_id must be a 'positive safe integer' and by elaborating on the include parameter's behavior: memberships are documented for non-admin callers and filtered to visible projects. This goes beyond the schema's terse descriptions and helps an agent understand the practical effect of the parameters.

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 user'), and the exact endpoint ('GET /users/:id.json'). It also clarifies the scope ('for the configured API user') and distinguishes it from list-style siblings by emphasizing 'one' user. This is unambiguous and clearly differentiates from sibling tools like get_current_user or list_projects.

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 provides clear context on when to use this tool: to read a single user by ID, with optional memberships inclusion. It does not explicitly name alternative tools or state when not to use it, but the context is strong enough that an agent can infer it is for single-user reads rather than listing or current-user operations. The mention of non-admin behavior and visibility rules adds useful usage context.

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