Skip to main content
Glama

Get a Redmine role

get_role
Read-onlyIdempotent

Retrieve a specific Redmine role by ID, including built-in roles like Non member or Anonymous. Provides read-only access to role details and permissions.

Instructions

Read one Redmine role from GET /roles/:id.json for the configured Redmine API user. The required role_id is a positive safe integer. This detail endpoint accepts ordinary API authentication, sends no query, include, pagination, or undocumented controls, and can return a built-in Non member or Anonymous role when its ID is known; unlike GET /roles.json, it is not limited to givable project-member roles. Results map the current serializer fields id, name, assignable, issues_visibility, time_entries_visibility, users_visibility, and ordered permissions to camelCase, validate the closed visibility enum domains, preserve permission order, preserve explicit nulls, and preserve omission of the Redmine 4.0+ assignable and visibility fields on older servers. The HTML roles page is admin-only for ordinary browser requests, so results have no browser links. Redmine may return HTTP 401, 403, or 404 without exposing the upstream response body. This tool never changes Redmine data.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
role_idYesPositive Redmine role ID

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYes
nameYes
assignableNo
permissionsYes
usersVisibilityNo
issuesVisibilityNo
timeEntriesVisibilityNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds substantial context beyond this: it explains the endpoint's behavior (sends no query/include/pagination), that it can return built-in roles, that it preserves field order, nulls, and omission of fields on older servers, and that Redmine may return 401/403/404 without exposing the response body. It also explicitly states 'This tool never changes Redmine data,' reinforcing the read-only nature. No contradictions with annotations.

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 detailed but every sentence carries meaningful information. It is front-loaded with the core purpose and endpoint, followed by parameter note, usage distinction, response behavior, and error handling. No fluff or redundant statements; it earns its length with actionable details.

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 presence of an output schema, the description does not need to explain return values. It covers authentication, endpoint, parameter constraints, usage distinction, response mapping details, and error behavior. For a single-parameter tool, this is comprehensive and leaves no critical gaps for an agent to call it correctly.

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

Parameters3/5

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

The schema already provides full description and constraints for role_id (positive integer, maximum, exclusiveMinimum). The description restates 'positive safe integer' which adds little beyond the schema. Since schema coverage is 100%, the baseline is 3, and the description does not introduce new parameter semantics beyond restating what is already known.

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 Redmine role'), and the exact endpoint ('GET /roles/:id.json'). It explicitly distinguishes this from the sibling list_roles tool by noting it is not limited to givable project-member roles, which allows an agent to select the correct tool without ambiguity.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool: when a specific role ID is known and the role may be a built-in (Non member or Anonymous) role. It also contrasts with list_roles, clarifies that it accepts ordinary API authentication, and notes what it does not do (no query, include, pagination, or undocumented controls). This leaves no ambiguity about usage context or alternatives.

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