Skip to main content
Glama

list_users

Retrieve Redmine user listings to identify assignee IDs by name, requiring administrator privileges for access.

Instructions

Returns a list of Redmine users. Useful for looking up assignee IDs by name. Note: May require Redmine administrator privileges.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Implementation Reference

  • The actual implementation of the list_users logic, which queries the Redmine client and formats user information.
    def list_users(self) -> List[Dict[str, Any]]:
        try:
            return [
                {
                    "id": u.id,
                    "login": _safe(u, "login", ""),
                    "firstname": _safe(u, "firstname", ""),
                    "lastname": _safe(u, "lastname", ""),
                    "name": f"{_safe(u, 'lastname', '')} {_safe(u, 'firstname', '')}".strip(),
                }
                for u in self._redmine.user.all()
            ]
        except (AuthError, ForbiddenError) as e:
            raise RedmineError(f"Authentication failed (administrator privileges may be required): {e}") from e
        except Exception as e:
            raise RedmineError(f"list_users failed: {e}") from e
  • The MCP tool interface layer for 'list_users' which calls the underlying server method.
    def list_users() -> List[Dict[str, Any]]:
        """Returns a list of Redmine users. Useful for looking up assignee IDs by name.
        Note: May require Redmine administrator privileges."""
        logger.info("tool=list_users")
        try:
            return _client().list_users()
        except RedmineError as e:
            logger.error(f"list_users error: {e}")
            raise
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds important context about privilege requirements ('May require Redmine administrator privileges'), which is valuable behavioral information not in the schema. However, it doesn't describe other behavioral aspects like pagination, rate limits, sorting options, or what fields are returned in the user list.

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 perfectly concise with two sentences that each serve distinct purposes: the first states the core functionality, the second provides important contextual guidance. There's zero waste or redundancy, and the information is front-loaded with the primary purpose stated first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, read-only operation), the presence of an output schema, and 100% schema coverage, the description is reasonably complete. It covers the purpose, a key use case, and important privilege requirements. However, for a tool with no annotations, it could benefit from mentioning what information is returned in the user list or any limitations.

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?

The tool has 0 parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since there are none, and the schema already fully documents the empty parameter set. No additional parameter semantics are needed or provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Returns a list of Redmine users' with the specific resource (Redmine users) and verb (returns/list). It distinguishes from siblings like list_issues or list_projects by specifying the resource type. However, it doesn't explicitly differentiate from potential user-related tools that might exist in other contexts.

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 usage context: 'Useful for looking up assignee IDs by name' which explains a primary use case. It also mentions privilege requirements: 'May require Redmine administrator privileges' which is valuable guidance. However, it doesn't explicitly state when NOT to use this tool or name specific alternatives among the sibling tools.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/daiji-sshr/redmine-mcp-stateless'

If you have feedback or need assistance with the MCP directory API, please join our Discord server