Skip to main content
Glama
YuSahrov

mcp-redmine-server

by YuSahrov

MCP Redmine Server

Model Context Protocol (MCP) server for Redmine integration. Provides comprehensive Redmine API access to Claude Code and other MCP-compatible AI assistants.

Features

  • Issue Management: Create, read, update issues with full details

  • File Attachments: Upload and attach files/images to issues

  • Workflow Support: Start/complete fix workflows with Git integration

  • Relations & Tree: Manage issue relations, subtasks, and hierarchies

  • Status Filtering: Query issues by status with flexible filtering

  • Comments: Add comments and update issue status

  • Git Integration: Automatic branch creation and commit tracking

  • Wiki Support: Full wiki page management (read, create, update, delete)

Related MCP server: Redmine MCP Server

Available Tools

The server provides the following MCP tools:

Issue Operations

  1. redmine_get_issue - Get detailed issue information

    • Includes description, status, priority, comments

    • Returns full issue object with all metadata

  2. redmine_create_issue - Create new issue

    • Parameters: title, description, tracker_id, priority_id, parent_id, file_paths

    • Supports creating subtasks via parent_id

    • Can attach files during issue creation

  3. redmine_add_comment - Add comment to issue

    • Can optionally update issue status

    • Useful for progress updates and status changes

File & Attachment Operations

  1. redmine_upload_file - Upload file to Redmine

    • Returns upload token for later use

    • Supports all file types (images, documents, archives, etc.)

  2. redmine_add_attachments - Attach files to existing issue

    • Upload and attach multiple files in one operation

    • Automatically adds comment with file list

Querying & Filtering

  1. redmine_get_issues_by_status - Filter issues by status

    • Parameters: status_name, limit, project_id

    • Returns issues with specific status (e.g., "New", "In Progress")

    • Can filter by project or get from all projects

  2. redmine_get_statuses - Get all available statuses

    • Returns complete list of project statuses

    • Useful for discovering valid status names

  3. redmine_get_projects - Get all accessible projects

    • Lists all Redmine projects available to your API key

    • Useful for multi-project environments

  4. redmine_get_project - Get project details

    • Returns project info with trackers and enabled modules

  5. redmine_get_project_issues - Get issues from specific project

    • Supports pagination and filtering

    • Filter by status, tracker, assignee

Relations & Hierarchy

  1. redmine_get_issue_tree - Get full issue tree

    • Returns main issue, related issues, and child issues

    • Shows complete issue hierarchy

  2. redmine_create_relation - Link two issues

    • Relation types: relates, blocks, blocked, duplicates, precedes, follows

    • Creates bidirectional relationships

Workflow Automation

  1. redmine_start_fix - Start fix workflow

    • Creates Git branch automatically

    • Updates issue status to "In Progress"

    • Adds workflow comment

  2. redmine_complete_fix - Complete fix workflow

    • Updates issue status to "Resolved"

    • Adds completion comment with commit details

    • Validates working directory is clean

Wiki Operations

  1. redmine_wiki_get_page - Get wiki page content

    • Returns page text and metadata

    • Includes attachments information

  2. redmine_wiki_get_index - List all wiki pages

    • Returns index of all pages in project

  3. redmine_wiki_put_page - Create or update wiki page

    • Uses Redmine Textile markup

    • Supports page hierarchy via parent_title

  4. redmine_wiki_delete_page - Delete wiki page

    • Permanently removes wiki page from project

Installation

Install the MCP server globally for use across all projects:

# Install dependencies
npm install

# Create global link
npm link

# Verify installation
which mcp-redmine

Local Installation

Or install locally in a specific project:

npm install

Configuration

Environment Variables

Create a .env file or set environment variables:

# Required
export REDMINE_API_KEY=your_api_key_here

# Optional (defaults shown)
export REDMINE_BASE_URL=https://3cad.tech
export REDMINE_PROJECT_ID=8
export REDMINE_PROJECT_IDENTIFIER=cad-tech

Get Your Redmine API Key

  1. Log in to your Redmine instance

  2. Go to "My account" (top right menu)

  3. Click "Show" under "API access key" on the right sidebar

  4. Copy the API key

Claude Code Integration

Method 1: Global MCP Configuration

Add to your global Claude Code MCP settings (~/.config/claude-code/mcp.json or similar):

{
  "mcpServers": {
    "redmine": {
      "command": "mcp-redmine",
      "env": {
        "REDMINE_API_KEY": "your_api_key_here",
        "REDMINE_BASE_URL": "https://3cad.tech",
        "REDMINE_PROJECT_ID": "8",
        "REDMINE_PROJECT_IDENTIFIER": "cad-tech"
      }
    }
  }
}

Method 2: Project-Specific Configuration

Add to your project's .claude/mcp.json:

