Skip to main content
Glama

List Redmine project memberships

list_project_memberships
Read-onlyIdempotent

Retrieve paginated memberships for a Redmine project, showing users and groups with their roles. Supports offset, limit, and page parameters for controlled reads.

Instructions

Read the paginated memberships from GET /projects/:project_id/memberships.json for the configured Redmine API user. The required project_id is a positive numeric project ID or valid project identifier. Optional offset, limit, and page parameters use Redmine's collection pagination rules, including a default limit of 25 and a maximum limit of 100. Results distinguish user and group principals and preserve roles, including inherited roles. This is a non-admin read, but Redmine still enforces project visibility and permissions and may return HTTP 403 when the user lacks the relevant project permission. This tool never changes Redmine data.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoPage number. Redmine converts it to an offset using the selected limit.
limitNoNumber of project memberships to return. Redmine caps this at 100.
offsetNoNumber of project memberships to skip
project_idYesPositive numeric project ID or valid Redmine project identifier

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
pagingYes
filtersYes
membershipsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.4/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 is paginated, results distinguish user vs group principals, roles including inherited roles are preserved, and Redmine may return HTTP 403 based on permissions. It also explicitly states 'This tool never changes Redmine data,' reinforcing the read-only nature. This is strong added context, though it doesn't detail the output schema shape (which is covered by the output schema).

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

Conciseness4/5

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

The description is a single dense paragraph that front-loads the core action and resource, then covers pagination, result contents, permissions, and safety. Every sentence adds information. It is slightly long but not bloated; the structure is logical. A 5 would require even tighter organization, but this is well above average.

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 paginated read tool with a rich output schema, the description covers the essential context: the endpoint, the required parameter, pagination behavior, result contents, permission caveats, and safety. The output schema exists, so return values need not be described. The 403 caveat and non-admin note are particularly useful for an agent deciding whether to call this tool. Nothing critical 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 description coverage is 100%, so the schema already documents all four parameters. The description adds meaning by explaining pagination semantics: default limit of 25, maximum limit of 100, and that page is converted to an offset using the selected limit. It also clarifies that project_id can be a numeric ID or a valid project identifier. This goes beyond the schema's field-level descriptions, so a 4 is warranted.

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 ('paginated memberships from GET /projects/:project_id/memberships.json'), and the API context. It distinguishes itself from the sibling get_project_membership by focusing on the paginated list, and it names the configured Redmine API user as the actor. This is unambiguous and clearly differentiated.

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: it is a non-admin read, uses Redmine's pagination rules, and requires a project_id. It does not explicitly name an alternative tool for single-membership retrieval, but the sibling list get_project_membership is implicitly the alternative. It also notes that Redmine enforces project visibility and may return 403, which helps an agent decide when to use it. Missing an explicit 'use get_project_membership for a single membership' statement, so not a 5.

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