Skip to main content
Glama
snowild

Redmine MCP Server

by snowild

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-mcp

2. Install Dependencies

Using uv (recommended):

uv sync

Or using pip:

pip install -e .

3. Environment Configuration

Create a .env file:

cp .env.example .env

Edit 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=info

Environment Variables Reference

Variable

Description

Default

Example

REDMINE_DOMAIN

Redmine server URL

Required

https://redmine.example.com

REDMINE_API_KEY

Your Redmine API key

Required

abc123...

REDMINE_MCP_LOG_LEVEL

Log level for this MCP server

INFO

DEBUG, INFO, WARNING, ERROR

REDMINE_MCP_TIMEOUT

Request timeout (seconds)

30

60

REDMINE_MCP_TRANSPORT

Transport mode

stdio

stdio, sse

REDMINE_MCP_HOST

SSE bind address

0.0.0.0

127.0.0.1

REDMINE_MCP_PORT

SSE listen port

8000

3000

LOG_LEVEL

Legacy log level (backward compatibility)

-

debug, info

REDMINE_TIMEOUT

Legacy timeout (backward compatibility)

-

30

Log Level Priority:

  1. REDMINE_MCP_LOG_LEVEL (highest priority - project-specific)

  2. LOG_LEVEL (backward compatibility)

  3. 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

  1. Log in to Redmine as administrator

  2. Go to AdministrationSettingsAPI

  3. Check "Enable REST web service"

  4. 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

  1. Go to AdministrationRoles and permissions

  2. Create or edit roles (e.g.: Developer, Tester, Project Manager)

  3. Assign appropriate permissions to roles (recommend at least: View issues, Add issues, Edit issues)

Configure Trackers

  1. Go to AdministrationTrackers

  2. Create tracker types (e.g.: Bug, Feature, Support)

  3. Set default status and workflow for each tracker