{
  "mcpServers": {
    "redmine": {
      "command": "node",
      "args": ["path/to/mcp-redmine-server/index.js"],
      "env": {
        "REDMINE_API_KEY": "your_api_key_here"
      }
    }
  }
}

Method 3: Use with dotenv

If using local installation with .env file:

{
  "mcpServers": {
    "redmine": {
      "command": "node",
      "args": ["-r", "dotenv/config", "path/to/mcp-redmine-server/index.js"],
      "cwd": "path/to/mcp-redmine-server"
    }
  }
}

Usage Examples

Once configured in Claude Code, the AI assistant can use these tools automatically:

Example Conversations

User: "Show me all issues that are in progress"

Claude will use redmine_get_issues_by_status with status_name: "In Progress"


User: "Create a new bug for the login page issue"

Claude will use redmine_create_issue with appropriate tracker_id


User: "Start working on issue #42"

Claude will use redmine_start_fix to:

  • Create a Git branch fix/issue-42-...

  • Update issue status to "In Progress"

  • Add comment with branch name


User: "I've fixed issue #42, the login validation is working now"

Claude will use redmine_complete_fix to:

  • Update status to "Resolved"

  • Add completion comment with commits

  • Provide next steps (PR, merge, etc.)


User: "Show me the full tree of issue #78"

Claude will use redmine_get_issue_tree to show:

  • Main issue details

  • All related issues

  • All child/subtask issues


User: "Create a bug report for the login issue and attach the screenshot from my Desktop"

Claude will:

  1. Use redmine_upload_file to upload the screenshot

  2. Use redmine_create_issue with the upload token to create issue with attachment


User: "Add these error logs to issue #150: /path/to/error.log and /path/to/debug.log"

Claude will use redmine_add_attachments to:

  • Upload both log files

  • Attach them to issue #150

  • Add comment with file list


User: "Create a new feature request with the mockup image attached"

Claude will use redmine_create_issue with file_paths parameter to create issue with attachment in one step

File Upload API Details

How File Attachments Work

Redmine API uses a two-step process for file attachments:

  1. Upload File: First, upload the file to get a token

    // Returns: { token: "abc123...", filename: "screenshot.png", filesize: 12345 }
  2. Attach to Issue: Use the token when creating/updating an issue

    // The token is automatically used in issue creation/update

The MCP server simplifies this by handling both steps automatically:

  • redmine_add_attachments: Upload files and attach them in one call

  • redmine_create_issue with file_paths: Create issue with attachments in one call

  • redmine_upload_file: Manual upload if you need the token for later use

Supported File Types

All file types are supported:

  • Images: PNG, JPG, GIF, SVG, etc.

  • Documents: PDF, DOC, DOCX, TXT, MD, etc.

  • Archives: ZIP, TAR, GZ, RAR, etc.

  • Code: JS, PY, JAVA, etc.

  • Logs: LOG, TXT, etc.

  • Any other binary files

File Path Requirements

  • Must be absolute paths (e.g., /home/user/screenshot.png or C:\Users\User\image.png)

  • Files must exist and be readable

  • No size limit enforced by MCP server (Redmine server may have limits)

Testing

Test the MCP server manually:

# Set environment variables
export REDMINE_API_KEY=your_api_key_here

# Run server (it communicates via stdio)
node index.js

# In another terminal, use MCP client to test
# Or test with Claude Code directly

Testing File Uploads

# Example: Create issue with attachment
# This is done automatically by Claude when using the MCP tools
# Just ask: "Create a bug report and attach /path/to/screenshot.png"

Troubleshooting

"REDMINE_API_KEY environment variable is required"

Make sure you've set the REDMINE_API_KEY environment variable or created a .env file.

"Connection failed" errors

  1. Check your REDMINE_BASE_URL is correct

  2. Verify your API key is valid

  3. Ensure you have network access to the Redmine server

  4. Check firewall/proxy settings

Git integration not working

  1. Ensure Git is installed and available in PATH

  2. Verify you're running commands from a Git repository

  3. Check you have write permissions for the repository

Architecture

┌─────────────────────────────────────────┐
│         Claude Code / MCP Client        │
│                                         │
└──────────────┬──────────────────────────┘
               │ MCP Protocol (stdio)
               │
┌──────────────▼──────────────────────────┐
│        MCP Redmine Server               │
│                                         │
│  • Issue Management Tools               │
│  • File Upload & Attachments            │
│  • Workflow Automation                  │
│  • Git Integration                      │
│  • Wiki Management                      │
│  • Status & Filtering                   │
│                                         │
└──────────────┬──────────────────────────┘
               │ HTTPS API
               │
┌──────────────▼──────────────────────────┐
│         Redmine REST API                │
│                                         │
│  • Issues                               │
│  • Relations                            │
│  • Statuses                             │
│  • Projects                             │
│                                         │
└─────────────────────────────────────────┘

