Redmine MCP Server
The Redmine MCP Server enables integration between Claude Code and Redmine for project and issue management.
Issue Management: Create, view, update (title, description, priority, done ratio, tracker, dates, estimated hours), assign, add notes (with optional time logging), and close issues
Project Management: List accessible projects and filter issues by project and status
Search Features: Search issues by keywords or view issues assigned to the current user
System Tools: Perform health checks, query available issue statuses, trackers, priorities, time tracking activities, and document categories
User Management: Search and list users, and get detailed user information
Cache Management: Manually refresh cached values and user data
Enables direct interaction with Redmine project management systems, providing comprehensive tools for issue management (querying, creating, updating, assigning, adding notes), project management (listing projects and their issues), search features (keyword search), and system tools for checking connection status.
Click on "Install 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., "@Redmine MCP Servershow me my open issues in the 'Website Redesign' project"
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
A Model Context Protocol (MCP) server for Redmine integration, enabling Claude Code to directly interact with Redmine project management systems.
🚀 Features
✅ Issue Management
Query Issues: Get detailed issue information and lists
Create Issues: Create new issues and set related attributes
Update Issues: Modify issue content, status, priority, etc.
Assign Issues: Assign or unassign issues to specific users
Add Notes: Add public or private notes to issues
Close Issues: Automatically set issues to completed status
✅ Project Management
Project Lists: Get accessible project lists
Project Issues: Filter by status and list all issues in projects
✅ Search Features
Keyword Search: Search for keywords in issue titles and descriptions
My Issues: Quick view of issues assigned to current user
✅ System Tools
Health Check: Verify MCP server and Redmine connection status
Status Query: Get available issue status lists
Related MCP server: Redmine MCP Server
📋 System Requirements
Python: 3.12 or higher
Redmine: Version with REST API support (recommended 4.0+)
Package Manager: uv or pip
🔧 Installation & Setup
1. Clone the Project
git clone https://github.com/snowild/redmine-mcp.git
cd redmine-mcp2. Install Dependencies
Using uv (recommended):
uv syncOr using pip:
pip install -e .3. Environment Configuration
Create a .env file:
cp .env.example .envEdit the .env file and set the following environment variables:
REDMINE_DOMAIN=https://your-redmine-domain.com
REDMINE_API_KEY=your_api_key_here
# Project-specific variables (avoid conflicts with other projects)
REDMINE_MCP_LOG_LEVEL=INFO
REDMINE_MCP_TIMEOUT=30
# Backward compatibility variables (fallback)
REDMINE_TIMEOUT=30
LOG_LEVEL=infoEnvironment Variables Reference
Variable | Description | Default | Example |
| Redmine server URL | Required |
|
| Your Redmine API key | Required |
|
| Log level for this MCP server |
|
|
| Request timeout (seconds) |
|
|
| Transport mode |
|
|
| SSE bind address |
|
|
| SSE listen port |
|
|
| Legacy log level (backward compatibility) | - |
|
| Legacy timeout (backward compatibility) | - |
|
Log Level Priority:
REDMINE_MCP_LOG_LEVEL(highest priority - project-specific)LOG_LEVEL(backward compatibility)INFO(default if neither is set)
Note: The system automatically handles case conversion and ensures FastMCP compatibility.
4. Redmine API Setup
4.1 Enable REST API
Log in to Redmine as administrator
Go to Administration → Settings → API
Check "Enable REST web service"
Click Save
4.2 Configure Redmine Basic Data (Administrator)
Before using MCP tools, you need to configure Redmine's basic data:
Configure Roles and Permissions
Go to Administration → Roles and permissions
Create or edit roles (e.g.: Developer, Tester, Project Manager)
Assign appropriate permissions to roles (recommend at least: View issues, Add issues, Edit issues)
Configure Trackers
Go to Administration → Trackers
Create tracker types (e.g.: Bug, Feature, Support)
Set default status and workflow for each tracker
Configure Issue Statuses
Go to Administration → Issue statuses
Create statuses (e.g.: New, In Progress, Resolved, Closed, Rejected)
Set status attributes (whether it's a closed status, etc.)
Configure Workflow
Go to Administration → Workflow
Set allowed status transitions for each role and tracker combination
Ensure basic status transition paths (New → In Progress → Resolved → Closed)
Create Projects
Go to Projects → New project
Set project name, identifier, description
Select enabled modules (at least enable "Issue tracking")
Assign members and set roles
4.3 Get API Key
Log in to your Redmine system (can be administrator or regular user)
Go to My account → API access key
Click Show or Reset to get the API key
Copy the key to
REDMINE_API_KEYin the.envfile
⚠️ Important Notes:
If you can't find the API key option, please ensure step 4.1 (Enable REST API) is completed
Complete basic setup before you can properly create and manage issues
📚 Detailed Setup Guide: For complete Redmine setup steps, please refer to Redmine Complete Setup Guide
🔗 Claude Code Integration
Install to Claude Code
# Install from local
uv tool install .
# Or using pip
pip install .
# Add to Claude Code MCP configuration
claude mcp add redmine "redmine-mcp" \
-e REDMINE_DOMAIN="https://your-redmine-domain.com" \
-e REDMINE_API_KEY="your_api_key_here"Verify Installation
# Test MCP server
uv run python -m redmine_mcp.server
# Test Claude Code integration
uv run python tests/scripts/claude_integration.py🌐 SSE Mode & Docker Deployment
Transport Modes
Redmine MCP supports two transport modes:
Mode | Use Case | Multi-Client | Deployment |
stdio (default) | Local CLI usage with Claude Code | ❌ Single | Auto-started by Claude Code |
sse | Team sharing, remote access, containerized | ✅ Multiple | Manual start required |
Running in SSE Mode
Quick Start (Development)
# Navigate to project directory (where .env file is located)
cd /path/to/redmine-mcp
# Run with uv (reads .env automatically)
uv run redmine-mcp --transport sse
# Custom host and port
uv run redmine-mcp --transport sse --host 127.0.0.1 --port 3000Global Installation
# Install globally
uv tool install . --force --reinstall
# Set environment variables
export REDMINE_DOMAIN=https://your-redmine.com
export REDMINE_API_KEY=your_api_key_here
# Run from anywhere
redmine-mcp --transport sseUsing .env File
Create a .env file in your working directory:
REDMINE_DOMAIN=https://your-redmine.com
REDMINE_API_KEY=your_api_key_here
REDMINE_MCP_TRANSPORT=sse
REDMINE_MCP_PORT=8000Note:
uv runautomatically loads.envfrom the project directory. Global installation requires explicit environment variables or running from the directory containing.env.
Docker Deployment
Quick Start with Docker
# Build the image
docker build -t redmine-mcp .
# Run with environment variables
docker run -d \
-e REDMINE_DOMAIN=https://your-redmine.com \
-e REDMINE_API_KEY=your_api_key \
-p 8000:8000 \
--name redmine-mcp \
redmine-mcpUsing Docker Compose
# Edit docker-compose.yml with your Redmine settings
# Then start the service
docker compose up -d
# View logs
docker compose logs -f
# Stop the service
docker compose downDocker Compose with .env file (Recommended)
Create
.envfile:
REDMINE_DOMAIN=https://your-redmine.com
REDMINE_API_KEY=your_api_key_hereUpdate
docker-compose.ymlto use environment variables:
environment:
- REDMINE_DOMAIN=${REDMINE_DOMAIN}
- REDMINE_API_KEY=${REDMINE_API_KEY}Start the service:
docker compose up -dEnabling File Uploads in Docker
The file-upload tools (attach_files_to_issue and create_new_issue with
file_paths) read local files from the MCP server's own filesystem. When
the server runs inside a container, host files are invisible unless the host
directory is mounted as a volume — otherwise uploads fail with
File does not exist or is not a file: ....
Mount the directory holding your upload sources at the same path inside the container (read-only is sufficient), so the absolute paths you pass resolve on both sides:
services:
redmine-mcp:
# ...
volumes:
- /Users/you/workspace:/Users/you/workspace:roThen recreate the container so the volume takes effect:
docker compose up -d --force-recreateNotes:
Only files under the mounted directory can be uploaded; paths outside it (e.g.
~/Desktop,~/Downloads) still fail unless also mounted.Pass absolute paths under the mounted directory to the upload tools.
This is unnecessary in
stdiomode, where the server runs on the host and reads local paths natively.
Connecting Claude Code to SSE Server
Once the SSE server is running, configure Claude Code to connect:
# Add MCP with SSE transport
claude mcp add --transport sse redmine http://localhost:8000/sseOr manually edit ~/.claude.json:
{
"mcpServers": {
"redmine": {
"transport": "sse",
"url": "http://localhost:8000/sse"
}
}
}Note: Environment variables (
REDMINE_DOMAIN,REDMINE_API_KEY) are configured on the SSE server side, not in Claude Code.
Connecting VS Code (GitHub Copilot) to SSE Server
VS Code with GitHub Copilot can also connect to the SSE server. Edit the MCP configuration file:
macOS: ~/Library/Application Support/Code/User/mcp.json
Windows: %APPDATA%\Code\User\mcp.json
Linux: ~/.config/Code/User/mcp.json
Add the following configuration:
{
"servers": {
"redmine": {
"type": "sse",
"url": "http://localhost:8000/sse"
}
}
}Reference: For more details on VS Code MCP configuration, see VS Code MCP Servers Documentation.
🔄 Updating/Reinstalling MCP
If you need to update to the latest version of the MCP server or reinstall it:
Quick Update (Recommended)
# Navigate to project directory
cd /path/to/redmine-mcp
# Pull latest changes (if from git)
git pull origin main
# Force reinstall with uv tool
uv tool install . --force --reinstall
# Restart Claude Code to reload MCP serverFull Reinstallation
If quick update doesn't work, follow these steps:
1. Remove Previous Installation
# Remove from Claude Code
claude mcp remove redmine
# Uninstall the package (if installed with uv tool)
uv tool uninstall redmine-mcp
# Or if installed with pip
pip uninstall redmine-mcp2. Install Latest Version
# Navigate to project directory
cd /path/to/redmine-mcp
# Pull latest changes (if from git)
git pull origin main
# Install latest version
uv tool install .
# Or using pip
pip install .3. Re-register with Claude Code
# Use full path to avoid PATH conflicts
claude mcp add redmine "$(which redmine-mcp)" \
-e REDMINE_DOMAIN="https://your-redmine-domain.com" \
-e REDMINE_API_KEY="your_api_key_here" \
-e REDMINE_MCP_LOG_LEVEL="INFO" \
-e REDMINE_MCP_TIMEOUT="30"4. Verify Updated Installation
# Check installed version
uv tool list | grep redmine
# Verify MCP registration
claude mcp list
# Or check in Claude Code using slash command
# /mcpTroubleshooting Update Issues
Problem: Old version still running after update
This usually happens when PATH has multiple
redmine-mcpexecutablesSolution: Use full path in Claude Code MCP config
# Find the correct path
ls -la ~/.local/bin/redmine-mcp
# Update MCP config with full path
claude mcp remove redmine
claude mcp add redmine "/Users/YOUR_USERNAME/.local/bin/redmine-mcp" \
-e REDMINE_DOMAIN="https://your-redmine-domain.com" \
-e REDMINE_API_KEY="your_api_key_here"Problem: "Failed to reconnect to redmine" after update
Restart Claude Code completely (close and reopen)
Or use
/mcpcommand and selectrestartfor redmine server
Important Notes:
Always restart Claude Code after updating MCP server
Use
--force --reinstallflags to ensure clean installationCheck tool count in
/mcpto verify update (current: 36 tools)
🛠️ Available MCP Tools (36 tools)
Basic Tools
Tool Name | Description |
| Display server information and configuration status |
| Check server and Redmine connection health status |
| Manually refresh enum values and user cache |
Issue Operations
Tool Name | Description |
| Get detailed information of specified issue |
| Create a new issue (supports name parameters and |
| Update issue status |
| Update issue content (title, description, etc.) |
| Add notes to issues (supports time tracking) |
| Assign or unassign issues |
| Close issue and set completion rate |
Journal Tools
Tool Name | Description |
| List all journals/notes for an issue |
| Get detailed information of a specific journal |
Attachment Tools ✨ New
Tool Name | Description |
| Get attachment metadata (without downloading) |
| Download image for AI visual analysis (supports thumbnail) |
| Upload local files and attach them to an issue, with optional note |
Query Tools
Tool Name | Description |
| List issues in projects |
| Get list of issues assigned to me |
| Search for issues containing keywords |
| Get list of accessible projects |
| Get all available issue statuses |
| Get all available tracker lists |
| Get all available issue priorities |
| Get all available time tracking activities |
| Get all available document categories |
User Tools
Tool Name | Description |
| Search users by name or login |
| List all users |
| Get detailed information of a specific user |
💡 Usage Examples
Using in Claude Code
# Check server status
Please run health check
# Get project list
Show all accessible projects
# View system settings
Get all available issue statuses
Get all available tracker lists
Get all available issue priorities
Get all available time tracking activities
Get all available document categories
# View specific issue
Get detailed information for issue #123
# Create new issue
Create an issue in project ID 1:
- Title: Fix login error
- Description: Users cannot log in to the system properly
- Priority: High
# Search issues
Search for issues containing "login" keyword
# Update issue status
Update issue #123 status to "In Progress" with note "Starting to handle this issue"🧪 Testing
Run Test Suite
# Run all tests
uv run python -m pytest
# Run MCP integration tests
uv run python tests/scripts/mcp_integration.py
# Run Claude Code integration tests
uv run python tests/scripts/claude_integration.pyDocker Environment Testing
If you want to test in a local Docker environment:
# Start Redmine test environment
docker-compose up -d
# Quick start complete test environment
./quick_start.sh📁 Project Structure
redmine-mcp/
├── src/redmine_mcp/ # Main source code
│ ├── __init__.py # Package initialization
│ ├── server.py # MCP server main program
│ ├── redmine_client.py # Redmine API client
│ ├── config.py # Configuration management
│ └── validators.py # Data validation
├── tests/ # Test files
├── docs/ # Documentation directory
├── Dockerfile # Docker build configuration
├── docker-compose.yml # Docker Compose configuration
├── .dockerignore # Docker build exclusions
├── CHANGELOG.md # Version history
├── pyproject.toml # Project configuration
└── README.md # Project documentation🤝 Contributing
Fork this project
Create a feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add some amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
📦 Changelog
See CHANGELOG.md for version history and release notes.
🔗 Related Links
If you have any questions or suggestions, feel free to open an Issue or contact the project maintainers.
Available Tools
22 toolsadd_issue_noteB
為議題新增備註,可同時記錄時間
Args:
issue_id: 議題 ID
notes: 備註內容
private: 是否為私有備註(預設否)
spent_hours: 耗用工時(小時)
activity_name: 活動名稱(與 activity_id 二選一)
activity_id: 活動 ID(與 activity_name 二選一)
spent_on: 記錄日期 YYYY-MM-DD 格式(可選,預設今日)
Returns:
新增結果訊息
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | ||
| notes | Yes | ||
| private | No | ||
| spent_hours | No | ||
| activity_name | No | ||
| activity_id | No | ||
| spent_on | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool creates ('新增') notes and can record time, implying a write/mutation operation. However, it doesn't disclose critical behavioral traits: whether this requires specific permissions, what happens on failure, if notes are editable/deletable, rate limits, or authentication needs. The return is vaguely described as '新增結果訊息' (add result message) without format details.
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 well-structured and appropriately sized. It starts with a clear purpose statement, then lists all parameters with helpful explanations, and ends with return information. Every sentence earns its place, though the return statement could be more specific. The bilingual nature (Chinese purpose, mixed parameter labels) is slightly inconsistent but functional.
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 complexity (7 parameters, mutation operation) and lack of annotations/output schema, the description is partially complete. It excels at parameter semantics but lacks behavioral context (permissions, errors, etc.) and detailed return format. For a write tool with no structured safety hints, more disclosure about side effects and response structure would be beneficial.
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 description adds significant semantic value beyond the input schema, which has 0% description coverage. It explains all 7 parameters in Chinese with clarifications: 'issue_id: 議題 ID' (issue ID), 'notes: 備註內容' (note content), 'private: 是否為私有備註(預設否)' (whether private note, default no), 'spent_hours: 耗用工時(小時)' (hours spent), 'activity_name: 活動名稱(與 activity_id 二選一)' (activity name, choose one with activity_id), 'activity_id: 活動 ID(與 activity_name 二選一)' (activity ID, choose one with activity_name), 'spent_on: 記錄日期 YYYY-MM-DD 格式(可選,預設今日)' (record date YYYY-MM-DD format, optional, default today). This fully compensates for the schema's lack of descriptions.
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: '為議題新增備註,可同時記錄時間' (Add notes to an issue, can also record time). It specifies the verb ('新增備註' - add notes) and resource ('議題' - issue), and mentions the additional time-tracking capability. However, it doesn't explicitly differentiate from sibling tools like 'update_issue_content' which might also modify issues.
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 no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'update_issue_content' or 'close_issue', nor does it specify prerequisites, constraints, or appropriate contexts for use. The agent must infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_issueB
指派議題給用戶
Args:
issue_id: 議題 ID
user_id: 指派給的用戶 ID(與 user_name/user_login 三選一)
user_name: 指派給的用戶姓名(與 user_id/user_login 三選一)
user_login: 指派給的用戶登入名(與 user_id/user_name 三選一)
notes: 指派備註(可選)
Returns:
指派結果訊息
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | ||
| user_id | No | ||
| user_name | No | ||
| user_login | No | ||
| notes | No |
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 states the tool 'assigns an issue to a user' which implies a mutation/write operation, but doesn't disclose behavioral traits like required permissions, whether assignment is reversible, error conditions, or rate limits. The description adds minimal context beyond the basic action.
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 appropriately sized and front-loaded with the core purpose first. The Args/Returns sections are structured but could be more concise (e.g., the user identifier explanation is slightly repetitive). Every sentence adds value, though minor trimming is possible.
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 annotations, 0% schema coverage, and no output schema, the description does well on parameters but lacks completeness. It doesn't cover behavioral aspects (permissions, side effects) or return value details ('assignment result message' is vague). For a mutation tool with 5 parameters, this leaves gaps in guiding the agent.
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 0%, so the description must compensate. It provides clear semantics for all 5 parameters: explains 'issue_id' as the issue ID, describes the three user identifier options (user_id, user_name, user_login) as mutually exclusive alternatives, and notes that 'notes' is optional. This adds significant value beyond the bare 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 verb ('assign') and resource ('issue'), making the purpose specific and understandable. It distinguishes from siblings like 'update_issue_status' or 'close_issue' by focusing on user assignment. However, it doesn't explicitly differentiate from all siblings (e.g., 'add_issue_note' also involves issues but for notes).
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 no guidance on when to use this tool versus alternatives like 'update_issue_status' or 'add_issue_note'. It mentions parameter options (user_id, user_name, user_login as alternatives) but doesn't explain context or prerequisites for assignment, leaving the agent to infer usage from sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_issueB
關閉議題(設定為已完成狀態)
Args:
issue_id: 議題 ID
notes: 關閉備註(可選)
done_ratio: 完成百分比(預設 100%)
Returns:
關閉結果訊息
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | ||
| notes | No | ||
| done_ratio | No |
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 of behavioral disclosure. While '關閉議題' implies a mutation/write operation, the description doesn't disclose important behavioral aspects: whether this requires specific permissions, whether the closure is reversible, what happens to associated data, or any rate limits/constraints. The return value description ('關閉結果訊息') is vague about what the result message contains.
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 well-structured with clear sections (purpose, Args, Returns) and uses minimal text to convey essential information. Each sentence serves a purpose: the first states the tool's function, the next three explain parameters, and the final one describes the return. There's no wasted verbiage or 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 mutation tool with 3 parameters, 0% schema description coverage, no annotations, and no output schema, the description provides adequate but incomplete coverage. It explains what the tool does and documents parameters well, but lacks important behavioral context (permissions, side effects, error conditions) and has a vague return description. Given the complexity of issue management systems, more completeness would be beneficial.
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?
With 0% schema description coverage, the description must compensate for the lack of parameter documentation in the schema. It successfully explains all three parameters: 'issue_id: 議題 ID', 'notes: 關閉備註(可選)', and 'done_ratio: 完成百分比(預設 100%)'. The description clarifies that notes is optional and done_ratio defaults to 100%, adding valuable semantic context beyond the bare 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's purpose: '關閉議題(設定為已完成狀態)' which translates to 'Close issue (set to completed status)'. It specifies the verb ('close') and resource ('issue') with the specific action of setting to completed status. However, it doesn't explicitly differentiate from sibling tools like 'update_issue_status' which might have overlapping functionality.
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 no guidance on when to use this tool versus alternatives. There are multiple sibling tools that handle issue modifications (update_issue_status, assign_issue, add_issue_note), but the description doesn't indicate when close_issue is appropriate versus other status updates or whether there are prerequisites for closing an issue.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_new_issueB
建立新的 Redmine 議題
Args:
project_id: 專案 ID
subject: 議題標題
description: 議題描述(可選)
tracker_id: 追蹤器 ID(與 tracker_name 二選一)
tracker_name: 追蹤器名稱(與 tracker_id 二選一)
priority_id: 優先級 ID(與 priority_name 二選一)
priority_name: 優先級名稱(與 priority_id 二選一)
assigned_to_id: 指派給的用戶 ID(與 assigned_to_name/assigned_to_login 三選一)
assigned_to_name: 指派給的用戶姓名(與 assigned_to_id/assigned_to_login 三選一)
assigned_to_login: 指派給的用戶登入名(與 assigned_to_id/assigned_to_name 三選一)
Returns:
建立結果訊息
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| subject | Yes | ||
| description | No | ||
| tracker_id | No | ||
| tracker_name | No | ||
| priority_id | No | ||
| priority_name | No | ||
| assigned_to_id | No | ||
| assigned_to_name | No | ||
| assigned_to_login | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While '建立新的' (create new) implies a write/mutation operation, the description doesn't mention authentication requirements, error conditions, rate limits, or what happens on success/failure. It only states that it returns a '建立結果訊息' (creation result message) without explaining what that contains.
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 well-structured with clear sections (purpose, Args, Returns) and uses bullet-like formatting for parameters. While somewhat lengthy due to the 10 parameters, every sentence earns its place by providing essential parameter semantics. The front-loaded purpose statement is clear, though the parameter explanations dominate the description.
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 10-parameter mutation tool with no annotations and no output schema, the description provides good parameter documentation but lacks critical behavioral context. It doesn't explain authentication needs, error handling, or what the return message contains. The parameter semantics are well-covered, but other aspects of tool behavior remain undocumented.
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?
With 0% schema description coverage, the description compensates excellently by explaining all 10 parameters in detail. It clarifies optional vs required parameters, provides Chinese translations, and most importantly documents the exclusive choice relationships (二選一/三選一) between alternative parameter groups (tracker_id/tracker_name, priority_id/priority_name, assigned_to_id/assigned_to_name/assigned_to_login) that aren't apparent from the schema alone.
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 as '建立新的 Redmine 議題' (create new Redmine issue), which is a specific verb+resource combination. However, it doesn't explicitly differentiate this from sibling tools like 'add_issue_note' or 'update_issue_content', which are related but distinct operations on existing issues rather than creating new ones.
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 no guidance on when to use this tool versus alternatives. While it's obvious this creates new issues, there's no mention of prerequisites (like needing valid project/tracker IDs), when not to use it (e.g., for updating existing issues), or how it relates to sibling tools like 'update_issue_content' for modifications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_document_categoriesB
取得所有可用的文件分類列表
Returns:
格式化的文件分類列表
| 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 carries the full burden of behavioral disclosure. It mentions the tool returns a '格式化的文件分類列表' (formatted document categories list), which hints at output structure, but lacks details on format type (e.g., JSON, list), pagination, error handling, or authentication needs. For a tool with zero annotation coverage, this leaves significant gaps in understanding its 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 concise and front-loaded, with the main purpose stated clearly in the first sentence. The second sentence adds value by specifying the return format. There's no wasted text, and both sentences contribute meaningfully to understanding the tool.
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 (0 parameters, no output schema, no annotations), the description is adequate but minimal. It covers the basic purpose and output format, which is sufficient for a read-only list operation. However, it lacks details on error cases or integration context, leaving room for improvement in completeness.
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 0 parameters, and schema description coverage is 100% (since there are no parameters to describe). The description doesn't need to add parameter semantics, as there are none to explain. A baseline score of 4 is appropriate for tools with no parameters, as there's no risk of missing parameter documentation.
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 all available document categories list). It specifies the verb ('取得' - get) and resource ('文件分類列表' - document categories list), making the action and target clear. However, it doesn't distinguish this from sibling tools like 'get_issue_statuses' or 'get_priorities', which follow similar patterns for different resources.
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 no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, context for usage, or comparisons to sibling tools like 'get_projects' or 'get_trackers'. The agent must infer usage from the tool name alone, which is insufficient for optimal selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_issueB
取得指定的 Redmine 議題詳細資訊
Args:
issue_id: 議題 ID
include_details: 是否包含詳細資訊(描述、備註、附件等)
Returns:
議題的詳細資訊,以易讀格式呈現
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | ||
| include_details | No |
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 mentions the tool retrieves detailed information and presents it in an '易讀格式' (readable format), but doesn't cover critical aspects like authentication requirements, rate limits, error handling, or whether it's a read-only operation. For a tool with zero annotation coverage, this leaves significant gaps in understanding its 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 efficiently structured with a clear purpose statement followed by Args and Returns sections. Each sentence adds value: the purpose, parameter explanations, and return format. It's front-loaded and wastes no words, making it easy to parse.
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 moderate complexity (2 parameters, no output schema, no annotations), the description is adequate but incomplete. It covers the purpose and parameters well, but lacks behavioral details (e.g., safety, errors) and doesn't fully explain the return value beyond '易讀格式'. Without annotations or output schema, more context on the response structure would be helpful.
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 description adds meaningful context for both parameters beyond the schema. It explains 'issue_id' as '議題 ID' (issue ID) and 'include_details' as controlling whether to include '描述、備註、附件等' (description, notes, attachments, etc.). With 0% schema description coverage, this compensates well by clarifying what each parameter does, though it doesn't specify format or constraints.
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: '取得指定的 Redmine 議題詳細資訊' (Get specified Redmine issue details). It specifies the verb '取得' (get) and resource 'Redmine 議題' (Redmine issue), but doesn't explicitly differentiate from sibling tools like 'get_my_issues' or 'list_project_issues' which also retrieve issues. The purpose is clear but lacks sibling differentiation.
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 no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'get_issue' over 'get_my_issues', 'list_project_issues', or 'search_issues', nor does it specify prerequisites or exclusions. Usage is implied by the purpose but lacks explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_issue_statusesB
取得所有可用的議題狀態列表
Returns:
格式化的狀態列表
| 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 carries the full burden of behavioral disclosure. It states the tool retrieves a list but doesn't describe key behaviors: whether it's read-only (implied by 'get'), if it requires authentication, rate limits, error handling, or the format of the returned list beyond '格式化的狀態列表' (formatted status list). For a tool with zero annotation coverage, this is a significant gap 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 concise with two sentences: one stating the purpose and another hinting at the return format. It's front-loaded with the main action. However, the second sentence 'Returns: 格式化的狀態列表' is somewhat redundant and could be integrated more smoothly, slightly reducing efficiency.
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 (0 parameters, no output schema, no annotations), the description is incomplete. It lacks details on authentication needs, error cases, or the exact structure of the 'formatted status list' (e.g., JSON array, human-readable text). Without annotations or output schema, the description should provide more context to be fully helpful for an agent.
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 0 parameters, and schema description coverage is 100% (as there are no parameters to describe). The description doesn't need to add parameter semantics, so it meets the baseline of 4 for tools with no parameters, as it doesn't introduce confusion or redundancy.
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 all available issue statuses list). It specifies the verb '取得' (get) and resource '議題狀態列表' (issue statuses list), making it understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_issue' or 'update_issue_status', which slightly limits its clarity in context.
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 no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context (e.g., before updating an issue status), or comparisons to siblings like 'get_issue' (which might include status info) or 'update_issue_status' (which might require knowing valid statuses). This leaves the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_issuesB
取得指派給我的議題列表
Args:
status_filter: 狀態篩選 ("open", "closed", "all")
limit: 最大回傳數量 (預設 20,最大 100)
Returns:
我的議題列表
| Name | Required | Description | Default |
|---|---|---|---|
| status_filter | No | open | |
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While it mentions the tool retrieves a list, it doesn't describe important behavioral aspects like whether this is a read-only operation (implied but not stated), authentication requirements, rate limits, pagination behavior (only mentions limit parameter), error conditions, or response format details. The description is minimal and lacks behavioral 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 appropriately concise with clear sections (Args, Returns) and no wasted words. The main purpose is stated upfront, followed by parameter details. While efficient, the 'Returns' section is somewhat redundant ('我的議題列表' essentially restates the purpose) and could be more informative about the return structure.
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 2-parameter tool with no annotations and no output schema, the description is minimally adequate. It covers the basic purpose and parameters but lacks important context: no output format details, no behavioral traits, no differentiation from sibling tools, and no error handling information. The description meets minimum requirements but leaves significant gaps for an agent to use the tool effectively.
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?
With 0% schema description coverage (titles only, no descriptions), the description adds significant value by explaining both parameters: 'status_filter' with valid values ('open', 'closed', 'all') and 'limit' with default (20) and maximum (100) values. This compensates well for the schema's lack of descriptions, though it doesn't explain parameter interactions or edge cases.
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 my assigned issues list). It specifies the verb ('取得' - get) and resource ('議題列表' - issues list) with the scope '指派給我的' (assigned to me). However, it doesn't explicitly differentiate from sibling tools like 'list_project_issues' or 'search_issues' which might also retrieve issues with different scopes.
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 no guidance on when to use this tool versus alternatives. With siblings like 'list_project_issues', 'search_issues', and 'get_issue', there's no indication of when this specific tool (for issues assigned to me) is preferred over those other issue-retrieval tools. The description only states what it does, not when to choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_prioritiesB
取得所有可用的議題優先級列表
Returns:
格式化的優先級列表
| 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 carries the full burden of behavioral disclosure. It states the tool returns a formatted list but doesn't specify format details, pagination, rate limits, authentication needs, or error handling. For a read operation with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves beyond its basic function.
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 with two short sentences, but it could be more front-loaded. The first sentence states the purpose clearly, but the second sentence 'Returns: 格式化的優先級列表' (Returns: formatted priority list) is redundant with the first and adds minimal value. It's not wasteful but could be tighter by integrating the return information into the main statement.
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 low complexity (0 parameters, no output schema, no annotations), the description is minimally complete. It states what the tool does and what it returns, but lacks context on usage, behavioral traits, or integration with siblings. For a simple read tool, this is adequate but leaves room for improvement in guiding the agent effectively.
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 0 parameters, and schema description coverage is 100% (as there are no parameters to describe). The description doesn't need to add parameter semantics, so it meets the baseline of 4 for this dimension. It correctly indicates no inputs are required by omitting parameter details.
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 all available issue priority lists). It specifies the verb '取得' (get) and resource '議題優先級列表' (issue priority lists), making the action and target clear. However, it doesn't differentiate from sibling tools like 'get_issue_statuses' or 'get_trackers', which follow a similar pattern for other metadata.
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 no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for retrieving priorities (e.g., before creating an issue), or comparisons to siblings like 'get_issue' or 'search_issues' that might include priority data. Usage is implied only by the tool's name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectsC
取得可存取的專案列表
Returns:
格式化的專案列表
| 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 carries the full burden of behavioral disclosure. While it mentions the tool returns '格式化的專案列表' (formatted project list), it doesn't describe important behavioral aspects like whether this is a read-only operation, what authentication is required, whether results are paginated, or what happens if no projects are accessible. For a tool with zero annotation coverage, this represents significant gaps in behavioral 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 brief but could be more efficiently structured. The two-line format with 'Returns:' as a separate line adds structure, but the content is minimal. While not verbose, it doesn't maximize information density - the second line essentially restates what's implied by the first line (a list tool returns a list).
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 are no annotations and no output schema, the description should provide more complete context. It mentions the tool returns a 'formatted project list' but doesn't describe the format, structure, or contents of that list. For a tool that presumably returns data that will be used by an AI agent, more information about the return format would be helpful, especially without an output schema.
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 schema description coverage is 100% (though there are no parameters to cover). The description doesn't need to explain any parameters, which is appropriate. The baseline for zero parameters is 4, and the description doesn't incorrectly mention any parameters that don't exist.
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 accessible project list). It specifies the verb ('取得' - get) and resource ('專案列表' - project list), and adds the qualifier '可存取的' (accessible) which provides useful context about scope. However, it doesn't explicitly differentiate from sibling tools like 'list_project_issues' or 'get_my_issues', which prevents a perfect score.
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 no guidance on when to use this tool versus alternatives. With sibling tools like 'list_project_issues', 'get_my_issues', and 'search_issues' available, there's no indication of when this general project listing tool is appropriate versus more specific issue-focused tools. The description only states what the tool does, not when to choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_time_entry_activitiesB
取得所有可用的時間追蹤活動列表
Returns:
格式化的時間追蹤活動列表
| 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 carries the full burden of behavioral disclosure. It mentions that the tool returns a '格式化的時間追蹤活動列表' (formatted time tracking activity list), which hints at the output format, but doesn't cover critical aspects like whether it's a read-only operation, potential rate limits, error conditions, or authentication needs. This leaves significant gaps for a tool with no annotation support.
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 and front-loaded, with the main purpose stated clearly in the first sentence. The second sentence adds value by specifying the return format. There's no unnecessary information, and both sentences contribute meaningfully to understanding the tool.
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 (0 parameters, no output schema, no annotations), the description is adequate but minimal. It covers the basic purpose and output format, which is sufficient for a straightforward list-retrieval tool. However, it lacks details on behavioral aspects like authentication or error handling, which would enhance completeness despite the low complexity.
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 0 parameters, and the input schema coverage is 100% (as there are no parameters to describe). The description doesn't need to add parameter semantics, so it meets the baseline expectation. No additional parameter information is required or 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 clearly states the tool's purpose: '取得所有可用的時間追蹤活動列表' (Get all available time tracking activity lists). It specifies the verb ('取得' - get) and resource ('時間追蹤活動列表' - time tracking activity lists), making the intent unambiguous. However, it doesn't differentiate from sibling tools, as none appear to be directly related to time tracking activities.
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 no guidance on when to use this tool versus alternatives. It lacks context about prerequisites, such as whether authentication is required or if there are any limitations. While sibling tools include issue-related functions, there's no explicit comparison or exclusion criteria mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trackersC
取得所有可用的追蹤器列表
Returns:
格式化的追蹤器列表
| 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 carries the full burden of behavioral disclosure. It states the tool retrieves a list and mentions a return format ('格式化的追蹤器列表'), but lacks details on permissions, rate limits, pagination, or error handling. For a read operation with zero annotation coverage, this is insufficient to inform safe and effective use.
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 with two sentences, but the second sentence ('Returns: 格式化的追蹤器列表') is redundant since it restates the purpose without adding value. It could be more front-loaded by integrating the return information into the main statement, making it slightly less efficient.
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 lack of annotations and output schema, the description is incomplete. It covers the basic purpose but misses behavioral traits like data format specifics, potential side effects, or error conditions. For a tool in a server with multiple similar 'get' operations, more context is needed to ensure proper integration.
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 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate. Baseline is 4 for zero parameters, as it avoids unnecessary 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 clearly states the tool's purpose: '取得所有可用的追蹤器列表' (Get all available trackers list). It specifies the verb '取得' (get) and resource '追蹤器列表' (trackers list), making it understandable. However, it doesn't differentiate from sibling tools like 'get_projects' or 'get_priorities' beyond the resource name, which slightly limits clarity.
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 no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context, or exclusions, and with siblings like 'get_projects' and 'get_priorities', there's no indication of how 'trackers' relate to or differ from these other resources. This leaves usage ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_userB
取得特定用戶的詳細資訊
Args:
user_id: 用戶 ID
Returns:
用戶的詳細資訊,以易讀格式呈現
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes |
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 of behavioral disclosure. It states the tool retrieves user details in a readable format, but doesn't cover critical aspects like whether it's a read-only operation (implied by 'get'), authentication requirements, rate limits, error handling, or what specific details are included. For a tool with zero annotation coverage, this is a significant gap 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 appropriately concise with three sentences: purpose, parameter explanation, and return format. It's front-loaded with the main purpose, and each sentence adds value without redundancy. However, the structure could be slightly improved by integrating parameter and return information more seamlessly, but it remains efficient.
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 low complexity (single parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose and parameter semantics but lacks details on usage guidelines, behavioral traits, and output specifics. For a simple read operation, this might suffice, but gaps in transparency and guidelines reduce completeness.
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 description adds meaningful context for the single parameter 'user_id' by specifying it's for a '特定用戶' (specific user), which clarifies its purpose beyond the schema's basic type (integer). With 0% schema description coverage and only one parameter, the description adequately compensates by explaining what the parameter represents, though it doesn't detail format constraints (e.g., valid ranges).
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 detailed information of a specific user). It specifies the verb ('取得' - get) and resource ('用戶' - user), but doesn't explicitly differentiate from sibling tools like 'list_users' or 'search_users' which might retrieve multiple users or search functionality. The purpose is clear but lacks sibling differentiation.
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 no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'list_users' (for listing multiple users) or 'search_users' (for searching users), nor does it specify prerequisites or contexts for use. The agent must infer usage from the tool name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkC
健康檢查工具,確認服務器正常運作
| 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 carries full burden. It mentions confirming server operation but doesn't disclose behavioral traits such as what the check entails (e.g., ping, status endpoints), whether it requires authentication, rate limits, or what happens on failure. The description is minimal and lacks operational 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 a single, efficient sentence in Chinese that directly states the tool's purpose without unnecessary words. It's appropriately sized for a simple tool and front-loaded with the essential information. Every part of the description 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 tool's simplicity (0 parameters, no output schema, no annotations), the description is incomplete. It doesn't explain what 'normal operation' means, what the return value indicates (e.g., success/failure, status details), or how it integrates with sibling tools. For a health check tool, more context on behavior and output is needed despite the lack of structured fields.
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 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description doesn't add parameter semantics, but that's appropriate here. Baseline is 4 for zero parameters, as the schema fully covers the absence of inputs.
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 states the tool's purpose as 'health check tool, confirm server normal operation', which is clear but vague. It specifies the verb ('confirm') and resource ('server operation'), but lacks detail on what constitutes 'normal operation' or how this differs from sibling tools like 'server_info'. It's not tautological with the name, but doesn't fully distinguish its scope.
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 no guidance on when to use this tool versus alternatives. With siblings like 'server_info' that might provide server status information, there's no indication of when this health check is preferred, what prerequisites exist, or any exclusions. Usage is implied only by the general purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_issuesB
列出專案的議題
Args:
project_id: 專案 ID
status_filter: 狀態篩選 ("open", "closed", "all")
limit: 最大回傳數量 (預設 20,最大 100)
Returns:
專案議題列表,以表格格式呈現
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| status_filter | No | open | |
| limit | No |
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 of behavioral disclosure. It mentions the return format ('以表格格式呈現' - in table format), which is useful. However, it doesn't describe pagination behavior (only limit parameter), error handling, authentication requirements, rate limits, or whether it's a read-only operation (implied but not stated). For a list tool with no annotations, this leaves significant 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 well-structured with clear sections (Args, Returns) and uses minimal sentences. Each sentence adds value: the purpose statement, parameter explanations, and return format. It's appropriately sized for a 3-parameter tool, though the title is null which slightly reduces structure.
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 moderate complexity (3 parameters, no output schema, no annotations), the description is partially complete. It covers parameters well and mentions the return format, but lacks behavioral context (e.g., read-only nature, error cases) and usage guidelines. Without annotations or output schema, more detail on behavior and results would improve completeness.
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 description adds substantial meaning beyond the input schema, which has 0% description coverage. It explains all three parameters in Chinese: 'project_id' (專案 ID), 'status_filter' with allowed values ('open', 'closed', 'all'), and 'limit' with default and max values. This fully compensates for the schema's lack of descriptions, though it doesn't explain parameter interactions or constraints beyond what's listed.
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 as '列出專案的議題' (list project issues), which is a specific verb+resource combination. It distinguishes itself from siblings like 'get_my_issues' (personal issues) and 'search_issues' (search across projects) by focusing on a specific project. However, it doesn't explicitly mention how it differs from 'get_issue' (single issue retrieval).
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 no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'list_project_issues' over 'search_issues' (which might have broader filtering) or 'get_my_issues' (personal issues). There's no context about prerequisites, such as needing a valid project ID, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usersA
列出所有用戶
Args:
limit: 最大回傳數量 (預設 20,最大 100)
status_filter: 狀態篩選 ("active", "locked", "all")
Returns:
用戶列表,以表格格式呈現
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| status_filter | No | active |
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 adds some context: it mentions the return format ('以表格格式呈現' - in table format) and default/max values for parameters. However, it lacks details on permissions, rate limits, pagination, or error handling, which are important for a list 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 well-structured and concise, with clear sections for purpose, arguments, and returns. Each sentence earns its place by providing essential information without redundancy, making it 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 the tool's moderate complexity (2 parameters, no annotations, no output schema), the description is partially complete. It covers parameters well and hints at the return format, but lacks details on output structure (e.g., fields in the table), error cases, or integration with siblings, leaving gaps for the agent to infer.
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 schema description coverage is 0%, so the description fully compensates by explaining both parameters: 'limit' (maximum return count, default 20, max 100) and 'status_filter' (status filtering options: 'active', 'locked', 'all'). This adds crucial meaning beyond the bare schema, making it easy for an agent to understand how to use them.
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 as '列出所有用戶' (list all users), which is a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'get_user' (singular) or 'search_users', leaving room for confusion about when to use this versus those 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 description provides no guidance on when to use this tool versus alternatives like 'get_user' or 'search_users'. While it implies listing all users, it doesn't specify scenarios (e.g., bulk retrieval vs. specific lookups) or prerequisites, leaving the agent to guess based on context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_cacheC
手動刷新列舉值和用戶快取
Returns:
刷新結果訊息
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a manual refresh operation but doesn't disclose important traits: whether this requires special permissions, how long the refresh takes, whether it affects system performance, what happens to ongoing operations during refresh, or if there are rate limits. The mention of 'manual' implies user-initiated rather than automatic, but this is insufficient for a mutation tool with zero annotation coverage.
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 extremely concise with just two lines in Chinese. The first line states the purpose clearly, and the second line indicates there's a return message. There's no wasted text or redundancy. However, the structure could be slightly improved by front-loading more critical information about when and why to use this tool.
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 cache refresh tool with no annotations and no output schema, the description is inadequate. It doesn't explain what 'enumeration values' specifically refers to in this context, what 'user cache' contains, what the refresh result message format might be, whether the operation is idempotent, or what side effects might occur. Given this is a mutation operation (refreshing implies changing cache state) with zero structured safety information, the description should provide more behavioral context.
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 0 parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't waste space discussing non-existent parameters. This meets the baseline expectation for a zero-parameter tool where the schema handles all parameter documentation.
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 states the tool '手動刷新列舉值和用戶快取' (manually refresh enumeration values and user cache), which provides a specific verb ('refresh') and resources ('enumeration values and user cache'). However, it doesn't distinguish this from potential siblings - while no direct cache-related siblings exist in the list, the purpose could overlap with other data-fetching tools like 'get_user' or 'list_users' that might involve cached data. The description is clear but lacks sibling differentiation.
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 no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (like when cache becomes stale), timing considerations, or what happens if the refresh fails. With multiple data retrieval tools in the sibling list (get_user, list_users, get_issue, etc.), there's no indication of when manual cache refresh is needed versus simply fetching fresh data through those tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_issuesB
搜尋議題 (在標題或描述中搜尋關鍵字)
Args:
query: 搜尋關鍵字
project_id: 限制在特定專案中搜尋 (可選)
limit: 最大回傳數量 (預設 10,最大 50)
Returns:
符合搜尋條件的議題列表
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| project_id | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the search scope (title/description) and default/max limits, but doesn't cover important aspects like pagination behavior, sorting, error conditions, authentication requirements, or rate limits for a search 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 efficiently structured with clear sections for Args and Returns. Each sentence adds value, though the Chinese/English mix slightly affects readability. The information is front-loaded with the core purpose stated first.
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 search tool with 3 parameters and no output schema, the description covers the basic operation and parameters adequately. However, it lacks details about the return format (what fields/issues include), search behavior (partial/full match, case sensitivity), and doesn't leverage the absence of annotations to provide more behavioral context.
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?
With 0% schema description coverage, the description compensates well by explaining all 3 parameters: query is the search keyword, project_id restricts to specific projects (optional), and limit controls maximum results with default and max values. This adds meaningful context beyond the bare 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 searches for issues using keywords in title or description, which is a specific verb+resource combination. However, it doesn't distinguish this from sibling tools like 'list_project_issues' or 'get_my_issues', which also retrieve issues but with different filtering approaches.
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 no guidance on when to use this tool versus alternatives like 'list_project_issues' or 'get_my_issues'. It mentions optional project_id filtering but doesn't explain when keyword search is preferable to listing by project or status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_usersB
搜尋用戶(依姓名或登入名)
Args:
query: 搜尋關鍵字(姓名或登入名)
limit: 最大回傳數量 (預設 10,最大 50)
Returns:
符合搜尋條件的用戶列表
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| limit | No |
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 of behavioral disclosure. It mentions the tool returns a list of users matching search criteria, but lacks critical details: whether this is a read-only operation, if it requires authentication, rate limits, pagination behavior, or error conditions. For a search tool with zero annotation coverage, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and concise, with zero wasted words. It uses a clear header, bullet points for arguments and returns, and each sentence adds specific value. The information is front-loaded with the core purpose immediately stated.
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 moderate complexity (2 parameters, search functionality), no annotations, and no output schema, the description is minimally adequate. It covers the purpose and parameters but lacks behavioral context, output format details, and usage guidelines. It meets the baseline for a simple search tool but leaves gaps an agent would need to infer.
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 description adds meaningful semantics beyond the input schema, which has 0% description coverage. It explains that 'query' is for search keywords (name or login name) and 'limit' defines the maximum return count with defaults and bounds (default 10, max 50). This compensates well for the schema's lack of descriptions, though it doesn't detail query syntax or formatting.
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: '搜尋用戶(依姓名或登入名)' (Search users by name or login name). It specifies the verb ('搜尋' - search) and resource ('用戶' - users), and indicates the search criteria. However, it doesn't explicitly differentiate from sibling tools like 'get_user' or 'list_users', which prevents a perfect score.
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 no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_user' (likely for retrieving a specific user) or 'list_users' (likely for listing all users without filtering), nor does it specify use cases or prerequisites. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
server_infoB
取得服務器資訊和狀態
| 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 carries the full burden of behavioral disclosure. It states the tool retrieves server information and status, implying a read-only operation, but doesn't specify what information is included (e.g., version, uptime, performance metrics), whether it requires authentication, or any rate limits. This leaves significant gaps in understanding the tool's 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 a single, efficient sentence in Chinese ('取得服務器資訊和狀態') that directly states the tool's purpose with no wasted words. It is appropriately sized and front-loaded, making it easy to understand at a glance.
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 low complexity (0 parameters, no annotations, no output schema), the description is minimally adequate. It states what the tool does but lacks details on what information is returned or behavioral traits. For a simple read-only tool, this might be sufficient, but it doesn't provide full context for effective use.
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 0 parameters, and the schema description coverage is 100% (though empty). The description doesn't need to add parameter semantics since there are no parameters to explain. A baseline of 4 is appropriate as the description doesn't have to compensate for any parameter documentation gaps.
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 '取得服務器資訊和狀態' (Get server information and status) clearly states the tool's purpose with a specific verb ('取得' - get) and resource ('服務器資訊和狀態' - server information and status). It distinguishes itself from sibling tools which focus on issues, users, projects, etc., though it doesn't explicitly mention how it differs from 'health_check' which might be a related sibling.
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 no guidance on when to use this tool versus alternatives. It doesn't mention when this tool is appropriate (e.g., for general server diagnostics) or when not to use it (e.g., for specific health checks that 'health_check' might handle), nor does it reference any sibling tools as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_issue_contentB
更新議題內容(標題、描述、優先級、完成度、追蹤器、日期、工時等)
Args:
issue_id: 議題 ID
subject: 新的議題標題(可選)
description: 新的議題描述(可選)
priority_id: 新的優先級 ID(與 priority_name 二選一)
priority_name: 新的優先級名稱(與 priority_id 二選一)
done_ratio: 新的完成百分比 0-100(可選)
tracker_id: 新的追蹤器 ID(與 tracker_name 二選一)
tracker_name: 新的追蹤器名稱(與 tracker_id 二選一)
parent_issue_id: 新的父議題 ID(可選)
remove_parent: 是否移除父議題關係(可選)
start_date: 新的開始日期 YYYY-MM-DD 格式(可選)
due_date: 新的完成日期 YYYY-MM-DD 格式(可選)
estimated_hours: 新的預估工時(可選)
Returns:
更新結果訊息
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | ||
| subject | No | ||
| description | No | ||
| priority_id | No | ||
| priority_name | No | ||
| done_ratio | No | ||
| tracker_id | No | ||
| tracker_name | No | ||
| parent_issue_id | No | ||
| remove_parent | No | ||
| start_date | No | ||
| due_date | No | ||
| estimated_hours | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it indicates this is an update/mutation operation, it doesn't mention permission requirements, whether changes are reversible, rate limits, error conditions, or what happens when only some fields are provided. The simple 'Returns: 更新結果訊息' gives minimal information about output format.
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 well-structured with a clear purpose statement followed by organized Args and Returns sections. While somewhat lengthy due to the many parameters, every sentence adds value. The information is front-loaded with the main purpose first, followed by detailed parameter explanations.
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 mutation tool with 13 parameters, no annotations, and no output schema, the description does a reasonable job. The parameter documentation is excellent, but behavioral aspects are under-specified. The description doesn't explain what '更新結果訊息' contains or provide context about typical error conditions. Given the complexity, more behavioral transparency would be beneficial.
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?
With 0% schema description coverage and 13 parameters, the description provides excellent parameter semantics. It clearly explains each parameter's purpose, optionality, constraints (like '0-100' for done_ratio), format requirements ('YYYY-MM-DD'), and mutual exclusivity rules ('priority_id 與 priority_name 二選一'). This fully compensates for the lack of schema descriptions.
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 as '更新議題內容' (update issue content) and lists specific fields that can be updated (title, description, priority, completion ratio, tracker, dates, hours). While it doesn't explicitly differentiate from sibling tools like 'update_issue_status', the specificity of the fields mentioned makes the purpose clear.
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 no guidance on when to use this tool versus alternatives like 'update_issue_status' or 'assign_issue'. It mentions no prerequisites, constraints, or typical use cases. The only implicit guidance is that it updates multiple fields at once, but this isn't explicitly stated as a distinguishing factor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_issue_statusB
更新議題狀態
Args:
issue_id: 議題 ID
status_id: 新的狀態 ID(與 status_name 二選一)
status_name: 新的狀態名稱(與 status_id 二選一)
notes: 更新備註(可選)
Returns:
更新結果訊息
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | ||
| status_id | No | ||
| status_name | No | ||
| notes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While '更新' (update) implies a mutation, it doesn't specify required permissions, whether the operation is reversible, rate limits, or what happens to other issue fields. The return value description ('更新結果訊息' - update result message) is vague about format or error handling.
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 efficiently structured with a clear purpose statement followed by Args and Returns sections. Each sentence serves a purpose - no redundant information. The bilingual nature (Chinese purpose, English section headers) is slightly unconventional but doesn't harm clarity.
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 mutation tool with 4 parameters and no annotations/output schema, the description covers basic purpose and parameters adequately. However, it lacks important context about permissions, side effects, error conditions, and detailed return format that would be needed for robust agent usage.
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?
With 0% schema description coverage, the description adds significant value by explaining all 4 parameters in Chinese. It clarifies the issue_id requirement, the status_id/status_name mutual exclusivity, and notes being optional. This compensates well for the schema's lack of descriptions.
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 verb ('更新議題狀態' - update issue status) and resource ('議題' - issue), making the purpose immediately understandable. It doesn't explicitly differentiate from siblings like 'close_issue' or 'update_issue_content', but the focus on status updates provides reasonable 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 provides no guidance on when to use this tool versus alternatives like 'close_issue' or 'update_issue_content'. It mentions the parameter relationship (status_id vs status_name) but doesn't address broader usage context, prerequisites, or when-not-to-use scenarios.
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. Dates show when Glama detected each change.
22 tool updates
- First observed
add_issue_note - First observed
assign_issue - First observed
close_issue - First observed
create_new_issue - First observed
get_document_categories - First observed
get_issue - First observed
get_issue_statuses - First observed
get_my_issues - First observed
get_priorities - First observed
get_projects - First observed
get_time_entry_activities - First observed
get_trackers - First observed
get_user - First observed
health_check - First observed
list_project_issues - First observed
list_users - First observed
refresh_cache - First observed
search_issues - First observed
search_users - First observed
server_info - First observed
update_issue_content - First observed
update_issue_status
TDQS
Most tools have distinct purposes focused on Redmine's core issue management workflow, with clear separation between CRUD operations, listing, and metadata retrieval. However, there is some potential overlap between 'update_issue_content' and 'update_issue_status' as both modify issues, though their scopes are differentiated by content vs. status changes.
Tool names follow a highly consistent snake_case pattern with clear verb_noun structure throughout (e.g., 'create_new_issue', 'get_issue', 'list_users', 'update_issue_status'). The naming convention is predictable and readable across all 22 tools.
With 22 tools, the count feels heavy for a Redmine server, though it covers extensive functionality. While comprehensive, it borders on being overwhelming compared to typical well-scoped servers (3-15 tools), suggesting some tools could potentially be consolidated or omitted.
The toolset provides complete coverage for Redmine's issue management domain, including full CRUD operations for issues (create, get, update, close), comprehensive listing and search capabilities, user management, project access, and metadata retrieval for statuses, priorities, and trackers. No obvious gaps exist for core workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Enable secure connectivity between Sentry issues and debugging data, and LLM clients, using a Model Context Protocol (MCP) server.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceA Model Context Protocol server for interacting with Redmine using its REST API, enabling the management of tickets, projects, and user data through integration with LLMs.78MIT
- 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.9015MIT
- AlicenseCqualityAmaintenanceModel Context Protocol (MCP) server for Redmine that provides comprehensive access to the Redmine REST API. It allows you to operate Redmine from MCP clients such as Claude Desktop.901,90724MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI coding agents to interact with Redmine projects, issues, time tracking, and members through natural language via the Model Context Protocol.-
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/snowild/redmine-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server