mcp-redmine
Provides tools for interacting with Redmine, enabling AI agents to search and read tickets, post comments, log time, browse wiki pages, and download attachments, as well as create and update issues with explicit approval.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-redmineWhat's on my Redmine dashboard?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Redmine MCP Server
An MCP server that lets a coding agent read and write your Redmine: search tickets, read full issue histories, post notes, log time, browse the wiki, and download attachments. Works with Claude Code, Codex, Claude Desktop, and any other MCP client.
It ships with a built-in safety rule: the agent will never create, update, comment on, or log time against a ticket unless you explicitly tell it to in that conversation.
Setup
Step 1: Install uv
uv runs the server and handles its Python dependencies for you.
curl -LsSf https://astral.sh/uv/install.sh | shOn Windows, use powershell -c "irm https://astral.sh/uv/install.ps1 | iex".
Step 2: Download this server
git clone https://github.com/beborico1/mcp-redmine.git
cd mcp-redmine
uv syncNote the full path you cloned into. You need it in step 4:
pwdStep 3: Get your Redmine API key
Log in to your Redmine.
Go to My account (top right).
In the right-hand sidebar, find API access key and click Show.
Copy the key.
If you do not see that panel, your administrator has not enabled the REST API. Ask them to tick Enable REST web service under Administration → Settings → API.
Step 4: Connect it to your agent
Pick the one you use. In every case, substitute your Redmine address, your API key, and the path from step 2.
Claude Code
claude mcp add redmine \
--env REDMINE_URL=https://redmine.example.com \
--env REDMINE_API_KEY=paste_your_key_here \
-- uv --directory /full/path/to/mcp-redmine run mcp-redmineCodex
Open ~/.codex/config.toml (create it if it does not exist) and add:
[mcp_servers.redmine]
command = "uv"
args = ["--directory", "/full/path/to/mcp-redmine", "run", "mcp-redmine"]
[mcp_servers.redmine.env]
REDMINE_URL = "https://redmine.example.com"
REDMINE_API_KEY = "paste_your_key_here"Claude Desktop, or any other MCP client
Add this to the client's MCP config file:
{
"mcpServers": {
"redmine": {
"command": "uv",
"args": ["--directory", "/full/path/to/mcp-redmine", "run", "mcp-redmine"],
"env": {
"REDMINE_URL": "https://redmine.example.com",
"REDMINE_API_KEY": "paste_your_key_here"
}
}
}
}Step 5: Check that it works
Restart the agent, then ask it:
What's on my Redmine dashboard?You should get your open tickets back. That is it, you are done.
Related MCP server: Redmine MCP Server
Configuration
Variable | Required | Description |
| yes | Base URL of your Redmine, no trailing slash |
| yes | Your personal API access key from My account |
Your API key is read from the environment only. It is never written to disk by this server, and it must never be committed to a repository.
What you can ask for
Reading
redmine_my_dashboard- your open tickets, at a glanceredmine_get_issue- one ticket in full, with its comment historyredmine_search_issues- filter by author, assignee, project, status, datesredmine_list_projects- every project you can seeredmine_list_wiki_pages,redmine_get_wiki_page- project wikisredmine_get_time_entries- logged timeredmine_download_attachment- save a ticket's files locallyredmine_find_user,redmine_get_users- resolve a name to a user IDredmine_get_statuses,redmine_get_trackers,redmine_get_priorities- reference IDs
Writing (each one needs your explicit go-ahead)
redmine_create_issue- open a new ticket, attachments includedredmine_update_issue- change status, assignee, or any fieldredmine_add_note- post a commentredmine_edit_journal- edit a comment you already postedredmine_log_time- record hours against a ticket
Ask in plain language. "Show me ticket 12345", "find everything Yuko opened this month", "draft a status update for 12345" all work; the agent picks the tool.
Troubleshooting
Every call fails with a 401. The API key is wrong, or REDMINE_API_KEY did not
reach the server. Re-copy it from My account and re-run the claude mcp add command.
Every call fails with a 404. Check REDMINE_URL. It should be the site root
(https://redmine.example.com), not a project or issue page, and it should have no
trailing slash.
The server shows as failed with -32000: Connection closed. The server process is
exiting before it can talk to the client. Run the command from your config by hand to see
the real error:
uv --directory /full/path/to/mcp-redmine run mcp-redmineFailed to spawn: mcp-redmine means step 2 was skipped or did not finish, so run
uv sync in the clone. command not found: uv means uv is not on the PATH your client
inherits, so use its absolute path (which uv) in the config.
The tools are not available. Restart the client after adding the server, then confirm
it is connected with claude mcp list or codex mcp list.
Searching by a person's name returns a 500. Redmine only accepts me or a numeric
user ID in author and assignee filters. Ask the agent to look the person up with
redmine_find_user first.
Requirements
Python 3.13 or newer, and a Redmine with the REST API enabled.
Available Tools
18 toolsredmine_add_noteA
Add a comment/note to an existing Redmine issue. This is the primary way to post updates, progress reports, investigation findings, or review feedback on a ticket. Follow the communication style guide: structured formatting, evidence-based, warm closing.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | Yes | The comment text (this Redmine instance renders standard Markdown: use backticks for inline code, **bold**, etc., not textile @...@). Structure with headers for medium/major updates. Include evidence for every claim. Close with 'Please share with me your thoughts, thank you very much!' or similar warm closing. | |
| issue_id | Yes | The issue ID to comment on | |
| status_id | No | Optionally change the issue status (1=New, 2=Assigned, 3=Solved, 4=Feedback, 5=Closed, 6=Waived, 17=Review, 19=30_InProgress, 20=50_InProgress, 21=70_InProgress) | |
| done_ratio | No | Optionally update the done percentage (0-100) | |
| attachments | No | Absolute file paths to attach (images, PDFs, etc.) | |
| assigned_to_id | No | Optionally reassign the issue to a different user ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It indicates a write operation ('Add') and provides communication style guidance, but it does not disclose potential side effects like status changes via optional params or any permissions/notifications. It is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences: purpose, use cases, style guide. It is front-loaded with the primary action and has no wasteful content. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the schema fully covers parameters and the tool is a note-adding mutation, the description is fairly complete for the task. It could be improved by mentioning alternatives like redmine_update_issue for field changes, but overall it provides sufficient context for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 in detail. The description adds no extra parameter meaning beyond the schema; it only references style guidelines for the 'notes' parameter, which the schema already covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Add a comment/note to an existing Redmine issue' with a specific verb and resource, and lists example use cases. However, it does not explicitly differentiate from sibling tools like redmine_update_issue or redmine_edit_journal, so it lacks overt sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says this is 'the primary way to post updates, progress reports, investigation findings, or review feedback,' which gives clear contextual use. But it does not explicitly state when not to use it or mention alternatives, so there are no exclusions.
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. The description should be well-structured: brief statement of what needs to be done, context/why, scope, and links. For bugs: include steps to reproduce, environment, and screenshots.
| Name | Required | Description | Default |
|---|---|---|---|
| subject | Yes | Issue title -- concise but descriptive | |
| due_date | No | Due date (YYYY-MM-DD) | |
| status_id | No | Status ID (1=New, 2=Assigned, 3=Solved, 5=Closed, 17=Review, 19=30_InProgress, etc.) | |
| done_ratio | No | Done percentage (0-100) | |
| project_id | Yes | Project identifier (e.g. 'panama') or numeric ID | |
| start_date | No | Start date (YYYY-MM-DD) | |
| tracker_id | No | Tracker ID (1=Bug, 2=Feature, 3=Support, etc.) | |
| attachments | No | Absolute file paths to attach (images, PDFs, etc.) | |
| category_id | No | Issue category ID (project-specific) | |
| description | Yes | Issue description. Structure as: brief statement, Context, Scope, Links. For bugs: Steps to reproduce, Environment, Screenshots. | |
| priority_id | No | Priority ID (1=Low, 2=Normal, 3=High, 4=Urgent, 5=Immediate) | |
| custom_fields | No | Custom field values, e.g. [{"id": 5, "value": "3. Major"}] | |
| assigned_to_id | No | User ID to assign the issue to | |
| estimated_hours | No | Estimated hours for the task | |
| parent_issue_id | No | Parent issue ID (for sub-tasks) | |
| fixed_version_id | No | Target version / milestone ID (project-specific) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fails to disclose behavioral traits such as required permissions, return values, or side effects of creating an issue. The only additional guidance is about structuring the description content, which duplicates the schema's description parameter and does not reveal tool behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, with the core purpose front-loaded in the first sentence. The second sentence provides practical formatting advice, but it repeats the schema, so slightly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 16 parameters and no output schema, the description is minimal. It does not mention what the tool returns after creation, any prerequisites, or error handling, leaving the agent uninformed about post-creation behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter descriptions, so the baseline is 3. The tool description merely restates the formatting guidance for the description parameter already present in the schema, adding no new semantics for other parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new Redmine issue,' identifying the action (create) and resource (Redmine issue). The word 'new' distinguishes it from update operations like redmine_update_issue, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys that this tool is for creating new issues, but it does not explicitly discuss alternatives or when not to use it. The context is clear enough for a straightforward create operation, though exclusions are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redmine_download_attachmentA
Download a file attachment from Redmine to the local filesystem. Use redmine_get_issue first to see available attachments and their IDs. Returns the local file path so you can read or process the file.
| Name | Required | Description | Default |
|---|---|---|---|
| save_dir | No | Directory to save the file in (default: /tmp/redmine_attachments) | |
| attachment_id | Yes | The Redmine attachment ID (visible in redmine_get_issue output) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. It states the side effect of writing to the local filesystem and that it returns a local file path. It does not detail error handling, overwrite behavior, or directory creation, which are potential concerns for a download tool, but the essential behavior is covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action, and includes a practical tip and return value. Every sentence contributes meaning, and there is no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple download tool with two parameters and no output schema, the description provides the purpose, prerequisite, and return value. While it lacks error-handling details or caution about file system side effects, the complexity is low and the description is sufficient for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides comprehensive descriptions for both parameters (100% coverage), so the baseline is 3. The description adds a workflow hint about using redmine_get_issue to find attachment IDs, which gives context for attachment_id but does not significantly enrich parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool downloads a file attachment from Redmine to the local filesystem, using a specific verb-resource-destination structure. This distinguishes it from sibling tools like redmine_get_issue (which retrieves issue data) and other Redmine management tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to 'Use redmine_get_issue first to see available attachments and their IDs,' providing a clear prerequisite and workflow for obtaining the required attachment_id. It does not mention alternatives or exclusions, but the context is sufficient for an agent to understand when 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_edit_journalA
Edit the text of an existing journal (comment/note) on a Redmine issue. Use redmine_get_issue first to find the journal ID you want to edit. Only the notes text can be changed. Requires Redmine 5.0+.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | Yes | The replacement note text (this Redmine instance renders standard Markdown: use backticks for inline code, **bold**, etc., not textile @...@) | |
| journal_id | Yes | The journal entry ID to edit (visible in redmine_get_issue output) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the constraint 'Only the notes text can be changed' and the version requirement 'Requires Redmine 5.0+'. However, it does not mention permissions, reversibility, or what happens if the journal doesn't exist, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, then prerequisite, then constraints. No wasted words; every sentence provides necessary context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 no annotations or output schema, the description covers the essential workflow (how to get ID), the limitation (only notes), and a compatibility note. It lacks error handling or response details, but those are not critical for this scope, so it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters, so the schema already documents them well. The description adds a workflow hint about using redmine_get_issue to obtain journal_id, but this is also in the schema ('visible in redmine_get_issue output'). No significant parameter meaning added beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it edits existing journal text on a Redmine issue, using the specific verb 'edit' and identifying the resource as a journal. It distinguishes from siblings by noting 'Only the notes text can be changed', which differentiates from broader update_issue or add_note.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit prerequisite guidance: 'Use redmine_get_issue first to find the journal ID you want to edit.' It implies this tool is for modifying existing notes rather than adding or updating entire issues. Lacks explicit exclusions but gives clear context for when 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_find_userA
Find a Redmine user ID by scanning recent issues for matching authors and assignees. Use this as a workaround for /users.json admin restrictions: given a name fragment (e.g. 'Toyoda', 'yoshikuni', 'Murata'), it returns matching user IDs sorted by how often they appear, so the most active match comes first. Once you have an ID, pass it to redmine_search_issues as author/assigned_to/updated_by.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name fragment to match (case-insensitive substring against the display name) | |
| scan_pages | No | How many pages of 100 recent issues to scan. Default 5 (=500 issues). Increase for rare users. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It discloses the underlying behavior: scanning recent issues, matching authors/assignees, returning IDs sorted by frequency, and clarifying that it is a workaround rather than a direct query. It does not explicitly state that it is read-only or how it handles no matches, but the 'scanning' language implies a non-destructive operation and the sorting rationale adds useful context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loaded with the core function, then the rationale, then usage guidance. Every sentence earns its place—no fluff, no repetition of schema details. It is well-structured and easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately explains what the tool returns (user IDs sorted by frequency) and how to use the result. It references a sibling tool (redmine_search_issues) for follow-up, providing helpful integration context. It does not describe edge cases like no matches or multiple matches, but for a simple tool with detailed schema annotations, this is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage of both parameters, including case-insensitive substring matching and scan_pages explanation. The description adds value beyond the schema by giving concrete name fragment examples and explaining the sorting criterion ('most active match comes first'), which helps the agent understand the output ordering and parameter tuning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to find a Redmine user ID by scanning recent issues for matching authors and assignees. It specifies the resource (user ID) and the method (scanning issues), and distinguishes itself from sibling tools like redmine_get_users by positioning itself as a workaround for admin restrictions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool: 'Use this as a workaround for /users.json admin restrictions' and provides a concrete example of input ('Toyoda', 'yoshikuni', 'Murata'). It also gives clear guidance on what to do with the result: 'pass it to redmine_search_issues as author/assigned_to/updated_by', which serves as an alternative/downstream usage context.
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 full details of a Redmine issue including description, metadata, and (by default) all journal updates and attachments. Set include_journals=False for tickets with very long histories that would blow up your context (e.g. recurring incident tickets). Use this to understand the full history of a ticket before updating it.
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | The Redmine issue ID (e.g. 66853) | |
| include_children | No | Include child issue summaries. Default true. | |
| include_journals | No | Include the full comment/change history. Default true. Set false for huge tickets. | |
| include_relations | No | Include related-issue links. Default true. | |
| include_attachments | No | Include the attachments list. Default true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations so description carries burden. Discloses default inclusion of journals/attachments and the context-bloat risk, guiding safe usage for large tickets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded purpose, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read tool with 5 params and no output schema, description covers key return elements (description, metadata, journals, attachments) and usage context; lacks explicit note on child issues/relations but 'full details' implies them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage 100% gives baseline 3; description adds rationale for include_journals=False ('blow up your context') and recurring incident example, exceeding schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Get' with specific resource and scope ('full details... including description, metadata, journals, attachments'). Distinguished from sibling search/wiki tools by focus on full issue history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use case ('understand the full history before updating') and a conditional flag for long histories. No explicit exclusions/alternatives, but 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_get_prioritiesA
List all available issue priorities with their IDs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states it lists all priorities with IDs, which implies a read operation, but provides no details on response format, ordering, pagination, or authentication. For a simple list tool this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words. It front-loads the action and resource, making it very concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but with no output schema, the description should explain the return values more explicitly. It says 'with their IDs' but does not mention whether names are included, leaving some ambiguity. Overall, it is incomplete for an agent to fully anticipate the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description adds no parameter-specific information, but none is needed. The empty schema is fully covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List'), the resource ('issue priorities'), and adds a detail ('with their IDs') that distinguishes it from sibling tools like get_trackers or get_statuses. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied by the purpose: one would use this tool to obtain available issue priorities. However, there is no explicit when-to-use, when-not-to-use, or mention of alternatives, so it does not fully meet the higher bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redmine_get_statusesA
List all available issue statuses with their IDs. Use this to find the right status_id for updates.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. 'List all' implies a read-only operation, and the mention of IDs clarifies the return content. However, it does not explicitly state non-mutation or other behavioral details like ordering or pagination, which is acceptable for a simple list but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste: the first states the operation and output, the second provides the practical use case. Very concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, the description fully covers what the tool does and why to use it. It provides sufficient context without needing additional detail about parameters or return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema reflects that with no properties. Per the rubric, 0 params baseline is 4. The description adds no parameter details because none exist, so the baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('issue statuses') and clearly states the output includes IDs. It also distinguishes itself from siblings by linking to the update use case, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use the tool: 'Use this to find the right status_id for updates.' While it doesn't name alternatives or exclusions, the guidance is clear and actionable for a simple lookup tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redmine_get_time_entriesB
Get time entries for a user or issue, useful for tracking and reporting.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max entries to return (default: 25) | |
| to_date | No | End date filter (YYYY-MM-DD) | |
| user_id | No | Filter by user ID or 'me' (default: me) | me |
| issue_id | No | Filter by issue ID | |
| from_date | No | Start date filter (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does not mention pagination, return format, authentication, rate limits, or any side effects. The description only restates the basic function, leaving the agent uninformed about important behavioral aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficiently worded sentence that immediately identifies the tool's purpose and primary filters. Every word earns its place, and there is no redundant or unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, so the description must compensate. It does not explain what the returned time entries look like, how pagination works, or any other runtime context. The schema covers parameters but not the tool's operational behavior, leaving the description incomplete for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are already documented in the schema. The description does not add additional semantic meaning 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets time entries, with specific scoping filters for user or issue. It distinguishes from sibling logging tools (redmine_log_time) and other getters, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'useful for tracking and reporting' provides a general use case, but there is no explicit when-to-use guidance, exclusionary criteria, or mention of sibling alternatives. This makes the usage context implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redmine_get_trackersA
List all available issue trackers with their IDs. Use this to find the right tracker_id.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should fully convey behavioral traits. The verb 'List' implies a read-only operation, but the description does not explicitly confirm safety, nor does it indicate the response format or potential edge cases. It is adequate but not detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main action and followed by a practical use case. Every sentence contributes value; there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no input schema and no output schema, the description covers what it does and when to use it. It could be slightly more specific about the return structure (e.g., an array of tracker objects), but overall it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description adds context by mentioning 'with their IDs' and the goal of finding tracker_id, which helps interpret the tool's output. No parameter explanations are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb 'List' and resource 'available issue trackers with their IDs', distinguishing it from sibling tools like get_statuses or get_priorities. It also notes the practical purpose of finding a tracker_id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 the tool: 'Use this to find the right tracker_id.' This gives clear context for usage, though it does not mention exclusions or alternative tools explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redmine_get_usersA
Search for Redmine users by name. Useful for finding user IDs when assigning issues or @mentioning colleagues.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name to search for (partial match) | |
| limit | No | Max results (default: 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. 'Search' implies a read-only operation and 'finding user IDs' hints at the return content, but it does not disclose output structure, pagination, or any other behavioral traits beyond the schema's mention of partial matching.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with front-loaded action and a useful application note. No wasted words; every part contributes to understanding the tool's purpose and use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only two parameters, and the schema covers them well. However, there is no output schema, and the description does not specify the structure of the returned user objects or how the limit affects results. The existence of a similar sibling tool also remains unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 reinforces the 'name' parameter's purpose but does not add significant meaning beyond what the schema already provides, and it does not mention the 'limit' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for Redmine users by name, with a specific verb and resource. However, it does not differentiate from the sibling tool 'redmine_find_user', which appears to serve a similar purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to use the tool ('when assigning issues or @mentioning colleagues'), but does not mention when not to use it or any alternatives. The presence of 'redmine_find_user' as a sibling makes this omission noticeable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redmine_get_wiki_pageA
Get the full content of a specific wiki page in a Redmine project. Returns page metadata (author, dates, parent page) and the raw page content (this Redmine instance uses standard Markdown, not textile). Use redmine_list_wiki_pages first to find page titles.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | Optional: specific historical version number to retrieve | |
| page_title | Yes | Wiki page title (e.g. 'Wiki', 'Setup_Guide'). Use redmine_list_wiki_pages to find available titles. | |
| project_id | Yes | Project identifier (e.g. 'panama', 'largescale') or numeric ID |
TDQS
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 reveals that the tool returns page metadata (author, dates, parent page) and raw page content, and importantly notes that the instance uses standard Markdown instead of textile. This gives the agent a clear picture of the output format. It does not mention permissions, error behavior, or pagination, but for a read-only get operation this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of just three sentences. It is front-loaded with the primary purpose, followed by return value details and usage guidance. Every sentence adds value, and there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema, the description appropriately explains what the tool returns (metadata and raw content) and includes a note about Markdown formatting. It also provides prerequisite guidance. While it could mention error scenarios or the exact response structure, the information included is sufficient for a simple page-fetching tool with well-documented parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 well-documented in the schema. The description adds a small amount of extra context by suggesting using redmine_list_wiki_pages to find page titles, which aids the 'page_title' parameter. However, it does not provide additional semantic detail beyond what the schema already offers, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get the full content of a specific wiki page in a Redmine project.' It uses a specific verb (Get), names the resource (wiki page), and mentions the project context. It also distinguishes itself from sibling tools that list pages or handle other entity types, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit usage guideline: 'Use redmine_list_wiki_pages first to find page titles.' This tells the agent the prerequisite workflow and indirectly indicates when to use the sibling listing tool. However, it does not explicitly state when not to use this tool or compare it to other get tools, so it stops short of full alternatives coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redmine_list_projectsA
List all Redmine projects you have access to, with their identifiers and status.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits itself. It states 'List all' but the schema includes a limit parameter defaulting to 100, so 'all' is misleading without mentioning pagination or limits. No return format, pagination behavior, or permission details are disclosed, leaving significant transparency gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action, resource, scope, and output traits without wasted words. It earns its place and is highly scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no output schema, few annotations), the description is mostly sufficient but has a clear gap: the 'all' claim contradicts the limit parameter, and pagination/limit behavior is not explained. This incompleteness prevents a higher score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the only parameter (limit), so the baseline is 3. The description adds no extra meaning about the parameter and even undermines understanding by saying 'all' while the schema caps results. No additional parameter context is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') with a clear resource ('Redmine projects') and defines the scope ('you have access to') plus the included fields ('identifiers and status'). This distinguishes it from sibling tools that target issues, wiki pages, or users.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (listing accessible projects) but provides no explicit guidance on when to prefer this over sibling tools, nor does it mention exclusions or alternatives. It's adequate for a simple list operation but lacks explicit decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redmine_list_wiki_pagesA
List all wiki pages in a Redmine project. Returns a hierarchical tree showing page titles, versions, and last-updated dates. Use this to discover available documentation before reading specific pages.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project identifier (e.g. 'panama', 'largescale') or numeric ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for behavioral disclosure. It discloses that the operation returns a hierarchical tree with page titles, versions, and last-updated dates, which is the key behavioral output. It implies a read-only operation through the word 'discover.' While it doesn't mention auth or rate limits, these are less critical for a simple listing operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences. The first sentence delivers the core purpose, the second adds return format and a usage tip. No wasted words, and the structure is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, no output schema, and no annotations, the description is complete. It covers what the tool does, what it returns (hierarchical tree with specific fields), and when to use it. The sibling redmine_get_wiki_page provides clear differentiation without needing explicit exclusions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter project_id, which already includes a clear description ('Project identifier (e.g. 'panama', 'largescale') or numeric ID'). The tool description adds little beyond reinforcing that the listing is scoped to a Redmine project, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List all wiki pages in a Redmine project.' It specifies the resource (wiki pages), the scope (project), and the action (list). It also distinguishes from the sibling redmine_get_wiki_page by emphasizing the hierarchical list and discovery use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Use this to discover available documentation before reading specific pages.' This implies when to use (before redmine_get_wiki_page) and gives a clear context. It does not explicitly state when not to use, but the guidance is strong enough for a simple list tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redmine_log_timeB
Log time spent on an issue. Include a meaningful comment about what was accomplished during this time.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | Yes | Hours spent (e.g. 1.5) | |
| comments | No | What was accomplished during this time | |
| issue_id | Yes | The issue ID to log time against | |
| spent_on | No | Date the time was spent (YYYY-MM-DD, defaults to today) | |
| activity_id | No | Activity type ID (e.g. 9=Development, 10=Design, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It implies a mutation (logging time) but does not disclose side effects, permissions, reversibility, or the response format. The 'meaningful comment' note is a quality expectation, not a behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no fluff. The first sentence states the core action, and the second adds useful guidance on comments. Both sentences earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a write operation with no output schema and no annotations, the description is under-specified. It does not explain how the system responds, what prerequisites exist, or what happens on failure. It only covers the basic action and a comment quality tip.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 does not add meaningful semantics beyond the schema; the comment guidance maps to the existing 'comments' field, but adds no new information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Log') and resource ('time spent on an issue'), clearly distinguishing this from sibling tools like redmine_get_time_entries. It also adds an actionable instruction for the comment quality, making the purpose crisp and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not state when to use this tool versus alternatives, nor does it mention any prerequisites or exclusion criteria. It only implies usage by naming the action, but provides no explicit guidance or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redmine_my_dashboardA
Get a quick overview of your Redmine workload: issues assigned to you, issues you recently updated, and overdue items. Use this as the first tool when starting a work session to see what needs attention.
| Name | Required | Description | Default |
|---|---|---|---|
| include_closed | No | Include recently closed issues (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It clearly indicates read-only behavior ('get a quick overview') and specifies the data scope. It lacks details like pagination or output format, but for a simple dashboard these are not critical.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences: the first states the purpose and content, the second gives usage guidance. It is front-loaded with key information and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only dashboard with one parameter and no output schema, the description covers the essential behavior and usage. It could mention the output structure, but the description adequately explains what the user gets from the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter include_closed already has a description in the schema. The tool description adds no extra parameter semantics, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get a quick overview of your Redmine workload' and enumerates specific contents (issues assigned, recently updated, overdue). This distinguishes it from sibling tools like search_issues (general search) and get_issue (single issue).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Use this as the first tool when starting a work session to see what needs attention.' It tells when to use it but does not mention alternatives or exclusions, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redmine_search_issuesA
Search Redmine issues with flexible filters. Filter by project, status, author, assignee, tracker, priority, free-text, and date ranges (created/updated). Supports offset for pagination through total_count. Returns a summary list -- use redmine_get_issue for full details. NOTE: author/assigned_to/updated_by accept 'me' or a numeric user ID -- display names like 'Yuko Matsui' will fail (Redmine API returns 500). Use redmine_find_user to resolve a name to an ID first.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort field:direction (e.g. 'updated_on:desc', 'priority:desc', 'created_on:asc', 'id:asc') | updated_on:desc |
| limit | No | Max results to return (default: 25, max: 100) | |
| query | No | Free-text search query (searches subject and description) | |
| author | No | Filter by issue author: 'me' or a numeric user ID. Use redmine_find_user to resolve a name. | |
| offset | No | Skip this many results -- use with limit to paginate. e.g. limit=100, offset=100 returns results 101-200. | |
| status | No | Filter by status: 'open', 'closed', '*' (all), or a specific status name | open |
| tracker | No | Filter by tracker name (e.g. 'Bug', 'Feature', 'Task') | |
| priority | No | Filter by priority name (e.g. 'High', 'Normal', 'Low') | |
| project_id | No | Project identifier (e.g. 'panama', 'bunkyodo') or numeric ID | |
| updated_by | No | Filter by issues that this user has updated (commented on or changed): 'me' or a numeric user ID. | |
| assigned_to | No | Filter by assignee: 'me' or a numeric user ID. Use redmine_find_user to resolve a name. | |
| created_since | No | Only issues created on or after this date (YYYY-MM-DD) | |
| created_until | No | Only issues created on or before this date (YYYY-MM-DD). Combine with created_since for a range. | |
| updated_since | No | Only issues updated on or after this date (YYYY-MM-DD) | |
| updated_until | No | Only issues updated on or before this date (YYYY-MM-DD). Combine with updated_since for a range. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the 500 error when using display names for author/assigned_to/updated_by, which is a critical behavioral trait, and explains the correct input format ('me' or numeric ID).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: purpose, filter list, pagination, summary-list pointer, and a crucial caveat. No redundant words; each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter search tool with no output schema, the description covers key behaviors: summary list, pagination via total_count, and the critical input constraint. It provides enough context for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 15 params with descriptions, so baseline is 3. The description adds a warning that display names will fail (Redmine API returns 500) and reinforces the need to resolve via find_user, which goes beyond the schema's wording.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Search Redmine issues with flexible filters' and enumerates the filter dimensions, clearly distinguishing it as a search tool. It also differentiates from redmine_get_issue by noting it returns a summary list, making the resource and verb explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly directs users to redmine_get_issue for full details and to redmine_find_user for resolving names to IDs, offering clear alternative paths. It also explains pagination via offset and total_count.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redmine_update_issueA
Update issue fields (status, assignee, priority, due date, etc.) without necessarily adding a note. Use redmine_add_note if you want to post a comment. Use this for pure metadata changes.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Optional note explaining the change | |
| subject | No | Updated subject/title | |
| due_date | No | New due date (YYYY-MM-DD) | |
| issue_id | Yes | The issue ID to update | |
| status_id | No | New status ID (1=New, 2=Assigned, 3=Solved, 4=Feedback, 5=Closed, 6=Waived, 17=Review, 19=30_InProgress, 20=50_InProgress, 21=70_InProgress) | |
| done_ratio | No | Done percentage (0-100) | |
| attachments | No | Absolute file paths to attach (images, PDFs, etc.) | |
| priority_id | No | New priority ID | |
| assigned_to_id | No | New assignee user ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the tool updates without necessarily adding a note, which is a useful behavioral trait. However, it does not mention potential side effects like overwriting unspecified fields, permission requirements, or response behavior, leaving gaps in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose and followed by a clear alternative. Every word earns its place with no wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 9 parameters and no output schema. The description provides clear purpose and usage guidance, which covers the key context for selection. However, it omits any mention of return value or typical response, which would be helpful given the absence of an output schema. Still, the description is adequate for most use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 lists a few fields already in the schema (status, assignee, priority, due date) but adds no extra semantic meaning beyond the schema's own parameter descriptions. It does not compensate for any missing detail because none is missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates issue fields (status, assignee, priority, due date, etc.) and explicitly distinguishes it from redmine_add_note. The verb 'update' plus specific resource examples make the purpose unambiguous and well-differentiated from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'Use redmine_add_note if you want to post a comment. Use this for pure metadata changes.' This clearly tells the agent when to choose this tool versus the alternative, which is excellent.
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.
18 tool updates
v0.2.0- First observed
redmine_add_note - First observed
redmine_create_issue - First observed
redmine_download_attachment - First observed
redmine_edit_journal - First observed
redmine_find_user - First observed
redmine_get_issue - First observed
redmine_get_priorities - First observed
redmine_get_statuses - First observed
redmine_get_time_entries - First observed
redmine_get_trackers - First observed
redmine_get_users - First observed
redmine_get_wiki_page - First observed
redmine_list_projects - First observed
redmine_list_wiki_pages - First observed
redmine_log_time - First observed
redmine_my_dashboard - First observed
redmine_search_issues - First observed
redmine_update_issue
TDQS
Scored across 18 tools
Most tools have distinct purposes, but redmine_get_users and redmine_find_user overlap in resolving user IDs, and redmine_my_dashboard partially duplicates redmine_search_issues for personal queries. These overlaps create mild selection ambiguity.
All tools share the redmine_ prefix and nearly all follow a verb_noun pattern (get_issue, create_issue, list_projects). The exception is redmine_my_dashboard, which uses a possessive instead of a verb, breaking the pattern slightly.
With 18 tools, the server falls in the borderline heavy range (16-25). The count is justified by the broad domain coverage (issues, users, time, wiki, projects), but it feels slightly oversized for a focused MCP.
The core issue workflow is well covered: create, retrieve, update, add notes, search, and log time are all present. However, missing delete operations for issues or notes, no attachment upload, and read-only wiki access represent minor but notable gaps.
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP Server for an Agent Task Marketplace
Roadmap, tasks, releases and user feedback your coding agent reads and writes over MCP.
MCP server for generating rough-draft project plans from natural-language prompts.
Related MCP Servers
- AlicenseCqualityDmaintenanceModel Context Protocol (MCP) server for Redmine that provides comprehensive access to the Redmine REST API, enabling users to operate Redmine from MCP clients such as Claude Desktop.9020MIT
- AlicenseBqualityDmaintenanceMCP 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.89211MIT
- FlicenseAqualityDmaintenanceAn MCP server that connects AI agents to Redmine project data, enabling natural language access to issues, projects, time entries, and more via the REST API.21-
- AlicenseBqualityBmaintenanceMCP server that provides access to the Redmine REST API, enabling issue tracking, project management, and more through natural language.2624MIT