Security Notes

  • API Key: Never commit your API key to version control

  • Environment Variables: Use .env files or secure environment configuration

  • .gitignore: The .env file is already in .gitignore

  • Permissions: API key should have appropriate permissions in Redmine

  • Git Operations: Server executes Git commands - ensure trusted environment

Development

Project Structure

mcp-redmine-server/
├── index.js              # Main MCP server implementation
├── package.json          # Node.js dependencies and metadata
├── .env.example          # Example environment configuration
├── .gitignore            # Git ignore rules
└── README.md             # This file

Adding New Tools

To add new Redmine functionality:

  1. Add tool definition to ListToolsRequestSchema handler

  2. Implement tool logic in CallToolRequestSchema handler

  3. Add corresponding helper function if needed

  4. Update this README with usage examples

License

MIT

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

Support

For issues specific to this MCP server, please open a GitHub issue.

For Redmine API questions, refer to the official documentation.

Available Tools

18 tools
redmine_add_attachmentsA

Add one or more file attachments to an existing Redmine issue. Files are uploaded and automatically attached.

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYesThe Redmine issue ID to attach files to
file_pathsYesArray of absolute file paths to attach to the issue

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It does state that files are uploaded and automatically attached, which names the key side effect, but it omits permission requirements, failure behavior, and whether the operation is reversible.

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 short sentences with no filler: the first establishes action and target, the second clarifies the upload-and-attach behavior. The information is front-loaded and every sentence earns its place.

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

Completeness3/5

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

For a simple two-parameter tool with complete schema descriptions, the essential invocation details are present. However, the lack of an output schema means return/confirmation behavior is not addressed, and the relationship to sibling redmine_upload_file is not clarified.

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?

Schema description coverage is 100%, so the schema already explains both issue_id and file_paths adequately; the description adds only the 'one or more' count notion. No extra constraints like file size or allowed types are given, but this is acceptable at the schema-coverage baseline.

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 uses a specific verb ('Add') and resource ('one or more file attachments to an existing Redmine issue'), stating exactly what the tool does. It is clearly distinguishable from sibling redmine_upload_file by the attachment-to-issue target.

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

Usage Guidelines3/5

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

The description makes the core use case clear—attaching files to an existing issue—so an agent can infer when to use it. However, it does not explicitly contrast with redmine_upload_file or mention when to prefer one over the other, leaving some selection ambiguity.

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

redmine_add_commentA

Add a comment to an existing Redmine issue and optionally change its status

ParametersJSON Schema
NameRequiredDescriptionDefault
commentYesComment text
issue_idYesThe Redmine issue ID
status_idNoOptional: New status ID (1=New, 2=In Progress, 3=Resolved, 5=Closed)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It correctly identifies the mutation (adding a comment and optionally changing status), but it does not disclose response format, permission requirements, failure behavior, or other side effects.

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?

A single, front-loaded sentence that states the primary action and the optional modifier. There is no filler; every phrase earns its place.

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

Completeness3/5

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

For a simple 3-parameter tool, the main action and optional status behavior are clear, and the schema documents parameters fully. However, with no output schema or annotations, return behavior and failure cases are unspecified, leaving it adequate but not complete.

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?

Schema description coverage is 100%, with clear descriptions for issue_id, comment, and status_id. The description's 'optionally change its status' adds little beyond the schema's own status_id documentation, so the baseline 3 applies.

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 uses a specific verb ('Add') and resource ('comment'), clearly targets an existing Redmine issue, and adds the optional status-change behavior. This distinguishes it from siblings like redmine_create_issue and status-transition tools.

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

Usage Guidelines3/5

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

The description implies usage context: use it when commenting on an existing issue and possibly changing its status. However, it does not explicitly contrast with alternatives like redmine_create_issue or redmine_start_fix, nor does it state when not to use it.

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

redmine_complete_fixA

Complete fix workflow: updates issue status to "Resolved" and adds completion comment with commit details

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYesThe Redmine issue ID to complete
working_directoryNoWorking directory for git operations (default: current directory)
completion_messageYesMessage describing what was done

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral burden. It does disclose the main side effects: the issue status is changed to 'Resolved' and a completion comment is added. However, it does not mention that git operations may be involved via working_directory, even though the schema lists it as a git working directory, and it does not address reversibility, failure modes, or required permissions.

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 a single compact sentence that fronts the main purpose and then states the concrete effects. Every word earns its place, with no filler or repetition of schema property definitions.

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

Completeness3/5

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

The main workflow and required parameters are clear, but the description omits the role of working_directory and how commit details are gathered, which is relevant for correct invocation. With no output schema and no annotations, an agent may not anticipate git-related failures or side effects.

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?

Schema description coverage is 100%, so the parameters are already documented. The description adds limited extra meaning: it indicates the completion_message becomes part of a completion comment, but it does not clarify how working_directory is used or how commit details are obtained.

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?