Configure Issue Statuses

  1. Go to AdministrationIssue statuses

  2. Create statuses (e.g.: New, In Progress, Resolved, Closed, Rejected)

  3. Set status attributes (whether it's a closed status, etc.)

Configure Workflow

  1. Go to AdministrationWorkflow

  2. Set allowed status transitions for each role and tracker combination

  3. Ensure basic status transition paths (New → In Progress → Resolved → Closed)

Create Projects

  1. Go to ProjectsNew project

  2. Set project name, identifier, description

  3. Select enabled modules (at least enable "Issue tracking")

  4. Assign members and set roles

4.3 Get API Key

  1. Log in to your Redmine system (can be administrator or regular user)

  2. Go to My accountAPI access key

  3. Click Show or Reset to get the API key

  4. Copy the key to REDMINE_API_KEY in the .env file

⚠️ 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 3000

Global 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 sse

Using .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=8000

Note: uv run automatically loads .env from 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-mcp

Using 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 down
  1. Create .env file:

REDMINE_DOMAIN=https://your-redmine.com
REDMINE_API_KEY=your_api_key_here
  1. Update docker-compose.yml to use environment variables:

environment:
  - REDMINE_DOMAIN=${REDMINE_DOMAIN}
  - REDMINE_API_KEY=${REDMINE_API_KEY}
  1. Start the service:

docker compose up -d

Enabling 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:ro

Then recreate the container so the volume takes effect:

docker compose up -d --force-recreate

Notes:

  • 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 stdio mode, 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/sse

Or 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:

# 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 server

Full 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-mcp

2. 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
# /mcp

Troubleshooting Update Issues

Problem: Old version still running after update

  • This usually happens when PATH has multiple redmine-mcp executables

  • Solution: 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 /mcp command and select restart for redmine server

Important Notes:

  • Always restart Claude Code after updating MCP server

  • Use --force --reinstall flags to ensure clean installation

  • Check tool count in /mcp to verify update (current: 36 tools)

🛠️ Available MCP Tools (36 tools)

Basic Tools

Tool Name

Description

server_info

Display server information and configuration status

health_check

Check server and Redmine connection health status

refresh_cache

Manually refresh enum values and user cache

Issue Operations

Tool Name

Description

get_issue

Get detailed information of specified issue

create_new_issue

Create a new issue (supports name parameters and file_paths attachments)

update_issue_status

Update issue status

update_issue_content

Update issue content (title, description, etc.)

add_issue_note

Add notes to issues (supports time tracking)

assign_issue

Assign or unassign issues

close_issue

Close issue and set completion rate

Journal Tools

Tool Name

Description

list_issue_journals

List all journals/notes for an issue

get_journal

Get detailed information of a specific journal

Attachment Tools ✨ New

Tool Name

Description

get_attachment_info

Get attachment metadata (without downloading)

get_attachment_image

Download image for AI visual analysis (supports thumbnail)

attach_files_to_issue

Upload local files and attach them to an issue, with optional note

Query Tools

Tool Name

Description

list_project_issues

List issues in projects

get_my_issues

Get list of issues assigned to me

search_issues

Search for issues containing keywords

get_projects

Get list of accessible projects

get_issue_statuses

Get all available issue statuses

get_trackers

Get all available tracker lists

get_priorities

Get all available issue priorities

get_time_entry_activities

Get all available time tracking activities

get_document_categories

Get all available document categories

User Tools

Tool Name

Description

search_users

Search users by name or login

list_users

List all users

get_user

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.py

Docker 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

  1. Fork this project

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add some amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. 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.


If you have any questions or suggestions, feel free to open an Issue or contact the project maintainers.

Available Tools

22 tools
add_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:
    新增結果訊息
ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYes
notesYes
privateNo
spent_hoursNo
activity_nameNo
activity_idNo
spent_onNo

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters5/5

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.

Purpose4/5

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

The description clearly states the tool's purpose: '為議題新增備註,可同時記錄時間' (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.

Usage Guidelines2/5

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:
    指派結果訊息
ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYes
user_idNo
user_nameNo
user_loginNo
notesNo

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries 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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters5/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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:
    關閉結果訊息
ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYes
notesNo
done_ratioNo

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the tool's purpose: '關閉議題(設定為已完成狀態)' 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.

Usage Guidelines2/5

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:
    建立結果訊息
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
subjectYes
descriptionNo
tracker_idNo
tracker_nameNo
priority_idNo
priority_nameNo
assigned_to_idNo
assigned_to_nameNo
assigned_to_loginNo

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries 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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters5/5

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.

Purpose4/5

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

The description clearly states the tool's purpose 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.

Usage Guidelines2/5

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:
    格式化的文件分類列表
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It 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.

Conciseness4/5

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.

Completeness3/5

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

Given the tool's simplicity (0 parameters, 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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the tool's purpose: '取得所有可用的文件分類列表' (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.

Usage Guidelines2/5

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:
    議題的詳細資訊,以易讀格式呈現
ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYes
include_detailsNo

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the tool's purpose: '取得指定的 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.

Usage Guidelines2/5

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:
    格式化的狀態列表
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It 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.

Conciseness4/5

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.

Completeness2/5

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

Given the tool's simplicity (0 parameters, 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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the tool's purpose: '取得所有可用的議題狀態列表' (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.

Usage Guidelines2/5

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:
    我的議題列表
ParametersJSON Schema
NameRequiredDescriptionDefault
status_filterNoopen
limitNo

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries 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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the tool's purpose: '取得指派給我的議題列表' (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.

Usage Guidelines2/5

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:
    格式化的優先級列表
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It 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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the tool's purpose: '取得所有可用的議題優先級列表' (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.

Usage Guidelines2/5

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:
    格式化的專案列表
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the tool's purpose: '取得可存取的專案列表' (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.

Usage Guidelines2/5

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:
    格式化的時間追蹤活動列表
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It 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.

Conciseness4/5

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.

Completeness3/5

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

Given the tool's simplicity (0 parameters, 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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the tool's purpose: '取得所有可用的時間追蹤活動列表' (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.

Usage Guidelines2/5

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:
    格式化的追蹤器列表
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It 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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the tool's purpose: '取得所有可用的追蹤器列表' (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.

Usage Guidelines2/5

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:
    用戶的詳細資訊,以易讀格式呈現
ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It 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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the tool's purpose: '取得特定用戶的詳細資訊' (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.

Usage Guidelines2/5

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

健康檢查工具,確認服務器正常運作

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries 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.

Conciseness5/5

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.

Completeness2/5

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

Given the tool's simplicity (0 parameters, 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so 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.

Purpose3/5

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.

Usage Guidelines2/5

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:
    專案議題列表,以表格格式呈現
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
status_filterNoopen
limitNo

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It 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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the tool's purpose 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.

Usage Guidelines2/5

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:
    用戶列表,以表格格式呈現
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
status_filterNoactive

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters5/5

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.

Purpose4/5

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

The description clearly states the tool's purpose 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.

Usage Guidelines2/5

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:
    刷新結果訊息
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the 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.

Purpose3/5

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.

Usage Guidelines2/5

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:
    符合搜尋條件的議題列表
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
project_idNo
limitNo

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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:
    符合搜尋條件的用戶列表
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
limitNo

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the tool's purpose: '搜尋用戶(依姓名或登入名)' (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.

Usage Guidelines2/5

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

取得服務器資訊和狀態

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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:
    更新結果訊息
ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYes
subjectNo
descriptionNo
priority_idNo
priority_nameNo
done_ratioNo
tracker_idNo
tracker_nameNo
parent_issue_idNo
remove_parentNo
start_dateNo
due_dateNo
estimated_hoursNo

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters5/5

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.

Purpose4/5

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

The description clearly states the tool's purpose 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.

Usage Guidelines2/5

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:
    更新結果訊息
ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYes
status_idNo
status_nameNo
notesNo

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 22 tool updates
    • First observedadd_issue_note
    • First observedassign_issue
    • First observedclose_issue
    • First observedcreate_new_issue
    • First observedget_document_categories
    • First observedget_issue
    • First observedget_issue_statuses
    • First observedget_my_issues
    • First observedget_priorities
    • First observedget_projects
    • First observedget_time_entry_activities
    • First observedget_trackers
    • First observedget_user
    • First observedhealth_check
    • First observedlist_project_issues
    • First observedlist_users
    • First observedrefresh_cache
    • First observedsearch_issues
    • First observedsearch_users
    • First observedserver_info
    • First observedupdate_issue_content
    • First observedupdate_issue_status

TDQS

B3.4/5.0
Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count3/5

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.

Completeness5/5

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

ActivitySlowing
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    A 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.
    78
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    Model 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.
    90
    15
    MIT
  • A
    license
    C
    quality
    A
    maintenance
    Model 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.
    90
    1,907
    24
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI coding agents to interact with Redmine projects, issues, time tracking, and members through natural language via the Model Context Protocol.
    -

Latest Blog Posts

MCP directory API

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

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

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