Describes a specific action: updating the issue status to 'Resolved' and adding a completion comment with commit details. This clearly distinguishes it from sibling tools like redmine_start_fix and redmine_add_comment, which only handle part of the workflow.

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

Usage Guidelines3/5

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

The phrase 'Complete fix workflow' implies this tool is used to finalize a fix rather than start one, but the description does not explicitly state when to use it versus alternatives. It provides context but no direct exclusion or alternative guidance.

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

redmine_create_issueA

Create a new Redmine issue with specified title and description. Can optionally attach files by providing file paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesIssue title/subject
parent_idNoParent issue ID (for creating subtasks)
file_pathsNoOptional: Array of absolute file paths to attach to the issue
project_idNoProject ID or identifier to create issue in. If not specified, uses default project from config
tracker_idNoTracker ID (1=Bug, 2=Feature, 3=Support). Default: 2
descriptionYesIssue description
priority_idNoPriority ID (1=Low, 2=Normal, 3=High, 4=Urgent, 5=Immediate). Default: 2

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are present, so the description must carry the behavioral disclosure burden. It only says an issue is created and files may be attached, with no mention of default project behavior, permissions, side effects, or what the response contains. This is a significant gap for a mutation 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 two concise sentences with no filler. The core purpose is front-loaded, and the optional attachment behavior is added in a single clear clause.

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

Completeness2/5

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

This is a 7-parameter mutation tool with no annotations and no output schema, yet the description is very thin. It omits project selection behavior, parent/tracker/priority handling, and any indication of what the tool returns after creating an issue, leaving an agent under-informed for correct invocation.

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?

Schema description coverage is 100%, so the baseline is 3. The description adds minor value by naming title, description, and file_paths, but it does not meaningfully enrich the schema's already complete parameter descriptions.

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 ('Create'), a clear resource ('new Redmine issue'), and the core content ('specified title and description'), while also noting optional file attachments. This clearly distinguishes it from sibling tools that read issues, add comments, or manipulate wiki pages.

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: use this tool to create a new Redmine issue, optionally with attached files. It does not explicitly compare against alternatives like redmine_upload_file or redmine_add_attachments, and it lacks exclusions, but the usage intent is unambiguous.

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

redmine_create_relationB

Create a relation between two issues (relates, blocks, duplicates, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYesSource issue ID
relation_typeNoRelation type: relates, blocks, blocked, duplicates, precedes, follows. Default: relates
related_issue_idYesTarget issue ID

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses that it mutates by creating a relation, but does not mention permissions, idempotency, duplicate-relation behavior, or what response to expect. For a write operation this is a significant gap.

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 one front-loaded sentence with no redundant filler. It is concise, though it sacrifices substantive usage and behavior context that would improve the definition.

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

Completeness3/5

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

For a simple three-parameter tool with full schema coverage, the core invocation is described well enough. However, with no output schema and no annotations, the lack of return-value or side-effect context leaves the definition slightly incomplete for an agent evaluating success or downstream effects.

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?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds little beyond the relation-type examples already present in the schema and does not clarify directionality or default behavior of the optional relation_type.

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 and resource: it creates a relation between two issues. It also lists example relation types, and the wording clearly distinguishes it from sibling tools like redmine_create_issue or redmine_add_comment.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives, and no exclusions are stated. The sibling list suggests a relation-specific use case, but the description leaves that to inference.

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

redmine_get_issueA

Get detailed information about a Redmine issue including description, status, priority, assigned user, and comments

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYesThe Redmine issue ID

TDQS

A4.2/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden. 'Get' clearly signals a read-only retrieval rather than a mutation, and the listed fields describe the response content. It does not mention authentication, rate limits, or error handling, but for a simple fetch-by-ID operation this is reasonably transparent.

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 a single, front-loaded sentence with no filler. It opens with the action and then lists the useful response fields, making it efficient and easy to parse.

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?

With only one parameter and no output schema, this description gives enough for an agent to know what will be returned. It could mention behavior on missing issues or the exact response envelope, but these are minor gaps for a straightforward get-by-ID operation.

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?

Schema description coverage is 100%: the issue_id parameter is fully documented as 'The Redmine issue ID'. The description adds no parameter-level detail, so the baseline score of 3 is appropriate.

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 uses a specific verb ('Get') with a clear resource ('detailed information about a Redmine issue') and enumerates key fields (description, status, priority, assigned user, comments). This clearly distinguishes it from siblings like redmine_get_issue_tree or redmine_get_issues_by_status, even without naming them.

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 implies the primary use case: when you need detailed information about a single issue by ID. It provides clear context but does not explicitly mention alternatives or exclusion criteria, preventing a 5.

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

redmine_get_issues_by_statusB

Get all issues with a specific status (e.g., "New", "In Progress", "Resolved"). Can filter by project or get from all projects

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of issues to return (default: 50)
project_idNoProject ID or identifier to filter by. If not specified, returns issues from all accessible projects
status_nameYesStatus name to filter by

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It says 'Get all issues' but the schema includes a limit parameter with a default of 50, which is misleading about the result set size. It also does not mention pagination, ordering, or whether the operation is read-only, though the verb 'Get' suggests it.

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 two concise sentences with no filler. The primary purpose is front-loaded in the first sentence, and the second sentence adds relevant filtering context without redundancy.

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

Completeness3/5

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

For a simple read tool with fully documented parameters, the description is mostly adequate, but the 'all issues' claim is not qualified by the limit default, and there is no mention of the response shape or pagination. These gaps matter more because there is no output schema and no annotations to fill them.

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?

Schema description coverage is 100%, so the schema already documents status_name, project_id, and limit clearly. The description adds examples of status values and clarifies the all-projects vs. specific-project filter, but it does not materially expand on the parameter semantics beyond what the schema already conveys.

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 verb and resource: 'Get all issues with a specific status' and gives concrete examples of valid statuses. It does not explicitly differentiate this from sibling tools like redmine_get_project_issues, but the status-centric focus is distinct enough for an agent to infer the purpose.

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

Usage Guidelines3/5

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

The description gives useful context: it can filter by a project or search across all projects. However, it does not state when to prefer this tool over alternatives such as redmine_get_project_issues, redmine_get_issue, or redmine_get_issue_tree, nor does it provide exclusions or conditions.

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

redmine_get_issue_treeA

Get full issue tree including related issues and child/subtask issues

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYesThe Redmine issue ID

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool returns a tree with related and child issues, which is useful, but it doesn't mention side effects, authentication needs, or limitations such as recursion depth or scope of 'related'.

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 a single, focused sentence with no filler. It front-loads the core action and resource, then clarifies what is included.

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?

For a one-parameter, read-only tool with no output schema, the description sufficiently explains what the tool returns. The only minor gap is ambiguity around what counts as 'related' and whether the tree is recursively expanded, but overall it is adequate for correct invocation.

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?

Schema description coverage is 100% and the parameter is self-explanatory ('The Redmine issue ID'). The description adds no extra meaning about usage of the parameter beyond the schema.

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 clearly identifies the verb ('Get') and the specific resource ('full issue tree'), and it distinguishes the tool from siblings like redmine_get_issue by emphasizing the inclusion of related and child/subtask issues. There is no ambiguity about what the tool operates on.

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

Usage Guidelines2/5

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

The description implies the tool is for retrieving hierarchical issue structures but gives no explicit guidance on when to choose this over alternatives, nor any exclusions or prerequisites. An agent must infer usage from the tool name and sibling context.

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

redmine_get_projectA

Get detailed information about a specific Redmine project including trackers and enabled modules

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe Redmine project ID or identifier (e.g., "my-project" or "5")

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. The verb 'get' implies a read-only operation, but the description does not explicitly state that it has no side effects, what happens on invalid IDs, or permission requirements. It does disclose the returned content scope (trackers and enabled modules), which adds value.

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?

A single, focused sentence that front-loads the main purpose and then adds two useful enrichment details. There is no redundancy or filler.

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?

For a simple read operation with one well-documented parameter, the description provides enough context for an agent to select and invoke it correctly. There is no output schema, but the description partially indicates the return contents. It does not exhaustively describe all returned fields, but that is not necessary for this tool's simplicity.

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?

Schema coverage is 100% and the project_id parameter already includes a clear description with examples. The tool description does not add additional parameter semantics, but the schema alone is sufficient, so the baseline of 3 is appropriate.

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 ('get') and resource ('specific Redmine project') and adds useful detail ('including trackers and enabled modules'). This clearly distinguishes it from sibling tools like redmine_get_projects (a list) and redmine_get_project_issues (a scoped query).

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 establishes clear context: it is for retrieving details of a single project rather than listing all projects. It does not explicitly name alternatives or exclusions, but the phrase 'specific project' combined with sibling tool names implies the correct choice.

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

redmine_get_project_issuesA

Get issues from a specific project with optional filters

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of issues to return (default: 50)
offsetNoOffset for pagination (default: 0)
status_idNoStatus ID to filter by (use "*" for all statuses, default: "*")
project_idYesThe Redmine project ID or identifier
tracker_idNoTracker ID to filter by (1=Bug, 2=Feature, 3=Support)
assigned_to_idNoUser ID to filter by assignee

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must carry full behavioral disclosure. 'Get' implies a read operation, but the description does not state whether authentication is needed, how pagination behaves beyond the parameter descriptions, what the default status behavior is, or what the response contains. This is thin coverage for an unannotated 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?

A single sentence that immediately identifies the main action and scope, with no filler or redundant information. It is front-loaded and every word contributes meaning.

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

Completeness3/5

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

For a simple retrieval tool with well-documented parameters, the description covers the core operation. However, with no annotations and no output schema, the agent receives no guidance on return format, error behavior, or when to prefer a sibling tool, leaving some contextual gaps.

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?

Schema description coverage is 100%, so the schema already documents all six parameters, including defaults and filter semantics. The description adds only generic 'optional filters' context, which is marginal, but no parameter is left undocumented, so the baseline 3 is appropriate.

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 uses a specific verb ('Get'), resource ('issues'), and clear scope ('from a specific project'), and notes optional filters. This distinguishes it from sibling tools like redmine_get_issue (singular) and redmine_get_issues_by_status (status-scoped rather than project-scoped).

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

Usage Guidelines3/5

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

The description implies when this tool is appropriate—when issues tied to a specific project are needed—and the phrase 'optional filters' signals flexible use. However, it does not explicitly contrast with alternatives like redmine_get_issues_by_status or redmine_get_issue, leaving the agent to infer routing from sibling names.

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

redmine_get_projectsA

Get list of all available Redmine projects that the API key has access to

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of projects to return (default: 100)

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses that results are scoped to the API key's access rather than all Redmine projects, which is a meaningful behavioral detail. However, it does not mention pagination behavior, default limits, or the shape of returned data, and the schema already documents the limit parameter.

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?

A single, tightly worded sentence conveys the core action, resource, and access scope without redundancy. It is front-loaded and contains no filler.

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?

For a simple list operation with one optional parameter, the description is adequate: an agent knows what the tool returns and under what access restrictions. The absence of an output schema and annotations leaves room for more detail about result fields or pagination, but that is not critical for basic invocation.

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?

Schema description coverage is 100%, and the only parameter, limit, is fully documented in the input schema. The description adds no extra meaning about the parameter, so the baseline score of 3 applies; it neither improves nor harms parameter understanding.

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 ('Get list of'), a clear resource ('Redmine projects'), and the exact scope ('that the API key has access to'). It clearly distinguishes this list-retrieval tool from siblings like redmine_get_project, which targets a single project.

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 implies when to use it—when you need the full set of projects visible to the API key—and the sibling set makes the contrast with redmine_get_project obvious. However, it does not explicitly state 'use redmine_get_project for a single project' or provide exclusion criteria, so it stops short of full guidance.

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

redmine_get_statusesA

Get all available issue statuses in the Redmine project

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. The verb 'Get' implies a non-destructive read, which is the key behavioral trait, but the description does not disclose return format, ordering, or whether statuses are global to the Redmine instance or scoped to a specific project. This is adequate but thin for a simple enumeration 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 a single, tightly worded sentence with no filler. It front-loads the action and resource immediately and every word contributes meaning.

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?

For a zero-parameter, read-only listing tool, the description is nearly complete: it names the resource, the scope, and the operation. The only minor gap is the ambiguity of 'in the Redmine project' (instance-wide versus a single project), and the absence of an output schema means return structure is left unspecified, but this is a nominal gap for such a simple call.

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 input schema has zero parameters and 100% schema description coverage, so there are no parameters to document. Per the baseline for 0-parameter tools, the description need not compensate for anything, and no parameter semantics are required.

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 uses a specific verb ('Get') and resource ('issue statuses') with a clear scope ('all available in the Redmine project'). It is readily distinguishable from siblings like redmine_get_issues_by_status because it targets the statuses themselves rather than issues filtered by status, though it never explicitly names the distinction.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives such as redmine_get_issues_by_status or redmine_get_issue. The description states what it does but provides no context for selection or exclusions, so an agent must infer usage from the tool name and sibling names.

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

redmine_start_fixA

Start fix workflow: creates git branch, updates issue status to "In Progress", and provides task analysis

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYesThe Redmine issue ID to start fixing
working_directoryNoWorking directory for git operations (default: current directory)

TDQS

A3.9/5.0
Behavior4/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 explicitly lists the three side effects: git branch creation, issue status update, and task analysis production. It does not cover edge cases like idempotency or branch naming conventions, but the core behavioral traits are clearly disclosed.

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 a single front-loaded sentence that immediately states the purpose and then lists three concrete effects. Every phrase earns its place, with no filler or redundant wording.

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

Completeness3/5

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

The description is adequate for a tool with two simple parameters and a complete schema, but it leaves some gaps. Since there is no output schema, the return value is only vaguely described as 'task analysis', and there is no mention of what happens if the branch already exists or how the workflow relates to redmine_complete_fix.

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 input schema provides 100% coverage of both parameters, including descriptive text for issue_id and working_directory. The tool description adds no additional parameter-specific meaning, so the baseline score of 3 is appropriate.

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 concrete action, 'Start fix workflow', and enumerates distinctive effects: creating a git branch, updating the issue status, and providing task analysis. This clearly separates it from siblings like redmine_complete_fix without relying on the tool name alone.

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

Usage Guidelines3/5

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

The description implies this tool is for beginning a fix on an issue and implicitly contrasts with redmine_complete_fix, but it does not explicitly say when to use this tool versus alternatives or mention prerequisites such as being assigned to the issue. The intended usage is clear enough but left to inference.

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

redmine_upload_fileA

Upload a file to Redmine and get an upload token. This token can be used later to attach the file to an issue.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to the file to upload

TDQS

A4.2/5.0
Behavior4/5

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

There are no annotations, so the description bears the full burden of explaining behavior. It discloses that the tool performs a two-step workflow: uploading the file and returning a token for later use. It does not mention permissions, file size limits, or token expiration, but for a single-parameter upload tool the core behavior is adequately described.

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 two short, focused sentences with no filler. The main action is front-loaded, and the follow-up sentence explains the practical purpose of the upload token.

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?

For a simple tool with one fully documented parameter, the description covers what the tool does, what it returns ('upload token'), and how the result is used later. It does not detail the response format or error behavior, but no output schema exists and the provided guidance is sufficient for correct invocation.

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?

Schema description coverage is 100% and the single parameter 'file_path' is already documented as 'Absolute path to the file to upload.' The description adds no additional semantic detail beyond what the schema provides, so the baseline score of 3 is appropriate.

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 action ('Upload a file to Redmine'), a clear resource (file), and a distinctive outcome ('get an upload token'). This clearly separates it from siblings like redmine_add_attachments, which attach files to issues directly.

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 explains that the token can be used later to attach the file to an issue, which gives useful context for when this tool is the right choice: as a preliminary upload step rather than the final attachment step. It does not explicitly name alternatives, but the usage context is clear.

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

redmine_wiki_delete_pageA

Delete a wiki page from a Redmine project

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesWiki page title to delete
project_idYesThe Redmine project ID or identifier

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral disclosure burden. It correctly indicates the destructive nature but does not mention irreversibility, effect on page history, permissions required, or error behavior. This is a noticeable gap for a mutating 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 one clear, front-loaded sentence with no redundant information. It is appropriately sized for the tool's simplicity.

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

Completeness3/5

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

For a simple two-parameter delete operation the description is basically sufficient for selection and invocation, especially with full schema coverage. However, because this is destructive and there is no output schema or annotations, it would benefit from a caution about irreversibility or result behavior.

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?

Schema description coverage is 100%, so parameters are already well documented. The description adds little parameter-specific meaning beyond reaffirming that the operation targets a page within a Redmine project.

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 ('Delete'), a specific resource ('wiki page'), and the context ('from a Redmine project'). This clearly distinguishes it from the sibling tools, none of which perform deletion.

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

Usage Guidelines3/5

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

The intended usage is implied by the verb: use this when you want to delete a wiki page. However, there is no explicit guidance about prerequisites, when not to use it, or how it compares to related wiki tools.

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

redmine_wiki_get_indexA

Get a list of all wiki pages in a Redmine project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe Redmine project ID or identifier

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states the basic operation and does not disclose pagination, ordering, permissions, or what fields are returned. The read-only nature is implied rather than explicit.

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 a single, focused sentence: 'Get a list of all wiki pages in a Redmine project'. It is front-loaded with the verb and resource, contains no filler, and is appropriately concise for a simple list operation.

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

Completeness3/5

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

The description is adequate to invoke the tool with the required project_id, but with no output schema and no annotations it omits important context such as return format, pagination, and how the resulting page list can be used with sibling tools like redmine_wiki_get_page. There is a clear gap in behavioral and usage context.

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 has one parameter, project_id, with a clear description, and schema description coverage is 100%. The tool description adds no parameter-level detail beyond what the schema already provides, so the baseline score of 3 applies.

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 uses a specific verb 'Get a list' and specifies the resource 'all wiki pages in a Redmine project'. This clearly differentiates it from sibling tools like redmine_wiki_get_page (single page) and redmine_wiki_put_page/delete_page (write operations).

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

Usage Guidelines3/5

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

The description implies use when you want to list all wiki pages for a project, but it does not explicitly state when to use this tool versus alternatives. No exclusions or alternative routing are provided; the agent must infer from the word 'list' and sibling names.

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

redmine_wiki_get_pageA

Get a wiki page content from a Redmine project by page title

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesWiki page title (e.g., "Wiki", "Getting_Started"). Use underscores for spaces.
project_idYesThe Redmine project ID or identifier (e.g., "my-project")

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It indicates a read operation via 'Get', but it does not describe the response format, whether content is raw wiki markup or rendered HTML, what happens when the page is not found, or any authentication/permission requirements.

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 a single sentence with no filler, front-loading the action and the resource. It is appropriately sized for a simple two-parameter read operation.

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

Completeness3/5

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

For a tool with only two required parameters and full schema coverage, this is mostly adequate. However, with no output schema and no annotations, the description does not clarify the format or structure of the returned page content, which leaves a meaningful gap for an agent trying to interpret the result.

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?

Schema description coverage is 100%, so the schema already documents both parameters well, including examples and the underscore convention for titles. The description adds only 'by page title' and 'from a Redmine project', which provide no significant meaning beyond what the schema already conveys.

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 clearly states the verb ('Get'), the resource ('wiki page content'), and the key routing criteria ('from a Redmine project by page title'). This distinguishes it from siblings like redmine_wiki_get_index, redmine_wiki_put_page, and redmine_wiki_delete_page without needing to inspect their schemas.

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

Usage Guidelines3/5

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

Usage is implied by the description: an agent should select this tool when it needs a specific wiki page's content and already knows the page title. However, it does not explicitly mention alternatives such as redmine_wiki_get_index for listing pages, nor does it state when not to use this tool.

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

redmine_wiki_put_pageA

Create a new wiki page or update an existing one in a Redmine project. Uses PUT — creates if not exists, updates if exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesWiki page content in Redmine Textile markup
titleYesWiki page title. Use underscores for spaces (e.g., "My_Page").
commentsNoOptional comment describing the change (shown in page history)
project_idYesThe Redmine project ID or identifier
parent_titleNoOptional parent wiki page title (for building hierarchy)

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the mutation behavior (PUT, create-or-update) and the comment parameter for history. However, it does not mention potential side effects like overwriting the entire page content, whether partial updates are supported, or any authentication/authorization requirements. For a mutation tool, this is adequate but not thorough.

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 a single sentence that front-loads the purpose and then explains the PUT semantics. Every phrase earns its place with no filler or redundancy. It is concise and structured for quick parsing by an agent.

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

Completeness3/5

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

Given the tool has 5 parameters (3 required), no output schema, and no annotations, the description is sufficient but not rich. It does not explain return values, error scenarios, or prerequisites like project existence. However, the schema covers all parameters, and the core behavior is clear. For a mutation tool, this is acceptable but leaves some operational details undocumented.

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?

Schema coverage is 100% — every parameter has a description. The tool description adds no additional parameter semantics beyond the schema. The schema already explains title, text, comments, project_id, and parent_title. Following the baseline rule for >80% coverage, a score of 3 is appropriate; the description does not enrich the parameter understanding.

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-resource combination ('Create a new wiki page or update an existing one in a Redmine project') and adds the HTTP method (PUT) with the idempotent semantics (creates if not exists, updates if exists). This clearly distinguishes it from sibling tools like redmine_wiki_get_page (reads) and redmine_wiki_delete_page (deletes).

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 explicitly explains the use case (create or update) and the behavior depending on existence. It does not explicitly mention alternatives (like 'use redmine_wiki_get_page to read'), but the context of siblings and the explicit verb make the intended use clear. It could be more explicit about when to use this vs. get/delete, but the core usage is well-stated.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 18 tool updatesv1.0.0
    • First observedredmine_add_attachments
    • First observedredmine_add_comment
    • First observedredmine_complete_fix
    • First observedredmine_create_issue
    • First observedredmine_create_relation
    • First observedredmine_get_issue
    • First observedredmine_get_issue_tree
    • First observedredmine_get_issues_by_status
    • First observedredmine_get_project
    • First observedredmine_get_project_issues
    • First observedredmine_get_projects
    • First observedredmine_get_statuses
    • First observedredmine_start_fix
    • First observedredmine_upload_file
    • First observedredmine_wiki_delete_page
    • First observedredmine_wiki_get_index
    • First observedredmine_wiki_get_page
    • First observedredmine_wiki_put_page

TDQS

A3.6/5.0

Scored across 18 tools

Disambiguation4/5

Each tool generally maps to one resource/action, with only a few overlapping pairs like get_issue_tree vs get_issue and get_project_issues vs get_issues_by_status. The descriptions sufficiently clarify these boundaries, so an agent can usually select the right tool.

Naming Consistency5/5

All tools use a consistent redmine_ prefix and snake_case with verb-first names such as get, create, add, start, complete, and upload. Even the wiki PUT operation is named predictably, and there is no mixing of naming conventions.

Tool Count4/5

18 tools is at the upper end of a typical MCP server, but each tool serves a distinct purpose across issues, wiki, projects, attachments, and workflow. It feels slightly heavy but not bloated for the breadth of Redmine features covered.

Completeness3/5

Issue coverage lacks a generic update_issue or delete_issue; status changes are only available through add_comment or the start_fix/complete_fix workflow. Wiki and project access are well covered, but the core issue lifecycle is incomplete.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    MCP server for Redmine project management, enabling tools for managing projects, issues, users, time entries, groups, memberships, versions, wiki, news, attachments, search, and Agile sprints via the Redmine REST API.
    89
    21
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to interact with Redmine project management systems through MCP tools, providing access to issues, projects, time tracking, wiki, and more.
    77
    MIT