Skip to main content
Glama
Avicennasis

redmine-mcp-workflows

by Avicennasis

redmine-mcp-workflows

CI OpenSSF Scorecard Release License: MIT pre-commit PRs welcome

A schema-aware Model Context Protocol (MCP) server for Redmine.

Most MCP servers for Redmine are thin wrappers around the REST API: an LLM call goes through, Redmine returns 422 Unprocessable Entity, and the LLM has to guess what went wrong. redmine-mcp-workflows is different — it caches each tracker's workflow graph, custom field schemas, and role-based field permissions, then validates writes before they leave the client. When something can't succeed, you get a structured error with a clear next step instead of a stack trace.

What you get

92 tools, 746 tests, ruff clean. See docs/tool-catalog.md for the full list. The generic passthrough redmine_request is only advertised when REDMINE_MCP_ENABLE_PASSTHROUGH is on, so a default deployment lists 91.

Discovery & introspection (4)

  • redmine_describe_tracker(tracker) — required fields, allowed status transitions per role, custom field schemas. Cache-backed.

  • redmine_describe_project(project) — enabled trackers, custom fields, members, default tracker.

  • redmine_list_projects(query=None, limit=25, offset=0) — paginated.

  • redmine_list_trackers() — all trackers + cache.

Cache control (1)

  • redmine_invalidate_cache(scope) — "all", "tracker:<id>", or "project:<slug>".

Issue lifecycle (5) — every write validates against the cache

  • redmine_create_issue(project, tracker, subject, ..., difficulty="", quiet=False)

  • redmine_get_issue(id, include=...)

  • redmine_update_issue(id, ..., difficulty="", held="", clear_held=False, clear_due_date=False, clear_start_date=False, quiet=False, **fields) — validates status transitions, custom fields, role permissions.

  • redmine_close_issue(id, note="", clear_held=False, quiet=False) — convenience over update_issue with closure-specific error messaging.

  • redmine_search_issues(query, project=None, status=None, ..., brief=False, fields="") — brief=True (or an explicit fields list) returns only the named keys per issue instead of whole issues; the default is unchanged.

Holds

held="<reason>" sets the Held custom field (a reason string — a bare True is rejected with held_reason_required) and blocks closing; clear_held=True removes it. The close gate judges the value the update will leave behind, so redmine_close_issue(id, clear_held=True) (or redmine_update_issue with a closed status and clear_held=True) releases and closes in one call, while a close that leaves Held non-empty is rejected with issue_held and a hint naming clear_held=True.

Quiet writes

Write tools return the full issue JSON (~3-5KB per call), which is the fastest way to exhaust a bulk pipeline's context. Pass quiet=True — redmine_create_issue, redmine_update_issue, redmine_close_issue, redmine_add_comment, redmine_bulk_create_issues — and a successful result comes back as ids + status only:

{"id": 12345, "status": "ok"}

Bulk create returns one compact row per item (subject/status/id/error/ duplicate_of/hint) plus the summary, so a bulk caller can still tell which items failed. Errors are never reduced — a failed write returns full validation detail in quiet mode too, because that is exactly when a caller needs it. Default is False (unchanged behaviour).

Difficulty (engagement-mode signal, v0.4)

If your fleet has a global Difficulty custom field configured (values Unclassified / Easy / Normal / Hard), the difficulty parameter on redmine_create_issue and redmine_update_issue is the convenience path: pass difficulty="Easy" instead of constructing custom_fields=[{"id": <N>, "value": "Easy"}] manually. The field id is resolved via /custom_fields.json and cached.

  • Create default-fills Unclassified when difficulty is omitted and no Difficulty entry is supplied in custom_fields — so auto-callers don't trip the required-field validation.

  • Update does NOT default-fill (would silently overwrite user-set values).

  • If both difficulty=... and a matching custom_fields entry are passed, difficulty wins.

  • On fleets without a Difficulty field, the parameter silently no-ops.

Comments & attachments (4)

  • redmine_add_comment(id, note, private=False)

  • redmine_get_journals(id)

  • redmine_upload_attachment(file_path, issue_id=None, description=None) — path-restricted to REDMINE_MCP_ALLOWED_DIRECTORIES.

  • redmine_download_attachment(attachment_id, save_to, overwrite=False) — validates downloaded byte count against metadata filesize before writing (no partial-file corruption).

Time tracking (4) — v0.2

  • redmine_create_time_entry(hours, issue_id=0, project_id=0, activity="", ...) — accepts H:MM or decimal hours; activity names resolve through the cached enumeration.

  • redmine_list_time_entries(issue_id=0, project_id=0, user_id=0, spent_on="", from_date="", to_date="", ...)

  • redmine_update_time_entry(id, hours="", activity="", ...) — partial; re-validates supplied hours.

  • redmine_delete_time_entry(id) — permanent.

Watchers (3) — v0.2

  • redmine_add_watcher(issue_id, user_id) — idempotent on the API side.

  • redmine_remove_watcher(issue_id, user_id) — 404 surfaces verbatim so callers can distinguish "not a watcher" from "issue not found".

  • redmine_list_watchers(issue_id)

Wiki page CRUD (4) — v0.2

  • redmine_get_wiki_page(project, title, version=0) — optional historical version.

  • redmine_create_wiki_page(project, title, text, parent_title="", comments="") — pre-flight GET refuses to overwrite.

  • redmine_update_wiki_page(project, title, text, version=0, ...) — optional version for optimistic concurrency (mismatch → redmine_api_409).

  • redmine_delete_wiki_page(project, title) — permanent.

Issue relations (4) — v0.2

  • redmine_list_relations(issue_id)

  • redmine_add_relation(issue_id, target_issue_id, relation_type, delay=0) — accepts colloquial related_to/blocked_by/duplicate_of aliases.

  • redmine_remove_relation(relation_id) — DELETEs /relations/{id}.json (top-level URL).

  • redmine_set_parent_issue(issue_id, parent_issue_id) — pass 0 to unparent.

Bulk operations (2) — v0.2

  • redmine_bulk_update_issues(issue_ids, ...) — apply same field updates across many issues. ≤100 per batch.

  • redmine_bulk_close(issue_ids, note="") — close many at once. Returns {total, succeeded, failed, skipped}. stop_on_error=True halts on first failure.

Versions / milestones (6) — v0.2

  • redmine_list_versions(project)

  • redmine_get_version(version_id)

  • redmine_create_version(project, name, status="open"|"locked"|"closed", sharing="none"|"descendants"|...) — enums validated client-side.

  • redmine_update_version(version_id, ...) — partial updates.

  • redmine_delete_version(version_id) — 422 if issues still reference it.

  • redmine_assign_issue_to_version(issue_id, version_id) — pass version_id=0 to clear.

Generic passthrough (1) — v0.3, opt-in

  • redmine_request(method, path, body="", params="") — escape hatch to any Redmine REST endpoint. Gated behind REDMINE_MCP_ENABLE_PASSTHROUGH=true, and not advertised in the tool list while that is off. Every response carries validation_skipped: true plus a warning field. NO validation, NO workflow check, NO schema cache. Use when no validated tool covers your use case; prefer the typed tools whenever possible.

News & forums (2) — v0.5

  • redmine_list_news(project="", limit=25, offset=0) — paginated news feed. Empty project for the global feed; pass an id or slug for the per-project feed at /projects/{id}/news.json.

  • redmine_list_messages(board_id, limit=25, offset=0) — forum messages on a specific board. A 404 typically means the boards module isn't enabled on the parent project.

Related MCP server: Redmine MCP Server

Install

pip install redmine-mcp-workflows

Or for development:

git clone https://github.com/avicennasis/redmine-mcp-workflows
cd redmine-mcp-workflows
python3 -m venv .venv
.venv/bin/pip install -e .[dev]

Register with Claude Code

claude mcp add-json -s user redmine '{
  "command": "/path/to/.venv/bin/redmine-mcp",
  "env": {
    "REDMINE_URL": "https://redmine.example.com",
    "REDMINE_API_KEY": "your-api-key"
  }
}'

Or for Claude Desktop, add to claude_desktop_config.json:

{
  "mcpServers": {
    "redmine": {
      "command": "/path/to/.venv/bin/redmine-mcp",
      "env": {
        "REDMINE_URL": "https://redmine.example.com",
        "REDMINE_API_KEY": "your-api-key"
      }
    }
  }
}

Configuration

Variable

Default

Purpose

REDMINE_URL

http://127.0.0.1:8281

Redmine base URL. The default loopback is convenient for setups behind a reverse proxy that filters X-Redmine-API-Key.

REDMINE_MCP_ALLOWED_HOSTS

(empty: any)

Optional comma-separated hostname allow-list checked before authenticated clients are created. Entries omit schemes and ports.

REDMINE_API_KEY

(none)

API key.

REDMINE_OAUTH_TOKEN

(none)

OAuth2 bearer token (Doorkeeper, Redmine 6.1+). When set, sent as Authorization: Bearer <token> and takes precedence over the API key.

REDMINE_MCP_READ_ONLY

false

Set true to disable write tools.

REDMINE_MCP_CACHE_DIR

platform user-cache dir

Override for the SQLite cache location.

REDMINE_MCP_CACHE_TTL

86400 (24h)

Per-entry TTL in seconds.

REDMINE_MCP_MAX_RESPONSE_BYTES

0 (unlimited)

Maximum serialized tool-response size in bytes. Oversized responses return a bounded truncation envelope.

REDMINE_HEADERS

(empty)

Extra HTTP headers, comma-separated (e.g., Authorization: Bearer ...).

REDMINE_MCP_ALLOWED_DIRECTORIES

/tmp

Comma-separated paths that redmine_upload_attachment may read from.

REDMINE_MCP_HELD_FIELD_ID

(none)

Numeric id of the Held custom field. Pin it when the field is renamed/localized, otherwise it is matched by the exact English name.

REDMINE_MCP_HELD_UNTIL_FIELD_ID

(none)

Numeric id of the Held Until custom field.

REDMINE_MCP_DIFFICULTY_FIELD_ID

(none)

Numeric id of the Difficulty custom field.

REDMINE_MCP_LOG_LEVEL

INFO

stdlib logging level.

Text formatting in notes

Redmine renders issue descriptions and journal notes using a text formatter — Markdown on most modern instances. This means **bold**, ## headings, | col | col | tables, and - list items all render correctly in note text.

Important for MCP callers: when composing multi-line notes, the note parameter must contain actual newline characters in the JSON string value. Do not use literal two-character \n escape sequences — they get double-escaped and stored as visible \n text instead of line breaks. If your notes look like a single paragraph with visible \n markers, this is the cause.

Correct (actual newlines in the JSON string):

{"note": "## Summary\n\nDone:\n- Fixed the auth bug\n- Updated tests"}

Wrong (literal backslash-n sequences — renders as one line with visible \n):

note = "## Summary\\nDone:\\n- Fixed the auth bug\\n- Updated tests"

Prompt-injection boundary tags

Redmine text is attacker-influenceable, so read responses wrap user-authored fields (description, notes, comments, summary, text, content) in <redmine_user_content> … </redmine_user_content> to mark them as data. Writes strip those exact tags again — whether they wrap the whole value or appear inside it as a quoted excerpt — so a read → edit → write-back never stores them in Redmine. Look-alikes (other case, attributes, HTML-escaped) are left alone.

How workflow validation works

When Claude calls redmine_update_issue(id=42, status="Closed"):

  1. Server fetches issue 42's current state.

  2. Looks up the workflow row (tracker_id, current_role, current_status, "Closed") in the schema cache.

  3. If the transition isn't allowed, returns:

    {
      "error": "workflow_transition_disallowed",
      "tracker": "Bug",
      "from_status": "In Progress",
      "to_status": "Closed",
      "user_role": "Developer",
      "hint": "Workflow requires status to pass through 'Resolved' first.",
      "allowed_next_states": ["Resolved", "Reopened"]
    }
  4. Otherwise sends the PUT.

Same pattern applies to custom fields (rejects unknown fields and regex/format violations) and required fields (rejects creates that miss required-and-empty fields).

Differences from other Redmine MCP servers

There are several others — most notably jztan/redmine-mcp-server (55 tools, comprehensive, no validation), @onozaty/redmine-mcp-server (TypeScript, Zod schemas), runekaagaard/mcp-redmine (generic OpenAPI passthrough). All are good projects.

redmine-mcp-workflows differs by validating before sending — 92 tools with a schema-aware validation layer that prefers helpful errors over raw API passthrough.

License

MIT — see LICENSE.

Contributing

See CONTRIBUTING.md for dev setup, testing conventions, and PR flow.

Available Tools

92 tools
redmine_activity_feedA

Recent project activity across issues, news, wiki, forums, time and files.

Redmine's /projects/:id/activity endpoint is not API-usable (no JSON; the Atom feed requires a web session), so this tool synthesizes the feed from the per-resource REST endpoints and merges the events by timestamp.

Args: project: numeric id or identifier slug. from_date / to_date: optional YYYY-MM-DD bounds (both inclusive). activity_types: optional subset of issues, news, wiki, forums, time_entries, files. Empty = all. Accepts a list or a comma-separated string. limit: cap on merged events returned (1-500). max_per_source: cap on rows fetched from each source before merging.

Returns {project, project_id, from, to, activity_types, count, truncated, events, sources}. Each event is {type, timestamp, title, author?, description?, url?, ...}. sources records the per-source row count, or an error when that source was unavailable — one failed source never fails the feed.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
projectYes
to_dateNo
from_dateNo
activity_typesNo
max_per_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and largely succeeds: it discloses that the feed is synthesized across REST endpoints, merged by timestamp, and that a single failed source never fails the feed (errors surface per-source in 'sources'). It does not mention auth requirements, rate limits, or whether 'truncated' implies pagination continuation.

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?

Front-loads the one-line purpose and the design rationale before diving into Args and Returns. It is on the longer side, but given 0% schema coverage and a complex aggregation behavior, nearly every sentence earns its place.

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

Completeness5/5

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

Complete for a complex aggregation tool: it explains what is returned (project, bounds, count, truncated, events, sources), documents the event shape, and covers the partial-failure edge case. An output schema also exists, so return-value explanation is a bonus rather than a gap.

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 coverage is 0%, so the description must compensate, and it does for every parameter: project (id or slug), from_date/to_date inclusive YYYY-MM-DD, activity_types subset with empty=all and list-or-CSV acceptance, limit 1-500, and max_per_source as the pre-merge per-source row cap. This adds real meaning far beyond the bare schema.

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

Purpose5/5

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

States a specific verb+resource: it 'synthesizes the feed' from per-resource REST endpoints and 'merges the events by timestamp' for recent project activity across issues, news, wiki, forums, time and files. This is clearly distinguishable from the per-resource siblings like redmine_list_news or redmine_list_time_entries because it produces a merged cross-resource timeline.

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

Usage Guidelines4/5

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

Explains a strong usage rationale: Redmine's native /projects/:id/activity endpoint is not API-usable, so this tool exists to provide that aggregate view. However, it does not explicitly contrast when to prefer this merged feed over the individual per-resource list tools, leaving that routing decision to inference.

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

redmine_add_commentA

Append a comment (journal entry) to an existing issue.

Args: issue_id: numeric Redmine issue id. note: comment body. Empty/whitespace-only notes are rejected client-side. Use actual newline characters for multi-line notes, not backslash-n escape sequences (literal \n gets stored as visible text, not a line break). Redmine renders notes as Markdown — headings, bold, tables, and lists all work when separated by blank lines. private: if True, mark as a private journal (visible only to users with the view_private_notes Redmine permission).

Honors REDMINE_MCP_READ_ONLY. Direct PUT — no pre-fetch, no workflow check (comments don't change status).

With quiet=True a successful result is reduced to ids + status (bulk: compact per-item rows + summary) instead of the full issue JSON. Errors are never reduced.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYes
quietNo
privateNo
issue_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so richly: empty notes rejected client-side, backslash-n stored literally, Markdown rendering rules, private visibility gated by the view_private_notes permission, REDMINE_MCP_READ_ONLY honored, and quiet-mode output reduction. These are exactly the mutating-operation and permission traits an agent needs.

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?

Purpose is front-loaded in the first line, then Args and behavioral notes follow in a logical order. The content is dense but nearly every sentence adds actionable detail; slightly verbose in the newline/Markdown guidance but justified by the 0% schema coverage.

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

Completeness5/5

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

With an output schema present, return values need not be described, and the quiet-mode note still covers output shape. The description is complete across params, permissions, environment flags, and side effects for a 4-param mutation tool with no annotations.

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 and it does for all four parameters: issue_id (numeric Redmine id), note (empty rejected, newline and Markdown conventions), private (view_private_notes permission), and quiet (reduced ids+status output). This is meaning well beyond the bare type/title schema.

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

Purpose5/5

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

States a specific verb and resource ('Append a comment (journal entry) to an existing issue') and immediately distinguishes itself from status-changing siblings ('comments don't change status'). An agent can tell this apart from redmine_update_journal or redmine_close_issue without opening a schema.

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

Usage Guidelines3/5

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

Implicitly contextualizes usage by noting it is a direct PUT with no pre-fetch or workflow check, and describes the private/quiet options. However, it never routes the agent explicitly to alternatives (e.g., redmine_update_journal for editing an existing note) or states when-not to use this tool. Usage is implied rather than spelled out.

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

redmine_add_group_userC

Add a user to a group.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
group_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

The description mentions it honors REDMINE_MCP_READ_ONLY, which provides a behavioral constraint. However, with no annotations provided, the description should disclose more, such as permissions required, side effects, or error conditions. The read-only note is helpful but insufficient.

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 very concise at two sentences, with no unnecessary words. The purpose is front-loaded, and the behavioral note follows efficiently.

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?

With a simple tool and an output schema, the description need not explain return values, but it lacks essential context such as how to obtain valid user_id and group_id, and whether adding a duplicate user causes an error. The zero schema coverage and missing usage guidance make it incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/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 explain the parameters. It does not define user_id or group_id, leaving the agent without context on what values to provide or where to find them.

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

Purpose5/5

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

The description clearly states 'Add a user to a group,' which is a specific verb and resource. This distinguishes it from sibling tools like redmine_remove_group_user and redmine_create_group.

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?

There is no guidance on when to use this tool versus alternatives. No mention of prerequisites (e.g., whether the group and user must exist) or when not to use it.

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

redmine_add_membershipA

Add a member to a project.

Args: project_id: project id or slug. user_id: user or group id to add. role_ids: list of role ids to assign (required, non-empty).

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
role_idsYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/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. It mentions the read-only flag but does not disclose other behavioral traits such as whether the action is reversible, error handling, or side effects beyond basic mutation.

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 extremely concise: one sentence for purpose, then a compact args list, and one line for the read-only flag. Every sentence adds value with no 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?

Given no annotations and the presence of an output schema, the description covers purpose, parameters, and a behavioral constraint. However, it does not describe return values or error conditions, leaving some gaps for a mutation tool.

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?

Schema description coverage is 0%, so the description compensates by explaining each parameter: project_id (id or slug), user_id (user or group id), role_ids (list of role ids, required non-empty). This adds meaningful context beyond the schema's type-only fields.

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

Purpose5/5

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

The description states 'Add a member to a project,' which is a clear, specific verb+resource. It distinguishes from siblings like redmine_remove_membership and redmine_update_membership.

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

Usage Guidelines3/5

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

The description includes parameter requirements (role_ids is required and non-empty) and notes the REDMINE_MCP_READ_ONLY constraint, but it does not provide guidance on when to use this tool versus alternatives like redmine_add_group_user.

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

redmine_add_relationA

Create a relation between two issues.

Args: issue_id: source issue. target_issue_id: the other end of the relation. relation_type: one of relates, blocks, blocked, duplicates, duplicated, precedes, follows, copied_to, copied_from — or a recognized alias (related_to, blocked_by, duplicate_of, duplicated_by, copy_of). delay: only meaningful for precedes / follows — number of days between the issues' due dates. 0 to omit.

Honors REDMINE_MCP_READ_ONLY. Cross-project relations require Redmine's cross_project_issue_relations setting to be enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
delayNo
issue_idYes
relation_typeYes
target_issue_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It reveals that the tool honors a read-only flag and that the delay parameter is only meaningful for certain relation types. This gives good insight into behavior, though it omits details on failure modes or idempotency.

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 structured with clear parameter explanations and uses bullet-like formatting. It is slightly verbose due to the extensive listing of relation types, but every sentence adds necessary information.

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

Completeness4/5

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

Given the presence of an output schema, return values are covered. Parameters are thoroughly explained. However, common error conditions and authentication requirements are not mentioned, which would be helpful for completeness.

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 input schema has 0% description coverage, yet the description explains each parameter in depth: issue_id, target_issue_id, relation_type with a full list of valid values and aliases, and delay with its specific meaning for precedes/follows. This adds substantial value beyond the schema.

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

Purpose5/5

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

The description clearly states 'Create a relation between two issues' and specifies the source issue, target issue, relation type, and delay. This distinguishes it from sibling tools like redmine_remove_relation.

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

Usage Guidelines4/5

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

Provides context by mentioning that it honors REDMINE_MCP_READ_ONLY and that cross-project relations require a specific Redmine setting. However, it does not explicitly state when not to use this tool vs alternatives like redmine_set_parent_issue.

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

redmine_add_watcherA

Add a user as a watcher of an issue.

Args: issue_id: numeric Redmine issue id. user_id: numeric user id to add to the watcher list.

Idempotent on the Redmine side. Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
issue_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

The description reveals that the tool is idempotent on the Redmine side and honors the REDMINE_MCP_READ_ONLY flag. Since no annotations are provided, this behavioral information is valuable and goes beyond what the schema offers.

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 extremely concise and well-structured: a clear one-sentence purpose, blank line, then parameter descriptions and additional behavioral notes. Every sentence adds value without unnecessary verbosity.

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

Completeness4/5

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

For a simple two-parameter tool, the description covers purpose, parameters, idempotency, and read-only behavior. With an output schema present, return values are not needed. However, it does not mention error behavior (e.g., if issue not found) or authentication requirements.

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 clearly explains both parameters: 'issue_id' as 'numeric Redmine issue id' and 'user_id' as 'numeric user id to add to the watcher list'. This adds meaning beyond the schema's titles and compensates for the 0% schema description coverage.

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

Purpose5/5

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

The description clearly states 'Add a user as a watcher of an issue', specifying the verb 'add', the resource 'watcher', and the context 'issue'. This distinguishes it from sibling tools like 'remove_watcher' and 'list_watchers'.

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

Usage Guidelines3/5

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

The description mentions idempotency and read-only mode but does not provide explicit guidance on when to use this tool versus alternatives. It relies on the name and basic description to imply usage context. No 'when not to use' or alternatives listed.

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

redmine_archive_projectA

Archive a project (Redmine 5.0+). Reversible via unarchive.

Args: project_id: numeric id or identifier slug.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations provided. The description discloses reversibility and honors read-only flag, but does not detail side effects or data changes.

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?

Concise: two sentences for purpose and parameter, no unnecessary text.

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

Completeness4/5

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

Adequate for a one-parameter tool with output schema. Covers version, reversibility, and a configuration note.

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?

Schema coverage is 0%, so description compensates by specifying 'numeric id or identifier slug' for project_id, adding meaning beyond the string type.

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

Purpose5/5

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

The description clearly states the tool archives a project, specifies the Redmine version (5.0+), and notes reversibility. It distinguishes from siblings like 'delete' or 'unarchive'.

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

Usage Guidelines3/5

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

Mentions reversibility and the read-only flag, but does not explicitly provide when-to-use vs alternatives or prerequisites.

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

redmine_assign_issue_to_versionA

Assign (or clear) an issue's target version.

Args: issue_id: numeric issue id. version_id: numeric version id; pass 0 to clear.

Thin wrapper over redmine_update_issue that sets fixed_version_id. Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYes
version_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description bears the full burden. It discloses that the tool is a thin wrapper over `redmine_update_issue` and honors a read-only flag. It does not describe any side effects, permissions required, or the return value (though output schema exists). The disclosure is adequate but could be more comprehensive.

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 very concise, using a structured format with Args section. Every sentence adds value: defining the action, explaining parameters, noting the wrapper relationship, and mentioning the read-only flag. No redundancy or fluff.

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

Completeness4/5

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

Given the simplicity of the tool (2 params) and the presence of an output schema (not shown), the description covers the essential behavior: assignment, clearing, wrapper context, and read-only respect. It could additionally mention error conditions or expected output, but overall it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

The input schema has 0% description coverage, so the description must compensate. It clarifies both parameters: `issue_id` is numeric, `version_id` is numeric and passing 0 clears the version. This adds essential meaning beyond the schema's type/title. It does not explain where to find `issue_id` or `version_id`, but the context is sufficient.

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

Purpose5/5

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

The description clearly states the action: 'Assign (or clear) an issue's target version.' It specifies the resource (issue) and the field (target version). It also distinguishes itself from the sibling tool `redmine_update_issue` by noting it's a thin wrapper that specifically sets `fixed_version_id`.

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

Usage Guidelines4/5

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

The description explains when to pass `version_id` as 0 to clear the version, and notes that it honors `REDMINE_MCP_READ_ONLY`, indicating a read-only mode. However, it does not explicitly state when this tool should be used over the more general `redmine_update_issue` or when not to use it.

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

redmine_bulk_closeA

Close many issues in one call (with optional shared note).

Args: issue_ids: list of numeric issue ids (≤ 100 per call). note: optional shared closing comment (becomes a journal on each). stop_on_error: if True, halt on the first workflow-blocked or otherwise-failed closure.

Returns {total, succeeded, failed, skipped}. Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
issue_idsYes
stop_on_errorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

No annotations provided, so description must cover behavioral traits. It explains stop_on_error behavior and honors REDMINE_MCP_READ_ONLY flag, indicating read-only mode may prevent changes. Describes return format. Missing details on destructive nature or permanence.

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?

Description is short, well-structured with Args and returns. Every sentence adds value. No unnecessary text.

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

Completeness5/5

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

Given 3 parameters and an output schema, the description covers core behavior, input constraints, error handling, and read-only awareness. Enough for an agent to use correctly.

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 has 0% description coverage. Description adds meaning for all parameters: issue_ids (list of numeric IDs, ≤100), note (optional shared comment), stop_on_error (halt on failures). This compensates fully for the schema gap.

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

Purpose5/5

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

Description clearly states the action (close), the resource (issues), and the scope (many in one call). It distinguishes from sibling tools like redmine_close_issue (single) and redmine_bulk_update_issues (different action).

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

Usage Guidelines4/5

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

Implied usage for bulk closing issues with optional notes and error handling. Mentions limit of ≤100 IDs per call. Lacks explicit when-not-to-use, but context is clear.

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

redmine_bulk_create_issuesA

Bulk-create issues with subject idempotency.

Args: issues: list of issue spec dicts (≤ 100 per call). Each spec requires project, tracker, subject; optional fields match redmine_create_issue (description, priority, status, assigned_to_id, difficulty, due_date, start_date, done_ratio, custom_fields). on_duplicate: "skip" (default) pre-checks each subject within its project and reports existing matches as skipped with duplicate_of; "fail" reports duplicates as failures; "create_anyway" skips the pre-check entirely. pacing_seconds: sleep between POSTs (default 50ms — empirically the floor for not tripping Redmine's per-issue rate cap on small VMs). Set 0 to disable. Only used when concurrency=1. stop_on_error: True to bail at first failure; remainder lands in skipped_for_stop_on_error (sequential) or skipped (concurrent). concurrency: parallel in-flight creates (default 1 = sequential). Values > 1 use a bounded asyncio.Semaphore fan-out and are mutually exclusive with pacing — leave pacing_seconds at its default (or 0). A 5xx from any item aborts the batch.

Returns {"results": [{subject, status, id?, duplicate_of?, error?, hint?}], "summary": {total, created, skipped, failed}}. Honors REDMINE_MCP_READ_ONLY.

With quiet=True a successful result is reduced to ids + status (bulk: compact per-item rows + summary) instead of the full issue JSON. Errors are never reduced.

ParametersJSON Schema
NameRequiredDescriptionDefault
quietNo
issuesYes
concurrencyNo
on_duplicateNoskip
stop_on_errorNo
pacing_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations available, the description carries the full behavioral burden and does so extensively: it explains duplicate pre-check semantics, rate-limit pacing rationale, stop-on-error destinations, concurrency mutual exclusion with pacing, 5xx batch aborts, read-only environment honoring, and quiet-mode return reduction.

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 long but appropriately so for a six-parameter bulk operation with complex concurrency and idempotency semantics. It is front-loaded with the core purpose and then structured into Args and Returns sections, with every sentence conveying operational detail.

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

Completeness5/5

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

Given no annotations, six parameters, 0% schema description coverage, and an output schema, the description is complete: it covers purpose, parameter semantics, return summary, error handling, pacing, concurrency interactions, and environment restrictions. Nothing essential for correct invocation appears missing.

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, and it does so fully: it documents all six parameters, required issue spec fields, allowed duplicate modes, pacing behavior, concurrency constraints, and quiet-mode effects. This is far beyond what the schema provides.

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

Purpose5/5

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

The description starts with a specific verb and resource: 'Bulk-create issues with subject idempotency.' It immediately distinguishes this tool from single-issue creation and bulk updates by emphasizing bulk creation and the subject-based idempotency mechanism.

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

Usage Guidelines4/5

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

The description makes clear this is for bulk creation with detailed duplicate-handling modes and a maximum of 100 issues per call. It references redmine_create_issue for matching optional fields, but it does not explicitly state when to prefer this tool over single-issue creation or when not to use it.

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

redmine_bulk_create_time_entriesA

Create several time entries in one call (≤ 100).

Args: time_entries_specs: list of dicts; each accepts the same fields as redmine_create_time_entry (hours required, rest optional). pacing_seconds: sleep between POSTs (default 50ms) to avoid the per-issue rate cap; 0 disables. stop_on_error: stop at the first failure; the remainder is reported under skipped_for_stop_on_error.

Returns {results, summary: {total, created, failed, skipped}, skipped_for_stop_on_error}. Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
stop_on_errorNo
pacing_secondsNo
time_entries_specsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the burden well: it discloses the per-issue rate cap and how pacing_seconds addresses it, that 0 disables pacing, how stop_on_error truncates the run and surfaces skipped_for_stop_on_error, and that REDMINE_MCP_READ_ONLY is honored. It does not state whether already-created entries are rolled back on failure or what permissions are required beyond the read-only flag.

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?

Front-loaded with the purpose, then parameter docs, then return shape — everything earns its place. The Returns sentence is mildly redundant given an output schema exists, but it is short.

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

Completeness4/5

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

Covers params, pacing behavior, failure semantics and env-var gating for a multi-write tool, and the return structure is at least summarised. Missing only transactional/atomicity guarantees and permission requirements, which an agent would need before a large batch write.

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?

Schema description coverage is 0%, and the description fully compensates: it defines all three params including types, the 50ms default and the 0-disables sentinel for pacing_seconds, plus the ``hours`` required field. The nested dict schema is delegated to redmine_create_time_entry rather than spelled out, which leaves a small gap.

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

Purpose5/5

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

States a specific verb and resource with scope: "Create several time entries in one call (≤ 100)." The batch framing plus the 100-item cap separates it from the singular redmine_create_time_entry without requiring a schema read.

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

Usage Guidelines4/5

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

Gives clear qualifying context: batch creation, hard cap of 100, and the fields mirror redmine_create_time_entry. It does not explicitly say to prefer redmine_create_time_entry for a single entry or what to do past the 100 cap, so it falls short of naming alternatives and exclusions.

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

redmine_bulk_update_issuesA

Apply the same field updates to many issues in one call.

Args: issue_ids: list of numeric issue ids (≤ 100 per call). subject, description, status, priority, assigned_to_id, notes: same semantics as redmine_update_issue — at least one must be supplied. custom_fields: raw custom-field entries (list of {"id": N, "value": "..."} dicts). Merged into each issue's PUT. difficulty: convenience for the Difficulty custom field ("Unclassified" / "Easy" / "Normal" / "Hard"). held: reason string applied as the hold on every issue in the batch (e.g. "waiting on upstream patch"). Empty (default) means unchanged. Booleans are rejected with held_reason_required — a bare flag records nothing and would overwrite every existing reason in the batch at once. clear_held: set True to remove the hold from every issue in the batch. Mutually exclusive with a non-empty held. held_until: ISO-8601 date for the Held Until custom field. Optional and independent of held. due_date: ISO-8601 date to set on every issue. start_date: ISO-8601 date to set on every issue. done_ratio: 0-100 progress percent; -1 (default) means unchanged. stop_on_error: if True, halt at the first failure (remaining ids land in skipped); otherwise best-effort across the whole batch. concurrency: parallel in-flight PUTs (default 1 = sequential). Values > 1 use a bounded asyncio.Semaphore fan-out; a 5xx from any item aborts the batch (unstarted ids land in skipped).

Returns {total, succeeded, failed, skipped}. Honors REDMINE_MCP_READ_ONLY. Redmine has no batch endpoint — items are applied concurrency at a time.

ParametersJSON Schema
NameRequiredDescriptionDefault
heldNo
notesNo
statusNo
subjectNo
due_dateNo
priorityNo
issue_idsYes
clear_heldNo
difficultyNo
done_ratioNo
held_untilNo
start_dateNo
concurrencyNo
descriptionNo
custom_fieldsNo
stop_on_errorNo
assigned_to_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so thoroughly: stop_on_error vs. best-effort with unstarted ids landing in 'skipped', concurrency fan-out via a bounded semaphore, a 5xx aborting the batch, empty-vs-unchanged semantics for 'held' and done_ratio=-1, the reason-string requirement that rejects booleans with held_reason_required, the clear_held/held mutual exclusion, and honoring REDMINE_MCP_READ_ONLY. These are exactly the mutation, partial-failure, and auth behaviors an agent needs and cannot derive from the schema.

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?

Front-loaded with a one-line summary followed by an Args block, and given 17 parameters the length is largely justified. A few lines are verbose (the held rationale spans multiple clauses) but each sentence carries operational information rather than filler.

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

Completeness5/5

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

For a complex bulk mutation with no annotations and a 0%-coverage schema, this is complete: partial-failure handling, concurrency semantics, error/abort behavior, read-only env gating, and the note that Redmine has no batch endpoint are all present. The return shape is restated and an output schema exists, so nothing an agent needs to call it correctly is missing.

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% across 17 parameters, so the description must compensate and does: it caps issue_ids at 100, gives custom_fields the {'id': N, 'value': '...'} shape, enumerates difficulty values, documents default-equivalents (held empty = unchanged, done_ratio -1 = unchanged), and explains the date params. Nearly every parameter receives meaning beyond its bare type.

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

Purpose5/5

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

The opening sentence states a specific verb and resource with scope: 'Apply the same field updates to many issues in one call.' This cleanly distinguishes it from the single-issue sibling redmine_update_issue and from redmine_bulk_create_issues without the agent needing to open any schema.

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

Usage Guidelines4/5

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

The bulk framing implies when to reach for it over redmine_update_issue, and it anchors semantics by referencing that sibling ('same semantics as redmine_update_issue'). It also states the precondition that at least one updatable field must be supplied. It stops short of an explicit 'use X for one issue, Y for many' routing sentence, so it is clear context rather than explicit alternatives.

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

redmine_close_issueA

Move an issue to its first is_closed status (defaults to id 5).

Args: issue_id: numeric Redmine issue id. note: optional closing comment (becomes a journal entry). Use actual newline characters for multi-line notes, not backslash-n escape sequences. Redmine renders notes as Markdown (headings, bold, tables, lists all work).

On a workflow-disallowed direct closure, the response is repackaged with a closure-specific hint listing the allowed next states. Honors REDMINE_MCP_READ_ONLY.

With quiet=True a successful result is reduced to ids + status (bulk: compact per-item rows + summary) instead of the full issue JSON. Errors are never reduced.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
quietNo
issue_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses the default status id, that the note becomes a journal entry rendered as Markdown, that workflow-disallowed closures return a repackaged response with allowed next states, that REDMINE_MCP_READ_ONLY is honored, and exactly how quiet=True changes the result (ids+status, compact bulk rows; errors never reduced). These are behaviors an agent cannot get from the schema.

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?

Front-loads the core action, then args, then edge-case behavior; every block is scannable and earns its place, including the newline-escape warning. Mild redundancy between the Args block and the later quiet paragraph keeps it from being maximally tight.

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

Completeness5/5

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

An output schema exists so return-shape explanation is not required, yet the description still explains the quiet-mode reduction and the error path. Combined with the workflow-disallowed and read-only disclosures, an agent has everything needed to invoke this correctly without opening other tools.

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 coverage is 0% and titles are bare, so the description must compensate and largely does: it defines issue_id as a numeric Redmine issue id, note as an optional journal comment with a concrete newline-escape warning and formatting semantics, and quiet as an output-shaping switch. Only quiet's 'bulk' phrasing is slightly ambiguous for a single-issue tool, but coverage is far beyond baseline.

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?

States a specific verb and resource ('Move an issue to its first is_closed status') and even pins the default target status id 5, which is more precise than a generic 'close issue'. It does not differentiate itself from sibling mutation tools like redmine_update_issue or redmine_bulk_close, so an agent must infer the boundary from the name alone.

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

Usage Guidelines3/5

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

Usage context is implied: close a single issue, optionally with a journal comment. There is no explicit guidance on when to prefer this over redmine_update_issue (status change) or redmine_bulk_close (multiple issues), and no prerequisite/ordering advice. Adequate but leaves the routing decision to inference.

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

redmine_copy_issueA

Duplicate an issue, with optional field overrides and link copies.

Redmine has no REST copy endpoint, so the copy is reconstructed from a read of the source issue and a normal create; the requested links (subtasks / watchers / relations) are replayed afterwards.

Args: issue_id: source issue id (required). project / tracker: copy into a different project/tracker. Empty = inherit from the source. subject: override the copied subject. Empty = "Copy of <source>". priority / description / assigned_to_id / due_date / start_date / done_ratio / custom_fields: per-field overrides; omitted fields are inherited from the source. copy_subtasks: recursively copy subtasks (depth-capped). copy_watchers: re-add the source's watchers to the copy. copy_relations: recreate the source's issue relations on the copy.

Returns {"issue", "copied": {watchers, relations, subtasks}, "source"}. Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo
subjectNo
trackerNo
due_dateNo
issue_idNo
priorityNo
done_ratioNo
start_dateNo
descriptionNo
copy_subtasksNo
copy_watchersNo
custom_fieldsNo
assigned_to_idNo
copy_relationsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so well: it discloses the read-and-create reconstruction strategy, replay of links afterward, depth-capped subtask copying, and that REDMINE_MCP_READ_ONLY is honored. This is unusually transparent for a mutation 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?

Front-loads the purpose in one line, then uses structured Args and Returns sections. Given 14 undocumented parameters, the length is justified and every sentence conveys operational or argument semantics.

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

Completeness5/5

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

Despite having no annotations and 0% schema descriptions, the description covers purpose, implementation approach, parameter defaults, side effects, and read-only behavior. The return summary is technically redundant with the output schema but remains useful and does not detract.

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 coverage is 0% across 14 parameters, so the description must supply all semantics. It documents every parameter and default behavior, including empty project/tracker meaning inherit, omitted overrides inheriting from source, and empty subject becoming 'Copy of <source>'.

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

Purpose5/5

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

States a specific verb and resource ('Duplicate an issue') and scopes the operation to optional field overrides and link copies. This clearly distinguishes it from sibling tools like redmine_create_issue, which create new issues rather than reconstructing an existing one.

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

Usage Guidelines3/5

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

Implies usage when an issue needs duplicating and explains the implementation constraint (no REST copy endpoint). However, it does not explicitly compare this tool to alternatives such as redmine_create_issue or state when not to use it, leaving the choice of tool to inference.

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

redmine_create_groupA

Create a group (admin only).

Args: name: required group name. user_ids: optional list of user ids as initial members.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
user_idsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Description adds 'Honors REDMINE_MCP_READ_ONLY' and 'admin only', which are behavioral traits. However, it does not disclose error handling, idempotency, or return behavior. No annotations exist to supplement.

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?

Very concise: one sentence description plus bullet list of arguments. No unnecessary words.

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

Completeness4/5

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

Given low complexity and existence of output schema, description covers permissions, parameters, and a behavioral flag. Missing error handling but sufficient for a simple create tool.

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?

Schema has 0% description coverage. Description clarifies that 'name' is required and 'user_ids' is an optional list of initial members, adding meaning beyond the schema types.

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

Purpose5/5

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

Description clearly states 'Create a group' with verb and resource, and 'admin only' adds scope. Distinguishes from sibling tools like redmine_update_group or redmine_delete_group.

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

Usage Guidelines3/5

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

Implies usage when creating a new group (admin only), but lacks explicit alternatives or when-not-to-use instructions. No mention of when to use redmine_update_group instead.

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

redmine_create_issueA

Create an issue with cache-aware id resolution.

Args: project: numeric id or identifier slug (e.g. "claudecode"). tracker: numeric id or name (e.g. "Bug"). subject: required, must be non-empty. description: optional issue body. priority: optional id or name (e.g. "High"); defaults to tracker default when empty. status: optional id or name. Most fleets force initial status via workflow; this is rarely needed. assigned_to_id: optional Redmine user id; 0 means unassigned. difficulty: optional engagement-mode level for the global Difficulty custom field. Values: "Unclassified" / "Easy" / "Normal" / "Hard". When omitted, the field default-fills with "Unclassified" so auto-callers don't trip the required-field validation. Silently no-ops on fleets that don't have a Difficulty field configured. held: optional reason string explaining why the issue is held (e.g. "waiting on upstream patch"). A held issue cannot be closed. Empty (default) leaves the Held field unset. This is free text a human reads later to decide whether the hold still applies, so a bare flag is not accepted. held_until: optional ISO-8601 date ("2026-10-01"). Sets the Held Until custom field. Optional and independent of held — many holds have no knowable end date ("until upstream ships a fix"), so a reason with no date is a normal, valid state. Empty leaves it unset. due_date: optional ISO-8601 date ("2026-05-17"). Empty leaves it unset. start_date: optional ISO-8601 date. Empty leaves it unset (Redmine defaults to the creation date). done_ratio: optional 0-100 progress percent. -1 (sentinel) means unset; 0 is explicit "no progress yet." custom_fields: optional list of {"id": <int>, "value": <str>} entries for arbitrary custom fields. Accepts either a Python list (preferred — Claude can pass it natively) or a JSON- encoded string. Empty string means no custom-field changes beyond what difficulty sets.

Returns the created issue or a structured validation error. Honors REDMINE_MCP_READ_ONLY.

With quiet=True a successful result is reduced to ids + status (bulk: compact per-item rows + summary) instead of the full issue JSON. Errors are never reduced.

ParametersJSON Schema
NameRequiredDescriptionDefault
heldNo
quietNo
statusNo
projectYes
subjectYes
trackerYes
due_dateNo
priorityNo
difficultyNo
done_ratioNo
held_untilNo
start_dateNo
descriptionNo
custom_fieldsNo
assigned_to_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and mostly delivers: it discloses REDMINE_MCP_READ_ONLY honoring, that held issues cannot be closed, that difficulty silently no-ops on fleets lacking the field, and that quiet reduces success output while errors are never reduced. It omits auth/permission requirements, which would complete the picture for a write tool.

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 long but front-loaded and organized as an Args block, with each entry earning its place given the 15 undocumented parameters. The one structural flaw is that quiet is explained in a trailing paragraph rather than in the Args list, breaking the established pattern.

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

Completeness5/5

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

For a 15-parameter mutation tool at 0% schema coverage, the description is unusually complete: every parameter is addressed, mutation side effects (read-only mode, held-cannot-close) are disclosed, and failure behavior ('structured validation error', errors never reduced) is stated. Since an output schema exists, return values need not be re-described.

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 carry all parameter meaning, and it does: sentinel semantics (done_ratio -1 vs 0, assigned_to_id 0 = unassigned), format examples (ISO-8601 dates, id-or-slug for project/tracker), the constraint that held must be a reason string not a bare flag, the independence of held vs held_until, and custom_fields' dual list-or-JSON-string acceptance.

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 opening line states a specific verb+resource ('Create an issue') plus the distinguishing mechanism ('cache-aware id resolution'), which cleanly separates it from redmine_update_issue, redmine_get_issue, and redmine_bulk_create_issues. It does not, however, explicitly name the bulk sibling or spell out the boundary, so sibling routing is left implicit.

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

Usage Guidelines3/5

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

There are scattered usage hints ('status... is rarely needed', 'difficulty... so auto-callers don't trip the required-field validation'), which help an agent decide which optional params to populate. But there is no explicit when-to-use-this-vs-alternatives guidance (e.g., versus redmine_bulk_create_issues) and no stated prerequisites other than the read-only env var.

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

redmine_create_issue_categoryA

Create an issue category on a project.

Args: project_id: numeric id or identifier slug. name: required category name. assigned_to_id: optional default assignee. 0 for none.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
project_idYes
assigned_to_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations provided. The description mentions 'Honors REDMINE_MCP_READ_ONLY' which gives a behavioral insight, but does not disclose other aspects like required permissions, error handling, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences and an Arg list. It front-loads the purpose and efficiently covers parameters without unnecessary text.

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

Completeness4/5

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

The description covers all parameters and the read-only behavior. An output schema exists to handle return values, so the description is adequate for a simple creation tool. Could mention success output briefly.

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?

Schema coverage is 0%, but the description adds meaning: project_id as numeric id or slug, name as required, assigned_to_id as optional with 0 meaning none. This compensates well for the lack of schema descriptions.

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

Purpose5/5

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

The description clearly states 'Create an issue category on a project,' which is a specific verb+resource. This distinguishes it from sibling tools like 'redmine_create_issue' or 'redmine_create_project.'

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

Usage Guidelines3/5

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

The description explains the tool's purpose but lacks explicit guidance on when to use it versus alternatives (e.g., redmine_update_issue_category). No when-not-to or contrast with siblings is provided.

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

redmine_create_messageA

Create a new forum topic on a board.

Args: board_id: numeric board id. subject: required topic subject. content: optional message body.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentNo
subjectYes
board_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It clearly states that the tool creates a new forum topic and mentions it honors the REDMINE_MCP_READ_ONLY environment variable, which is a behavioral trait. However, it does not disclose other behaviors like authentication requirements 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise: a single sentence followed by a clear list of parameters. No unnecessary words, and the key action is front-loaded.

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

Completeness4/5

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

The tool has an output schema, so return values need not be described. The description covers the tool's purpose, parameters, and a behavioral constraint (read-only honor). It is sufficient for a simple creation tool, though it lacks details on success/failure responses that might be in the 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 input schema has no descriptions for parameters (0% coverage), but the description lists all three parameters with functional explanations: board_id as numeric, subject as required, content as optional. This adds significant meaning beyond the schema's type and title alone.

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

Purpose5/5

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

The description 'Create a new forum topic on a board' uses a specific verb and resource, clearly indicating the tool's function. This distinguishes it from siblings like redmine_reply_message (for replies) and redmine_create_news (news items).

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

Usage Guidelines3/5

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

The description states what the tool does but does not provide guidance on when to use it over alternatives, nor does it specify prerequisites or exclusions. Usage is implied by the name and sibling list.

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

redmine_create_newsA

Create a news entry on a project.

Args: project: numeric id or identifier slug. title: required news title. summary: optional short summary. description: optional full body.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
projectYes
summaryNo
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations provided. The description does not disclose permissions, immediate effect, or whether notifications are sent. It only mentions a read-only flag, which is minimal for a creation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: six lines, front-loaded purpose, clear bullet-like listing of parameters. No unnecessary words.

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 output schema exists (though not shown), the description is adequate but misses potential constraints or validation details. Suitable for a simple creation tool but could be more complete.

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 value by clarifying that 'project' accepts numeric id or slug, and explains optional vs required fields. Covers all 4 parameters.

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

Purpose5/5

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

Description clearly states 'Create a news entry on a project.' This is a specific verb and resource, distinguishing it from sibling tools like redmine_create_issue and redmine_create_message.

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

Usage Guidelines3/5

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

Mentions that it honors REDMINE_MCP_READ_ONLY, implying it won't work in read-only mode, but does not provide explicit when-to-use or alternative comparisons like redmine_update_news.

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

redmine_create_projectA

Create a new project.

Args: name: required project display name. identifier: required URL slug (lowercase, hyphens, no spaces). description: optional project description. homepage: optional homepage URL. is_public: whether the project is publicly visible. None (omitted) uses the Redmine default (public). parent_id: optional parent project id (0 for top-level). inherit_members: if True, inherit members from parent. None (omitted) uses the Redmine default (no inheritance). tracker_ids: optional list of tracker ids to enable. enabled_module_names: optional list of modules (e.g. ["issue_tracking", "wiki", "boards"]).

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
homepageNo
is_publicNo
parent_idNo
identifierYes
descriptionNo
tracker_idsNo
inherit_membersNo
enabled_module_namesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations are absent, so the description carries the full behavioral burden. It usefully discloses that the tool honors REDMINE_MCP_READ_ONLY and clarifies the default-resolution semantics of None for is_public and inherit_members, which is real added context. However, it says nothing about required permissions, what happens on identifier collision, validation failure behavior, or side effects such as default modules/trackers being enabled.

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?

Front-loaded with the purpose in one line, then a compact per-parameter list with no filler sentences. The list is long but justified given nine undocumented parameters; only minor tightening is possible.

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

Completeness4/5

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

An output schema exists, so return values need not be described, and all nine inputs are annotated. What remains missing is operational context appropriate to a mutation tool: permission requirements and error/failure behavior. Given the output schema and full parameter coverage, the definition is nearly complete.

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% and there are 9 parameters, so the description must compensate and it does: it marks which two are required, gives the identifier format (lowercase, hyphens, no spaces), explains the None-means-Redmine-default convention for two nullable params, notes parent_id 0 means top-level, and supplies an example value for enabled_module_names. This is meaningfully more than the schema alone conveys.

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

Purpose4/5

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

The opening line states a specific verb and resource ("Create a new project"), which unambiguously distinguishes it from siblings like redmine_update_project, redmine_delete_project, and redmine_archive_project. It does not explicitly name an alternative, but the create/update/delete/archive split among siblings is self-evident from the names.

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?

There is no when-to-use or when-not-to-use guidance, no prerequisites (e.g. permission level needed to create projects), and no mention of the sibling tools an agent might confuse this with. The only routing-relevant signal is the REDMINE_MCP_READ_ONLY note, which constrains execution but does not help select this tool over alternatives.

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

redmine_create_time_entryA

Log a time entry against an issue or project.

Args: hours: required. Decimal (e.g. "2.5") or "H:MM" (e.g. "2:30"). Pre-validated client-side. issue_id: target issue. Either this or project_id is required unless REDMINE_MCP_DEFAULT_TIME_ISSUE is configured, in which case it is the fallback target. project_id: target project (when not logging against a specific issue). Ignored when issue_id is non-zero. activity: optional id or name (e.g. "Development"); resolves against the cached activity enumeration. Empty for the default. spent_on: optional YYYY-MM-DD; defaults to today server-side. comments: optional, max 1024 chars. user_id: admin-only override; otherwise current user.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursYes
user_idNo
activityNo
commentsNo
issue_idNo
spent_onNo
project_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does so well: it discloses that the tool honors REDMINE_MCP_READ_ONLY, that hours are pre-validated client-side, that activity resolves against a cached enumeration, that spent_on defaults server-side to today, and that comments cap at 1024 chars. It omits error/failure behavior and whether the entry is reversible, so it is not exhaustive.

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 summary sentence is front-loaded and each Args line earns its place by adding a distinct constraint or format. It is slightly long relative to a single-sentence ideal, but the density is justified for a seven-parameter tool.

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

Completeness5/5

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

All parameters are documented, environment-variable fallbacks and read-only mode are explained, and an output schema exists so return values need not be described. Nothing an agent needs to invoke this tool correctly is missing.

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 and it does: all seven parameters are explained with accepted formats ("2.5" or "H:MM"), defaults, mutual-exclusion rules, and permission constraints. This is meaning well beyond anything the bare schema conveys.

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

Purpose4/5

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

The opening line names a specific verb and resource ("Log a time entry") and scopes the target to an issue or project, so the agent knows exactly what operation this is. It does not explicitly differentiate itself from the close siblings redmine_bulk_create_time_entries or redmine_update_time_entry, which keeps it from a 5.

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

Usage Guidelines4/5

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

The description gives concrete selection conditions: either issue_id or project_id is required unless REDMINE_MCP_DEFAULT_TIME_ISSUE is set, project_id is ignored when issue_id is non-zero, and user_id is admin-only. It stops short of routing the agent away from sibling tools such as bulk_create_time_entries when logging many entries.

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

redmine_create_versionA

Create a version on a project.

Args: project: numeric id or identifier slug. name: required, must be unique within the project. description: optional. status: one of open / locked / closed. due_date: YYYY-MM-DD. sharing: one of none / descendants / hierarchy / tree / system. wiki_page_title: optional linked wiki page.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
statusNo
projectYes
sharingNo
due_dateNo
descriptionNo
wiki_page_titleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It indicates that the tool creates a version (mutation) and mentions 'Honors REDMINE_MCP_READ_ONLY,' which hints at a read-only gate. However, it does not detail authentication requirements, success/failure responses, or other behavioral traits like rate limiting.

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 concise and well-structured with an 'Args' header and a clear bullet-like list. Every line adds value, and there is no redundant or extraneous text.

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

Completeness4/5

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

Given the tool has 7 parameters, no annotations, and an output schema, the description covers the parameters well and mentions the read-only flag. The return value is not explained, but the output schema handles that. It could be more complete by describing error states, but it is sufficiently informative overall.

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 input schema has 0% description coverage, so the description must compensate. It thoroughly explains each parameter: project id/slug, name required uniqueness, optional description, status enum, due_date format, sharing enum, and optional wiki_page_title. This adds substantial meaning beyond the schema's basic type and title fields.

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

Purpose5/5

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

The description clearly states 'Create a version on a project.' It is a specific verb-resource pair. Among siblings like redmine_get_version, redmine_update_version, redmine_delete_version, and redmine_list_versions, this tool is uniquely identified as creation, making differentiation straightforward.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives; however, the context of sibling tools implies that this is for creating versions while others handle update, delete, or retrieval. No prerequisites or usage conditions are mentioned beyond honoring REDMINE_MCP_READ_ONLY, which is a behavioral flag.

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

redmine_create_wiki_pageA

Create a new wiki page; refuses to overwrite an existing one.

Args: project: numeric id or identifier slug. title: new wiki page title (URL-encoded automatically). text: markdown body. Empty/whitespace-only is rejected client-side. parent_title: optional parent wiki page (for hierarchy). comments: optional revision comment.

Pre-flight: GET first to confirm the page doesn't exist. If it does, returns wiki_page_already_exists with the existing version. Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
titleYes
projectYes
commentsNo
parent_titleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: pre-flight GET, rejection of empty text, existence check, error handling, and read-only flag honoring. No contradictions.

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?

Well-structured with a leading sentence and bullet-pointed args. Every sentence adds value; no redundancy or fluff.

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

Completeness5/5

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

Comprehensive for a creation tool with 5 parameters; covers all relevant aspects including pre-flight, error cases, and optional fields. Output schema exists, so return details are not needed.

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?

Despite 0% schema coverage, the description compensates by explaining each parameter's purpose, type (e.g., numeric id or slug), and special behaviors (URL encoding, markdown, optional hierarchy).

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

Purpose5/5

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

Clearly states the tool creates a new wiki page and explicitly mentions it refuses to overwrite existing ones, distinguishing it from siblings like redmine_update_wiki_page.

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

Usage Guidelines5/5

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

Provides explicit guidance on when to use (creating new pages) and when not (page already exists), including the pre-flight check and error return. Also notes the REDMINE_MCP_READ_ONLY constraint.

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

redmine_delete_groupA

Delete a group (admin only). Permanent.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

The description discloses critical behavioral traits: permanent deletion and the need for admin privileges. It also notes compliance with the REDMINE_MCP_READ_ONLY flag, which is important for agents respecting read-only modes. No annotations were provided, so the description carries the full burden and meets it well.

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 extremely concise: two sentences that pack essential information. The first sentence covers the action and constraints, and the second provides a behavioral flag. No wasted words.

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

Completeness5/5

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

The description covers all necessary aspects for a deletion tool: what it does, who can use it (admin), its effect (permanent), and a behavioral flag. An output schema exists, so return values are not needed. It is fully complete for this tool's 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?

There is only one parameter (group_id), and the description does not explicitly mention it, but the tool name and action make it obvious that the parameter identifies the group to delete. The schema provides the type and title, so the description adds little value beyond that, but the context compensates. Given low schema coverage (0%), a 4 is justified because the intent is clear.

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

Purpose5/5

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

The description clearly states 'Delete a group', providing a specific verb and resource. It distinguishes from sibling tools like redmine_create_group and redmine_update_group by its focus on deletion. The additional constraints 'admin only' and 'Permanent' add clarity.

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

Usage Guidelines4/5

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

The description includes a clear prerequisite ('admin only'), indicating when the tool is appropriate. It also notes 'Permanent' to warn about irreversibility. However, it does not explicitly mention when not to use it or suggest alternative tools for related operations (e.g., removing users from groups).

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

redmine_delete_issueA

Permanently delete an issue. Cannot be undone.

Args: issue_id: numeric Redmine issue id. confirm_destructive: must be True to proceed. Safety gate consistent with other destructive MCP tools.

Returns the deleted issue's id and subject for confirmation. Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYes
confirm_destructiveNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses the destructive, irreversible nature, the safety gate parameter, the return confirmation, and the respect for a read-only mode. This covers behavioral traits beyond what annotations could specify.

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 very concise with two introductory sentences and a clear argument list. Every sentence adds value and the main purpose is front-loaded.

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

Completeness4/5

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

The description covers purpose, parameter semantics, behavioral traits, and safety. It lacks explicit guidance on when to use this tool versus alternatives, but given the simple destructive operation and existence of an output schema, it is largely complete for an agent to invoke correctly.

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 meaning to both parameters: issue_id is clearly explained as a numeric Redmine issue id, and confirm_destructive is described as a safety gate that must be True to proceed. Since the input schema had no descriptions (0% coverage), this compensation is valuable, though it could provide more detail on issue_id format.

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

Purpose5/5

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

The description clearly states 'Permanently delete an issue' with a specific verb and resource. It distinguishes from sibling tools like redmine_delete_project or redmine_delete_group by focusing on issues.

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

Usage Guidelines3/5

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

The description mentions a safety gate (confirm_destructive) and that it honors REDMINE_MCP_READ_ONLY, providing some context. However, it does not explicitly state when to use this tool versus alternatives (e.g., close_issue) or when not to use it.

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

redmine_delete_issue_categoryA

Delete an issue category. Permanent.

Args: category_id: numeric category id. reassign_to_id: optional category id to reassign affected issues. 0 for no reassignment.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
category_idYes
reassign_to_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

The description discloses that deletion is permanent and honors a read-only mode. It also explains the reassign_to_id parameter behavior. This adds value beyond the schema and no annotations are present to contradict.

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 extremely concise with no wasted words. The purpose is front-loaded, and the parameter details are clearly structured in a list.

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

Completeness4/5

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

Given the tool's simplicity (2 params, output schema exists), the description covers the action and key parameter behavior. It lacks prerequisites or error handling, but is sufficient for a delete operation.

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 coverage, the description provides essential meaning: category_id is numeric, reassign_to_id is optional with a special value '0' for no reassignment. This clarifies usage beyond the schema types.

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

Purpose5/5

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

The description clearly states 'Delete an issue category. Permanent.' which is a specific verb+resource combination. The name itself is also clear, and it distinguishes from siblings like update or create issue category.

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 does not provide explicit guidance on when to use this tool over alternatives (e.g., update_issue_category). It mentions 'Honors REDMINE_MCP_READ_ONLY' but that is a constraint, not usage context.

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

redmine_delete_messageB

Delete a forum message. Permanent.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

The description adds two behavioral traits: deletion is permanent, and the tool honors the REDMINE_MCP_READ_ONLY flag. However, it does not disclose side effects (e.g., cascade deletion of replies), permission requirements, or error states. Since no annotations are provided, the description carries the full burden, and it partially fulfills it.

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 and a line, no fluff. It could benefit from a slightly more structured format (e.g., bullet points for key facts), but overall it is efficiently written and front-loaded with the primary action.

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 simple operation (one required param, output schema present), the description is minimally complete. It covers permanence and read-only mode, but omits details like error handling, permission requirements, or the impact on related entities. For such a straightforward tool, it is adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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

The only parameter is message_id (integer). Schema coverage is 0%, and the description does not elaborate on its meaning, format, or constraints. The parameter name is self-explanatory, but the description should at least confirm that it refers to the ID of the forum message to delete.

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

Purpose5/5

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

The description explicitly states 'Delete a forum message' with the qualifier 'Permanent,' clearly indicating the action and resource. It distinguishes from sibling tools like redmine_create_message or redmine_reply_message, which serve different purposes.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. While the tool name implies deletion, the description lacks context such as prerequisites, alternative approaches (e.g., using redmine_delete_issue for issues), or conditions under which deletion is appropriate.

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

redmine_delete_newsB

Delete a news entry. Permanent.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
news_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 must disclose behavioral traits. It only says 'Permanent' and mentions the read-only flag. It lacks details like required permissions, side effects on related data, or error conditions.

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 extremely concise at two sentences, front-loading the core action and permanence. No wasted words.

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 delete operation, the description is incomplete. It does not explain the return value (though an output schema exists), confirm deletion is irreversible beyond a single word, or cover edge cases like non-existent IDs. Given the simplicity, more context is expected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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

The input schema has one required parameter (news_id) with 0% coverage. The description does not add any meaning, format, or context for this parameter beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the verb 'Delete' and the resource 'news entry', and adds 'Permanent' to indicate irreversibility. Among sibling tools like redmine_update_news and other delete tools, it is distinct.

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

Usage Guidelines3/5

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

The description mentions 'Honors REDMINE_MCP_READ_ONLY', which gives a condition for when the tool might be disabled. However, it does not explicitly state when to use it versus alternatives or any prerequisites.

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

redmine_delete_projectA

Permanently delete a project and all its data.

Args: project_id: numeric id or identifier slug.

Destructive — cannot be undone. Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Explicitly states permanent deletion and honors read-only flag, which is critical behavioral info. No annotations present, so description carries this burden effectively.

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?

Three sentences with clear front-loading and no waste; parameter noted concisely.

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

Completeness4/5

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

Covers purpose, parameter, and behavioral traits adequately; output schema likely covers return values, so no further detail needed for this simple tool.

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?

Adds format details (numeric id or slug) to the project_id parameter, compensating for 0% schema description coverage.

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

Purpose5/5

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

The description clearly states the tool deletes a project permanently with all its data, distinguishing it from sibling tools like redmine_archive_project or redmine_delete_issue.

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

Usage Guidelines3/5

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

The description warns about destructiveness and mentions the read-only flag, but does not provide guidance on when to use this vs alternatives like redmine_archive_project.

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

redmine_delete_time_entryA

Delete a time entry. Permanent — no soft-delete in Redmine.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
time_entry_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses permanent deletion and respect for read-only configuration, which are critical behavioral traits. Additional details like permission requirements could further improve transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no redundancy. The first sentence states the core action, the second adds an important constraint. Every word is meaningful and front-loaded.

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

Completeness4/5

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

The description covers permanence and configuration awareness. However, it omits error conditions, return value (output schema exists but not described), and prerequisites like authentication or permissions. Still, it is sufficient for a simple deletion tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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

Schema description coverage is 0%, yet the tool description adds no meaning to the 'time_entry_id' parameter beyond its name. The parameter is obvious, but for a 0% coverage tool, more detail (e.g., format, source) would be expected.

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

Purpose5/5

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

The description clearly states the action (Delete) and resource (time entry), and uses 'Permanent' to emphasize irreversibility. It distinguishes well from siblings like create/update time entries.

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

Usage Guidelines4/5

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

The description mentions permanence and read-only flag, giving usage context. It implies this tool is for irreversible deletion, but does not explicitly state when not to use or alternative tools.

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

redmine_delete_versionA

Delete a version by id. Permanent — no soft-delete.

A 422 typically means the version is still referenced by issues; clear those first via redmine_assign_issue_to_version with version_id=0. Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
version_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Without annotations, the description discloses permanence, no soft-delete, the 422 error condition, and respect for read-only mode. These are key behavioral traits. It could also mention required permissions or cascade effects, but currently provides solid transparency.

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?

Three sentences: the first states core purpose, second gives error guidance, third notes read-only handling. Each sentence is essential and front-loaded. No unnecessary words.

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

Completeness4/5

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

Given the simple tool with one parameter and an output schema, the description covers purpose, permanence, error handling, and a constraint. It lacks mention of prerequisites like version existence or permissions, but is otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

The sole parameter 'version_id' is described as 'by id' in the description, but this adds minimal value beyond the schema. With 0% schema coverage, the description could elaborate more on how to obtain the id or its format.

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

Purpose5/5

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

The first sentence clearly states the action: 'Delete a version by id.' It also specifies it's permanent with no soft-delete, distinguishing it from other version operations like create or update.

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

Usage Guidelines4/5

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

The description provides guidance on handling a common error (422) and suggests a workaround using redmine_assign_issue_to_version. It also notes that it honors REDMINE_MCP_READ_ONLY. However, it does not explicitly contrast with other deletion tools or state prerequisites.

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

redmine_delete_wiki_pageA

Permanently delete a wiki page (and all its historical versions).

Args: project: numeric id or identifier slug. title: wiki page title.

Returns {"deleted": true, ...} on success or wiki_page_not_found. Honors REDMINE_MCP_READ_ONLY. No soft-delete in Redmine.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

The description discloses key behavioral traits: the deletion is permanent ('Permanently delete'), there is no soft-delete in Redmine, it honors the REDMINE_MCP_READ_ONLY environment variable, and it specifies the return format on success and failure. Since no annotations are provided, the description fully covers the behavioral burden.

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 concise and front-loaded with the main action. It uses only three short sentences plus a parameter list, with no extraneous information. Every sentence serves a purpose.

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

Completeness5/5

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

Given that the output schema exists (per context signals) and the tool is a straightforward delete operation, the description covers all necessary aspects: action, parameters, return values, and safety behavior. No additional information is needed.

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 meaningful context: 'numeric id or identifier slug' for project and 'wiki page title' for title. While brief, it provides enough information beyond the bare schema types to guide the agent.

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

Purpose5/5

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

The description clearly states 'Permanently delete a wiki page (and all its historical versions)', specifying the verb (delete), resource (wiki page), and scope (including history), which distinguishes it from sibling tools like redmine_create_wiki_page or redmine_get_wiki_page.

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 does not provide any guidance on when to use this tool versus alternatives. It does not mention prerequisites, when not to use it, or comparisons with other delete tools among siblings.

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

redmine_describe_projectA

Return a project description (trackers, modules, issue categories).

Args: project: numeric id or identifier slug (e.g. "claudecode" or "15").

Cache-backed. First call populates the cache.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

Adds caching behavior detail ('Cache-backed. First call populates the cache.') but does not explicitly state it is read-only or non-destructive, which would be helpful given no annotations.

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?

Three concise sentences front-loaded with purpose, no superfluous content.

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

Completeness5/5

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

Covers purpose, parameter format, return content, and caching; output schema provides structured details, so description is fully adequate.

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?

Schema coverage is 0%, but description fully explains the 'project' parameter with format examples (numeric id or identifier slug), adding significant meaning beyond the schema.

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

Purpose5/5

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

Clearly states it returns a project description and lists specific contents (trackers, modules, issue categories), distinguishing it from sibling CRUD and list tools.

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

Usage Guidelines4/5

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

Implies usage for retrieving a single project's details, but does not explicitly state when not to use or mention alternatives among siblings.

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

redmine_describe_trackerA

Return an enriched schema for one tracker.

Args: tracker: numeric id or name (e.g. "Bug" or "1"). include_observations: if True (default), include the learned workflow graph (allowed/disallowed transitions per role).

Includes available statuses, priorities, and — when include_observations is true — the learned workflow graph from prior API responses. Workflow knowledge is reactive: Redmine does not expose /workflows via REST, so the cache learns by observing the outcome of every status-change attempt.

ParametersJSON Schema
NameRequiredDescriptionDefault
trackerYes
include_observationsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It explains the reactive learning of workflow graph from prior API calls, a key behavioral trait. No side effects or idempotency mentioned, but adequate for a read-like 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?

Description is reasonably concise with front-loaded purpose. The explanation of reactive learning adds value but could be slightly trimmed. Overall efficient.

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

Completeness4/5

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

Given output schema exists, description doesn't need to detail return format. It covers tracked info components and learning mechanism. Some aspects like availability of statuses/priorities being static vs learned are implied but not explicit.

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 coverage is 0%, but description fully explains both parameters: tracker with example format and include_observations with default and effect. Adds meaning beyond schema by describing the learned workflow graph context.

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

Purpose5/5

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

The description clearly states the tool returns an 'enriched schema' for one specific tracker, distinguishing it from sibling tools like redmine_list_trackers. It specifies the content: available statuses, priorities, and optional workflow graph.

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

Usage Guidelines3/5

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

The description implies use for detailed tracker info but does not explicitly contrast with siblings or provide when-not-to-use guidance. No mention of alternatives like redmine_list_trackers for summary.

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

redmine_download_attachmentA

Download an attachment by id to a path-restricted location.

Args: attachment_id: numeric Redmine attachment id (visible on issue payloads at attachments[].id). save_to: target file path. Parent directory must exist and resolve under one of REDMINE_MCP_ALLOWED_DIRECTORIES (default /tmp); symlinks are resolved before checking. overwrite: if False (default), refuse to overwrite an existing file at save_to.

Validates downloaded byte count against Redmine's reported filesize before writing — short reads are surfaced as attachment_size_mismatch rather than silently saving a partial file. Read-only-safe (no Redmine writes).

ParametersJSON Schema
NameRequiredDescriptionDefault
save_toYes
overwriteNo
attachment_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses important behavioral traits: validation of downloaded byte count, surfacing short reads as 'attachment_size_mismatch', path restrictions with symlink resolution, and read-only safety. It could mention authentication or rate limits, but overall it's transparent.

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 an Args section and paragraphs. It is informative but slightly verbose; every sentence adds value. A more concise version could omit the docstring formatting, but it remains clear and organized.

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

Completeness4/5

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

Given the tool's complexity (3 parameters, output schema present but not described), the description covers primary behaviors: parameter details, validation, and safety. It lacks explicit description of return values or output format, but the mention of error surfacing partially compensates.

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%, but the description thoroughly explains each parameter: attachment_id (numeric, visible in issue payloads), save_to (path with parent directory must exist and be under allowed directories), overwrite (default false, refuses overwrite). This adds significant meaning beyond the bare schema.

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

Purpose5/5

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

The description clearly states the tool downloads an attachment by ID to a path-restricted location. It specifies the action (download), resource (attachment by id), and target (path-restricted). This distinguishes it from sibling tools like redmine_upload_attachment.

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

Usage Guidelines3/5

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

The description provides context like path restrictions and overwrite behavior but does not explicitly state when to use this tool versus alternatives. It lacks guidance on when not to use it or which sibling tools are better suited for different tasks.

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

redmine_get_groupA

Fetch a group by id.

Args: group_id: numeric group id. include: comma-separated includes: users, memberships.

Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeNo
group_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

Explicitly states 'Read-only', which is a key behavioral trait. However, with no annotations, more detail on auth or error outcomes would be beneficial. Minimal but sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with argument list. No fluff, front-loaded purpose. Highly concise and well-structured.

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

Completeness4/5

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

For a simple fetch with two params and an output schema, the description covers key aspects. Could mention return type or error handling, but output schema likely handles that.

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 coverage is 0%, but description fully explains both parameters: group_id as numeric integer, include with specific valid values (users, memberships). Adds significant value.

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

Purpose5/5

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

Clear verb 'Fetch' and resource 'group by id', distinct from siblings like redmine_get_user or redmine_list_groups.

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

Usage Guidelines4/5

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

Usage context is clear (fetch single group), but no explicit exclusions or alternative tool mentions. The name itself conveys purpose, so it's adequate.

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

redmine_get_issueA

Fetch a single issue.

Args: issue_id: numeric Redmine issue id. include: comma-separated includes (default "attachments,journals,relations,watchers"). Pass an empty string to use the default.

Read-only — no workflow validation. ``project.identifier`` is
enriched from the project cache when available.
ParametersJSON Schema
NameRequiredDescriptionDefault
includeNo
issue_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations present, the description carries the full burden and does so well: it declares the operation read-only, notes there is no workflow validation, and explains that project.identifier is enriched from the project cache when available. That is genuine behavioral context beyond the schema, though it says nothing about permissions or error 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 core purpose is front-loaded in one clause, followed by a compact args block. Every sentence adds information, though the blank-line-separated sections are slightly airier than needed for a two-parameter tool.

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

Completeness5/5

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

An output schema exists so return values need no explanation, and the description covers both parameters, the read-only safety profile, and the cache-enrichment caveat. Nothing an agent needs to call this correctly is missing.

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 entirely — and it does: issue_id is described as a numeric Redmine issue id, and include is documented with its default value plus the non-obvious rule that an empty string falls back to the default. Both parameters gain meaning the schema does not supply.

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 states a specific verb and resource ("Fetch a single issue") and the singular scope distinguishes it from list/search siblings like redmine_search_issues and redmine_list_child_issues. It does not explicitly name those alternatives, so it stops short of a 5.

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?

There is no guidance on when to reach for this tool versus redmine_search_issues, redmine_get_journals, or redmine_my_issues; usage is only implied by the word "single". The include-default note is a parameter detail, not a usage rule.

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

redmine_get_journalsA

Return the structured journal entries for an issue.

Args: issue_id: numeric Redmine issue id.

Each journal entry has id, user, created_on, notes (the comment body if any), and details (a list of field-change records). Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Declares 'Read-only' which is a behavioral trait, but no mention of auth, rate limits, or side effects. With no annotations, more context would be beneficial.

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?

Very concise, front-loaded with purpose, then parameter details. Every sentence adds value with no 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?

Given output schema exists, return values are fine, but lacks details on error handling, pagination, or ordering. Adequate but not fully comprehensive.

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 explains the 'issue_id' parameter as a numeric Redmine issue ID, adding semantics beyond the schema type (integer). Although schema coverage is 0%, this compensates well.

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

Purpose5/5

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

The description clearly states the tool returns structured journal entries for an issue, with a specific verb and resource. It is distinct from siblings like 'redmine_get_issue' (issue details) and writing tools.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like 'redmine_update_journal' or searching. Lacks explicit context or exclusions.

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

redmine_get_roleA

Fetch a role by id, including its permissions list.

Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
role_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states the tool is read-only and returns role with permissions, but it does not disclose error behavior, authentication requirements, or rate limits. For a simple fetch, it is adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: the first defines the action and output, the second declares read-only. No unnecessary words, information is front-loaded. Every sentence adds value.

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

Completeness4/5

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

For a simple fetch tool with an output schema (not shown), the description adequately covers the main purpose and output. It does not cover error scenarios or prerequisites, but given the low complexity, it is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

The schema has one parameter (role_id) with 0% description coverage. The description mentions 'by id' but does not explicitly describe the parameter or add constraints beyond the schema. Since the parameter is simple and self-evident from the tool name and description, the added value is marginal.

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

Purpose5/5

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

The description clearly states 'Fetch a role by id, including its permissions list.' It specifies the action (fetch), the resource (role), and the output (permissions list). It is distinct from sibling tools like redmine_list_roles by focusing on a single role by ID.

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

Usage Guidelines3/5

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

While the description indicates it is read-only and fetches a single role, it does not provide explicit guidance on when to use this tool versus alternatives like redmine_list_roles to list all roles. No exclusions or prerequisites are mentioned.

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

redmine_get_userA

Fetch a user by id, or the current API user.

Args: user_id: numeric user id, or "current" (default) for the authenticated API user. include: comma-separated includes: memberships, groups. Empty for none.

Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeNo
user_idNocurrent

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations provided; the description declares the tool is read-only and describes parameter behavior, but lacks details on auth, rate limits, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise and well-structured with a clear purpose line, Args block, and final read-only note. Every sentence adds value.

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

Completeness4/5

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

Covers essential aspects for a get tool (parameters, read-only nature) and output schema exists, but the user_id type mismatch (string in schema, numeric in description) may cause minor confusion.

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?

Adds significant meaning beyond the bare schema: explains user_id accepts numeric values or 'current', and include accepts comma-separated options like memberships and groups.

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

Purpose5/5

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

The description clearly states 'Fetch a user by id, or the current API user,' using a specific verb and resource, and distinguishes from sibling tools like redmine_list_users.

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

Usage Guidelines4/5

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

Provides context for when to use (get specific user or current user) and explains default values, but does not explicitly state when not to use or name alternatives.

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

redmine_get_versionA

Fetch one version by id.

Returns the version (name, status, due_date, sharing, ...) or version_not_found. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
version_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The description declares 'Read-only' and mentions the possible return value 'version_not_found', which is good for a read operation. With no annotations, it provides sufficient behavioral context for a simple fetch.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences front-load the key action and output, with no wasted words.

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

Completeness4/5

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

For a simple fetch tool with an output schema present, the description covers the return fields and error case adequately. Could mention that the output schema contains the listed fields, but not necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

The description adds 'by id' but the parameter name 'version_id' is already clear. Schema coverage is 0%, so the description could provide more detail about the parameter, but the parameter self-explains.

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

Purpose5/5

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

The description clearly states that the tool fetches one version by ID, distinguishing it from siblings like redmine_list_versions (multiple) and redmine_create_version (create).

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

Usage Guidelines4/5

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

The description implies use when you need a specific version by ID, but does not explicitly state when not to use it or suggest alternatives like redmine_list_versions for searching.

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

redmine_get_wiki_pageA

Fetch a wiki page (optionally a historical version).

Args: project: numeric id or identifier slug (e.g. "claudecode"). title: wiki page title (URL-encoded automatically; spaces and unicode are fine). version: if non-zero, fetch that specific historical version.

Returns the page (text, version, author, timestamps) or wiki_page_not_found. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
projectYes
versionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The description explicitly states 'Read-only', which is a key behavioral trait. It also describes the return value (page details or wiki_page_not_found). No annotations provided, so the description carries the full burden, but it covers safety and non-destructive nature adequately.

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 well-structured with a brief introductory line and bullet-pointed parameter explanations. It is clear without being verbose, though could be slightly more concise.

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

Completeness4/5

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

Given the tool's complexity (3 parameters, no enums, output schema exists), the description covers the core functionality, parameter details, and return information. It is sufficient for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

The description adds significant meaning beyond the input schema names: project is explained as numeric id or slug, title as URL-encoded automatically, version as historical version. This compensates for the 0% schema description coverage.

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

Purpose5/5

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

The description clearly states 'Fetch a wiki page' which is a specific verb+resource. It also mentions an optional historical version, distinguishing it from sibling tools like create_wiki_page, update_wiki_page, and delete_wiki_page.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives. While it implies use for fetching specific wiki pages, there is no mention of when not to use or reference to sibling tools for different operations.

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

redmine_healthA

Validate Redmine connectivity and credentials.

Fetches the current account; status: ok means the URL is reachable and the credential was accepted. Returns a structured error otherwise.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it explains that the tool fetches the current account, that status ok means the URL is reachable and credentials were accepted, and that it returns a structured error otherwise. It does not mention side effects or rate limits, but none are expected for a read-only health check.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, front-loaded with the action and immediately followed by the result semantics. Every sentence earns its place with no filler.

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

Completeness5/5

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

For a zero-parameter diagnostic tool with an output schema, the description is complete. It explains what is validated and how to interpret the success and error responses, leaving return-value details to the 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 takes zero parameters, so parameter semantics are not applicable. Per the baseline rule for zero-parameter tools, a 4 is appropriate.

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 states a specific verb and resource: validate Redmine connectivity and credentials. It clearly distinguishes the tool's diagnostic purpose from the CRUD-oriented siblings, but it does not explicitly name or differentiate against any alternative tool.

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

Usage Guidelines4/5

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

The description makes the intended context clear: use it to validate connectivity and credentials. It does not provide explicit when-not guidance, but no sibling alternative exists for this diagnostic purpose, so the usage context is sufficiently clear.

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

redmine_invalidate_cacheA

Drop cached entries for a scope. No HTTP request is made.

Args: scope: one of: - "all" — drop all schema rows (preserves auth fingerprint). - "tracker:<id-or-name>" — drop one tracker + its workflow rows. - "project:<id-or-slug>" — drop one project.

Use after Redmine config changes (new trackers, edited workflow, moved roles). The auth fingerprint is preserved so subsequent calls don't trigger a reconcile-wipe.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It reveals that no HTTP request is made, auth fingerprint is preserved, and details the effects of each scope option. While safety or reversibility is not discussed, the provided behavioral traits are sufficient.

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 exceptionally concise—four sentences structured with a clear purpose, parameter details, and usage context. Every sentence adds value without redundancy or filler.

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

Completeness5/5

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

Given the tool's simplicity (one parameter) and the presence of an output schema, the description fully covers behavior, parameter options, and usage context. It needs no additional information for correct invocation.

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 input schema has 0% description coverage, but the description fully compensates by explaining each allowed value ('all', 'tracker:<id-or-name>', 'project:<id-or-slug>') and their specific effects, adding crucial meaning beyond the schema.

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

Purpose5/5

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

The description clearly states 'Drop cached entries for a scope,' using a specific verb and resource. It distinguishes itself from sibling CRUD tools by focusing on cache invalidation, making its purpose unambiguous.

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

Usage Guidelines4/5

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

Explicitly states 'Use after Redmine config changes (new trackers, edited workflow, moved roles),' providing clear context. Although no direct alternatives are listed, the tool is unique among siblings, and the description effectively guides when to invoke it.

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

redmine_list_boardsA

List forum boards for a project.

Args: project_id: numeric id or identifier slug.

Returns {boards, count, project_id}. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing behavior. It correctly marks the tool as 'Read-only' and specifies the return structure. However, it omits details like pagination, error handling, or rate limits, which would enhance transparency.

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 extremely concise, using two sentences plus a structured args/return block. Every sentence is meaningful and front-loaded with the core purpose.

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

Completeness4/5

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

Given the tool's simplicity and the existence of an output schema, the description covers the essential behavior: listing boards with a specified project ID and returning a defined structure. It could mention pagination or ordering, but these are implicit for a list tool.

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% coverage, so the description must clarify parameter meaning. It describes project_id as 'numeric id or identifier slug', adding valuable context beyond the schema's string type. This is sufficient for one parameter.

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

Purpose5/5

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

The description clearly states the verb 'List' and the resource 'forum boards for a project', making the tool's purpose unambiguous. It is distinct from sibling list tools like redmine_list_projects or redmine_list_messages.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, nor are there any exclusions or prerequisites mentioned. The description only specifies that it lists boards for a project, without contextual flags.

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

redmine_list_child_issuesA

List an issue's child tickets, optionally filtered by assignee.

Args: issue_id: parent issue id. assignee: numeric user id or "me"; empty for all assignees. status: same values as search_issues (default "open"). limit: page size (capped at 100). offset: skip the first N results.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
statusNoopen
assigneeNo
issue_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It establishes a read-only list operation and discloses useful operational traits: the limit is capped at 100, offset skips results, and empty assignee means all users. It does not mention authentication or rate limits, but those are less critical for a simple list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the purpose, then efficiently lists argument semantics. Every sentence and argument entry earns its place with no redundant boilerplate.

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

Completeness4/5

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

Given the moderate five-parameter list operation and the existence of an output schema, the description is nearly complete. It covers all parameters and pagination constraints, though it could add a brief note about ordering or the relationship to search_issues for filtering beyond children.

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 documents all five parameters with added meaning: issue_id as the parent issue, assignee as numeric id or 'me' with empty meaning all, status values referencing search_issues, limit as page size capped at 100, and offset as result skipping.

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

Purpose5/5

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

The description states a specific verb and resource: 'List an issue's child tickets.' It adds the optional assignee filter, making the scope clear enough to distinguish it from siblings like search_issues or get_issue.

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

Usage Guidelines3/5

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

Usage is implied by the purpose and the optional assignee filter, but there is no explicit when-to-use or when-not-to-use guidance and no named alternative for broader issue searches. The reference to search_issues is for parameter value reuse, not tool selection.

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

redmine_list_custom_fieldsA

List all custom field definitions (admin only).

Returns id, name, field_format, customized_type, is_required, is_filter, possible_values, etc. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses two key behaviors: read-only and admin-only access. It does not cover other aspects like rate limits or data freshness, but the provided info is sufficient for a simple list tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loaded with the purpose, and lists key return fields. Every sentence adds value; no wasted words.

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

Completeness4/5

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

Given the tool has no parameters and an output schema exists, the description adequately covers the main points: admin restriction, read-only nature, and sample return fields. It could mention pagination or ordering, but for a simple read-only list, it is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

The input schema has zero parameters, so schema coverage is 100%. The description need not add parameter info. The baseline is 4, and the description meets it without adding redundant detail.

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 it lists custom field definitions and names the resource. It specifies 'admin only', which adds context. However, it does not differentiate from sibling list_* tools, which all follow a similar pattern.

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 only usage guidance is 'admin only', indicating a prerequisite. There is no mention of when to use this tool versus alternatives (e.g., other list tools), nor any exclusions or alternative tools.

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

redmine_list_endpointsA

List known Redmine REST endpoints (method, path, purpose).

Companion to the redmine_request passthrough: use it to find the right path/verb before calling. Read-only; makes no API request.

Args: query: optional case-insensitive substring over method/path/purpose.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden and does so well: 'Read-only; makes no API request' discloses the safety profile and an important side-effect guarantee for an introspection tool. It does not mention rate limits or caching, but for a static endpoint catalog that is minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short body sentences plus an Args line, with the core purpose front-loaded before the usage hint and the read-only guarantee. Nothing is wasted and it reads cleanly.

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

Completeness5/5

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

For a read-only endpoint lister with an output schema (which handles return-value documentation), the description covers purpose, usage routing, side-effect behavior, and the parameter. An agent has everything needed to select and invoke it correctly.

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?

Schema description coverage is 0%, so the description must compensate for the single parameter, and it does: 'optional case-insensitive substring over method/path/purpose' explains both optionality and the fields searched. This fully documents the lone param.

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

Purpose5/5

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

The description states a specific verb and resource ('List known Redmine REST endpoints') and enumerates the returned fields (method, path, purpose), making the resource unmistakable. It also names the sibling redmine_request as the companion, so an agent can distinguish it from the many other list_* siblings without opening a schema.

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

Usage Guidelines4/5

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

It gives a clear condition: use this 'to find the right path/verb before calling' redmine_request, explicitly naming the alternative tool. It stops short of stating when not to use it (e.g., when the path is already known), so it is strong but not exhaustive.

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

redmine_list_enumerationsA

List enumeration values for a given type.

Args: enum_type: one of issue_priorities, time_entry_activities, document_categories.

Read-only reference data.

ParametersJSON Schema
NameRequiredDescriptionDefault
enum_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

The description labels the tool as 'Read-only reference data', which is a clear behavioral trait indicating no side effects, compensating for the lack of annotations.

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 concise with one short paragraph and a clear args list, front-loading the key information without any wasted words.

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

Completeness5/5

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

Given the simplicity of the tool (one parameter, read-only), the description covers purpose, parameter options, and behavior, making it complete for an AI agent to use effectively.

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 adds significant value by listing the specific valid values for enum_type (issue_priorities, time_entry_activities, document_categories), which the schema alone lacks.

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

Purpose5/5

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

The description clearly states 'List enumeration values for a given type' with specific examples, distinguishing it from sibling list tools like redmine_list_projects by focusing on enumeration types.

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

Usage Guidelines4/5

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

The description explicitly mentions the tool is for reading enumeration values and lists valid enum_type options, providing clear context for when to use it, though no explicit when-not or alternatives are given.

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

redmine_list_groupsA

List all groups (admin only). Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It clearly states the tool is read-only, which is critical for agent decision-making. No additional details like rate limits or side effects are needed 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 extremely concise: two short sentences with no wasted words. Every part adds value: action, resource, access restriction, and read-only nature.

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

Completeness5/5

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

For a zero-parameter list tool with an output schema, the description covers purpose, access, and mutability. No additional info is necessary, as return values are documented in the 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?

Tool has no parameters. Schema coverage is 100% (empty). Description does not need to add parameter information, so baseline 4 applies.

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

Purpose5/5

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

The description clearly states the action ('List'), resource ('all groups'), and constraints ('admin only', 'Read-only'). It distinguishes from siblings like redmine_get_group (single group) and redmine_create_group (create).

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

Usage Guidelines4/5

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

Specifies 'admin only', indicating the intended user role. However, it does not explicitly mention when not to use or provide alternatives, though for a simple list operation this is sufficient.

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

redmine_list_issue_categoriesA

List issue categories for a project.

Args: project_id: numeric id or identifier slug.

Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

The description explicitly labels the operation as 'Read-only', which is valuable since no annotations are provided. However, it lacks additional behavioral context such as required permissions, rate limits, or data freshness, though for a simple list operation this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two short sentences. It front-loads the purpose and includes the parameter clarification and safety note with zero fluff, making it efficient for parsing.

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

Completeness4/5

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

Given there is only one required parameter and an output schema exists, the description covers the essential aspects: purpose, parameter semantics, and safety. It could mention the output format or that it returns a list, but the output schema fills that gap.

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 coverage, the description adds significant value by clarifying that project_id accepts a 'numeric id or identifier slug', which is not present in the schema's string type alone. This helps the agent format the parameter correctly.

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

Purpose5/5

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

The description clearly states 'List issue categories for a project', specifying the verb 'List' and the resource 'issue categories' within a project scope. This differentiates it from other list tools and makes the purpose immediately 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 redmine_list_custom_fields or redmine_list_enumerations. It does not mention contexts, prerequisites, or when not to use it, leaving the agent without decision support.

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

redmine_list_issue_statusesA

List all issue statuses with their is_closed flags.

Read-only reference data.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/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 explicitly states 'Read-only reference data', which informs the agent that the tool has no side effects. This is adequate for a simple list tool, though no mention of rate limits or auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, efficiently conveying purpose and nature. No filler; every sentence earns its place.

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

Completeness5/5

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

For a tool with zero parameters and an output schema, the description is complete. It specifies 'all' statuses and the read-only nature. No further behavioral details are necessary given the simplicity.

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?

There are zero parameters, and schema description coverage is high (100% by default). The description adds no param details, but baseline is 4 per scoring rules for no-parameter tools.

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

Purpose5/5

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

Description clearly states it lists all issue statuses including their is_closed flags. The verb and resource are specific, and it distinguishes itself from mutation tools by noting read-only reference data. It is unambiguous among sibling list tools.

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 lacks guidance on when to use this tool versus other list tools (e.g., redmine_list_trackers, redmine_list_custom_fields). It only states what it does, with no when-not-to or alternative considerations.

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

redmine_list_membershipsA

List project members (paginated).

Args: project_id: numeric id or identifier slug. limit: page size (capped at 100). offset: skip the first N results.

Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description declares read-only behavior and notes the page size limit (capped at 100). This provides useful transparency, though it could also mention ordering or other constraints.

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 extremely concise, starting with the purpose and listing parameters briefly. Every sentence adds value, and the 'Read-only' line is front-loaded.

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

Completeness4/5

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

For a simple list tool, the description covers purpose, parameters, pagination, and read-only nature. With an output schema present, return value details are not needed. Missing details like default sorting or scope are minor.

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 explains all three parameters: project_id as numeric id or slug, limit as page size capped at 100, offset as skipping N results. This adds meaning beyond the input schema, which has no descriptions.

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

Purpose5/5

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

The description clearly states 'List project members (paginated).' which is a specific verb-resource pair. Among siblings like add_membership, update_membership, and remove_membership, it is distinct in purpose.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives. The 'Read-only' hint implies it is for viewing, but no comparison to similar list tools or mutation siblings is provided.

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

redmine_list_messagesA

List forum messages on a board.

Args: board_id: numeric Redmine board id (visible in the project's forums URL or via the web UI; redmine_request covers /projects/X/boards.json if the boards module is enabled). limit: page size (capped server-side at 100). offset: skip the first N results.

Returns {messages, total_count, limit, offset, board_id, source}. A 404 typically means the boards module isn't enabled on the parent project, or the board_id doesn't exist. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
board_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

The description explicitly declares 'Read-only,' indicating no side effects. It also details return values and a common error scenario (404 for disabled boards module), providing behavioral context beyond the missing annotations.

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 sections for purpose, arguments, returns, and errors. It is clear and informative, though slightly verbose; a minor reduction could improve conciseness.

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

Completeness5/5

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

The description is comprehensive for a list tool. It covers all parameters, return format, and error conditions. Given the presence of an output schema, the description still provides adequate context without redundancy.

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 fully explains all three parameters. It provides extra context for board_id (how to find it via another tool) and notes that limit is capped server-side, adding value beyond the schema.

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

Purpose5/5

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

The description clearly states 'List forum messages on a board,' specifying the verb and resource. The name itself is specific, differentiating it from siblings like redmine_create_message or redmine_list_boards.

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

Usage Guidelines3/5

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

Usage guidelines are implied rather than explicit. The description provides error handling for a 404 but does not discuss alternatives or when not to use this tool. For a simple list operation, implicit usage is adequate.

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

redmine_list_newsA

List news entries (global feed, or scoped to a project).

Args: project: numeric id or identifier slug. Empty for the global feed across every project the API key can see. limit: page size (capped server-side at 100). offset: skip the first N results.

Returns {news, total_count, limit, offset, source}. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Declares 'Read-only' and explains pagination behavior (limit cap, offset) and return structure. With no annotations, this provides solid behavioral context, though error cases are omitted.

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?

Extremely concise: one-sentence purpose, structured Args block, final line for returns. No fluff, all sentences essential.

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

Completeness4/5

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

Covers purpose, parameters, return shape, and read-only nature. Lacks error handling details, but for a simple list tool with output schema, this is near-complete.

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?

Adds full semantic value for all 3 parameters: project format (numeric/slug, empty=global), limit cap, offset behavior. Schema coverage is 0%, so description carries the entire burden and does so excellently.

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

Purpose5/5

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

Explicitly states action 'List news entries' with scoping options (global or project), clearly distinguishing from sibling tools like redmine_create_news or other list tools.

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

Usage Guidelines3/5

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

Describes when to use (listing news) and the difference between global and project-scoped, but lacks explicit when-not-to-use or comparison to alternatives like redmine_search.

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

redmine_list_project_filesA

List files on a project's Files section.

Args: project_id: numeric id or identifier slug.

Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

The description declares 'Read-only,' which is a key behavioral trait. Without annotations, it carries the burden adequately, though it doesn't detail pagination or results format.

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?

Extremely concise with three lines, no unnecessary words. Information is front-loaded and easy to parse.

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

Completeness4/5

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

Given the output schema exists, the description doesn't need to explain return values. It is complete for a simple list operation, though could mention what fields are returned.

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?

Schema coverage is 0%, but the description adds meaning: 'project_id: numeric id or identifier slug,' explaining the parameter format beyond the schema's simple 'Project Id' label.

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

Purpose5/5

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

The description clearly states 'List files on a project's Files section,' specifying the action and resource. The tool name and verb 'list' align, distinguishing it from siblings like redmine_upload_project_file.

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

Usage Guidelines4/5

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

It provides context for use: list files for a project, with explicit argument format. It doesn't explicitly exclude alternatives like other list tools, but the unique purpose is clear.

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

redmine_list_projectsA

List projects (paginated, optional substring filter).

Args: query: optional case-insensitive substring filter on name/identifier/description (applied client-side after fetch). limit: page size, max 100. Defaults to 25. offset: skip the first N results. Defaults to 0.

Returns a JSON document with projects, total_count, limit, offset, and filtered_locally (whether the query filter was applied).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Discloses pagination behavior, client-side filtering, and return format. With no annotations, the description covers the key behavioral aspects. Could mention any authentication requirements, but not critical for a read-only list tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Structured with a summary line, Args section, and Returns section. Every sentence is informative and there is no redundant information. Front-loaded with the core purpose.

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

Completeness5/5

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

The description covers the input parameters, behavior, and output format thoroughly. Given the tool's simplicity and the presence of an output schema (as implied by the description), the description is complete.

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?

All three parameters (query, limit, offset) are fully explained with behavior (client-side filter, max page size 100, defaults). Schema has 0% coverage, so the description carries the full burden and does so excellently.

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

Purpose5/5

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

The description clearly states 'List projects' with key features: paginated, optional substring filter. It distinguishes from sibling tools like 'redmine_describe_project' and 'redmine_search' by being the specific listing tool for projects.

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

Usage Guidelines4/5

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

Provides clear context on parameters and client-side filtering, but does not explicitly mention when to prefer this tool over alternatives like 'redmine_search' or other list tools. However, the filtering behavior is well explained.

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

redmine_list_queriesA

List available saved queries.

Args: project_id: optional project id or slug to scope queries. Empty for all visible queries.

Use the returned query ids with redmine_search_issues(query_id=...) to execute them. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

The description states the tool is 'Read-only,' which implies no side effects. However, with no annotations provided, the description carries the full burden and lacks further behavioral details such as authentication requirements, rate limits, or error 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 concise and well-structured: first line states purpose, then a parameter explanation, then usage hint. Every sentence adds value with no unnecessary text.

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

Completeness4/5

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

Given the tool has an output schema and a single optional parameter, the description covers the key aspects. Minor missing details like the definition of 'visible' queries could be added, but overall it is sufficient.

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 schema has no description for the parameter, but the tool description explains that project_id is optional, can be an id or slug, and that empty returns all visible queries. This adds meaningful context beyond the schema.

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

Purpose5/5

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

The description clearly states 'List available saved queries,' which is a specific verb and resource. It distinguishes from sibling tools like redmine_list_issues or redmine_search_issues by focusing on saved queries, and further clarifies that the returned IDs can be used with redmine_search_issues.

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

Usage Guidelines4/5

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

The description provides context on how to use the tool: listing queries and then using the IDs to execute them. However, it does not explicitly state when not to use this tool or compare it to alternatives like directly searching issues without a saved query.

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

redmine_list_relationsA

List all relations on an issue (both directions).

Args: issue_id: numeric Redmine issue id.

Each relation has id, issue_id, issue_to_id, relation_type, and delay. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

The description states 'Read-only' and describes the output fields (id, issue_id, issue_to_id, relation_type, delay). However, it does not disclose potential behavioral traits like pagination, rate limits, or authentication requirements. Since no annotations are provided, the description carries the full burden, and this information is missing.

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 concise with two sentences, front-loading the main purpose. Every sentence adds value without redundancy.

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

Completeness5/5

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

For a simple list tool with one required parameter and an output schema (not shown but present), the description covers the essential elements: what the tool does, the parameter, and the structure of the response. It is complete for its complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

The description adds context to the issue_id parameter by stating 'numeric Redmine issue id', which is slightly more informative than the schema's 'Issue Id' (type integer). With schema coverage at 0%, the description partially compensates but does not fully explain the parameter's format or constraints.

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

Purpose5/5

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

The description clearly states 'List all relations on an issue (both directions)', specifying the verb 'list', resource 'relations', and scope 'on an issue'. This distinguishes it from sibling tools like redmine_add_relation and redmine_remove_relation.

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

Usage Guidelines3/5

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

The description implies usage for viewing relations before modifying, but does not explicitly state when to use this tool vs alternatives like redmine_add_relation or redmine_remove_relation. There is no guidance on when not to use it.

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

redmine_list_rolesA

List all roles. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

The description explicitly states 'Read-only,' indicating no side effects. Since no annotations are provided, this conveys the behavioral trait adequately, though additional details (e.g., output format) are covered by the existing output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no unnecessary words; each sentence adds value. The description is front-loaded with the core action.

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

Completeness5/5

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

For a parameterless read-only tool with an output schema, the description is fully sufficient. It covers the purpose and safety without needing elaboration.

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?

There are no parameters, so schema coverage is 100%. The baseline for 0 parameters is 4, and the description adds no further parameter information, which is acceptable.

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

Purpose5/5

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

The description uses a specific verb ('List') and resource ('roles'), clearly stating it retrieves all roles. It distinguishes from sibling tools like 'redmine_get_role' which targets a single role.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus tools like 'redmine_get_role' for a specific role, or when filtering is needed.

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

redmine_list_time_entriesA

List time entries with optional filters.

Args: issue_id, project_id, user_id: filter by reference id (0 for none). spent_on: exact-date filter (YYYY-MM-DD). from_date / to_date: date-range filter. limit: page size (capped at 100). offset: skip the first N results.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
to_dateNo
user_idNo
issue_idNo
spent_onNo
from_dateNo
project_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations exist, so the description must cover behavior. It discloses limit capping at 100 and offset skipping, but does not mention read-only nature or ordering. Adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, uses a clear bullet-like structure, and each sentence provides unique information. No redundancy.

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

Completeness4/5

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

With an output schema present, return format is covered. The description explains parameters well but could mention ordering or default pagination behavior. Still, it is sufficiently complete for a list tool.

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 has 0% parameter description coverage. The description explains all 8 parameters with details (e.g., '0 for none', date format YYYY-MM-DD, cap at 100). This adds substantial value beyond the schema.

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

Purpose5/5

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

The description clearly states 'List time entries with optional filters', using a specific verb and resource. It distinguishes well from sibling tools like create/delete/update time entries and other list tools.

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

Usage Guidelines3/5

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

The description details parameters but does not explicitly state when to use this tool versus alternatives (e.g., other list tools). The context of siblings implies purpose, but no direct guidance is provided.

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

redmine_list_trackersA

List all trackers configured on the Redmine server.

Returns a JSON document describing each tracker (id, name, default status, description). Cached entries are populated as a side effect for use by future schema-validation tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses a side effect: 'Cached entries are populated...' which adds behavioral context. However, it does not mention idempotency, authentication needs, or other traits beyond what is stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no redundant information. The purpose is stated first, followed by additional detail on output and side effects. Efficient and well-structured.

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

Completeness5/5

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

Given an output schema exists (context signal), the description explains return structure (id, name, default status, description) and notes cache side effect. For a simple, no-param list tool, this is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

The input schema has zero parameters, so the description naturally adds no param info. Baseline for 0 param is 4. The description does mention return fields, but that is not parameter semantics.

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

Purpose5/5

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

Description clearly states 'List all trackers configured on the Redmine server.' The verb 'list' and resource 'trackers' are specific. Among siblings, there is no other tool listing trackers, so it is well-distinguished.

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

Usage Guidelines3/5

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

The description implies usage when needing to see all trackers but does not provide explicit guidance on when to use versus alternatives (e.g., redmine_describe_tracker for a single tracker). No when-not-to-use or context is given.

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

redmine_list_usersA

List users (admin only).

Args: name: filter by login, firstname, lastname, or mail. group_id: filter by group membership. 0 for no filter. status: filter by user status. -1 (default) for no filter. Values: 0 anonymous, 1 active, 2 registered, 3 locked. limit: page size (capped at 100). offset: skip the first N results.

Read-only. Requires admin privileges.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
limitNo
offsetNo
statusNo
group_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

States 'Read-only' and 'Requires admin privileges', but does not disclose pagination behavior, rate limits, or data format. With no annotations, this is minimal 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?

Concise single sentence plus parameter list. Could integrate 'Read-only' and 'admin only' more efficiently, but overall well-structured.

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?

Covers purpose, auth, and parameters well. Lacks usage guidelines and behavioral details, but output schema exists to explain returns. Adequate but missing context about siblings.

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 coverage is 0%; description compensates fully by explaining each parameter, including valid values for status and defaults. Highly informative.

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?

Clear verb+resource and scope 'List users (admin only)', but lacks differentiation from siblings beyond name. Parameter details reinforce purpose.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this vs alternatives like list_groups or list_projects. Only mentions 'admin only' for auth context.

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

redmine_list_versionsA

List all versions / milestones defined on a project.

Args: project: numeric id or identifier slug.

Each version has id, name, status (open/locked/closed), due_date, sharing, etc. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states 'Read-only' and lists return fields, adding transparency. However, it does not mention potential pagination, response limits, or authorization requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is succinct with no wasted words. It conveys the purpose, argument details, and return field overview in a few sentences, maintaining good readability.

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

Completeness4/5

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

Given the tool's simplicity (single parameter, has output schema), the description covers the main aspects. It lacks details on error handling or pagination but is largely complete for its scope.

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% description coverage. The description adds value by specifying that 'project' accepts a 'numeric id or identifier slug,' clarifying the accepted format beyond the schema's string type.

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

Purpose5/5

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

The description explicitly states 'List all versions / milestones defined on a project,' providing a specific verb and resource. It clearly distinguishes from sibling tools like redmine_get_version (singular), redmine_create_version, etc.

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

Usage Guidelines4/5

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

The description explains the required project parameter format (numeric id or slug). While it implies usage for listing all versions, it does not explicitly contrast with alternatives like redmine_get_version for single version retrieval.

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

redmine_list_watchersA

Return the current watcher list for an issue.

Each watcher entry has id and name. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

The description states 'Read-only' and specifies the return format (id and name), which are important behavioral traits. However, it does not mention error conditions (e.g., issue not found) or permissions, which would enhance transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, front-loaded with the main action. Every sentence adds value.

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

Completeness4/5

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

The description covers the return format (id, name) and states read-only. Given an output schema exists, the description is largely complete, but lacks error handling or prerequisite info (e.g., issue must exist).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

While schema coverage is 0%, the description adds context that the tool is for an issue, implying issue_id identifies the issue. This minimally compensates; the parameter is simple and self-explanatory.

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

Purpose5/5

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

The description clearly states 'Return the current watcher list for an issue' with specific verb and resource, and distinguishes from sibling tools like redmine_add_watcher and redmine_remove_watcher.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like redmine_add_watcher or redmine_remove_watcher. The read-only hint is implicit but not directly stated as a usage condition.

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

redmine_metricsA

Return in-memory tool-call metrics (counts, errors, latency).

Aggregated per tool for the life of the process. Pass reset=True to clear the counters after reading.

ParametersJSON Schema
NameRequiredDescriptionDefault
resetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden well: it discloses that metrics are in-memory, aggregated per tool, scoped to the life of the process, and that reset=True clears counters after the read. It does not cover authentication or persistence, but those are not central for an in-memory metrics endpoint.

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 definition is short, front-loaded, and every sentence adds useful information. There is no filler or repetition.

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

Completeness4/5

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

An output schema exists, so the description does not need to explain return structure, though it helpfully names the metric categories. Combined with the reset semantics and process-lifetime scope, the description is complete for a simple metrics tool.

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 single parameter has 0% schema description coverage, so the description must compensate. It does so effectively by explaining that reset=True clears the counters after reading. It does not mention the default (false), but the semantic meaning is clear.

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

Purpose5/5

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

The description states a specific verb ('Return') and resource ('in-memory tool-call metrics') with concrete contents (counts, errors, latency). It is clearly distinguishable from the Redmine API sibling tools, which operate on issues, projects, and attachments.

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

Usage Guidelines3/5

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

It explains the effect of the reset parameter, but does not explicitly state when to use this tool versus alternatives or when not to call it. The intended usage (reading process-level metrics) is strongly implied but not spelled out.

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

redmine_my_issuesA

Issues assigned to the current user.

Convenience wrapper over redmine_search_issues for the common "what's on my plate" query. status defaults to "open" and accepts the same values as search_issues ("open"/"closed"/"*" or a named status).

Returns {issues, total_count, limit, offset, query}.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
statusNoopen

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full disclosure burden. It does add the accepted status value semantics ("open"/"closed"/"*" or a named status), which is genuinely beyond the schema, but the default status and the return shape it lists are both already present in the structured fields. It says nothing about read-only nature, pagination behavior, or permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the one-line purpose, then tacks on the wrapper note and defaults. No filler; every sentence carries information.

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

Completeness4/5

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

An output schema exists, so the return-value listing is not strictly needed and the description needn't expand on it. For a simple read-only list wrapper with no annotations, the description gives enough to call it correctly, though the limit/offset gap and absence of any safety statement leave a small hole.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 0%, so the description is the only source of meaning. It explains status values thoroughly, but limit and offset are never described in the prose — their meaning is only inferable from the returned shape. Partial compensation, not full.

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

Purpose5/5

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

States the specific resource and scope: issues assigned to the current user. It also names the sibling it wraps (redmine_search_issues) and frames the use case, so an agent can distinguish it from the many other issue tools without inspecting schemas.

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

Usage Guidelines4/5

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

Explicitly frames this as a convenience wrapper over redmine_search_issues for the common "what's on my plate" query, which tells the agent when to pick it. It stops short of stating when NOT to use it (e.g., for other users' issues), but the routing context is clear.

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

redmine_remove_group_userC

Remove a user from a group.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
group_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It mentions honoring 'REDMINE_MCP_READ_ONLY', which hints at conditional behavior, but does not explain side effects, error conditions, or permission requirements. The tool is a mutation, yet no detail is given about the operation's impact.

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 two sentences and focuses on the core purpose. The first sentence is front-loaded with the essential action. The second sentence about the read-only flag adds some behavioral context but could be integrated. Overall, it is not verbose.

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 0% schema coverage, the description is too brief. It fails to cover return values, error scenarios, authorization needs, or how this tool relates to siblings. The presence of an output schema is not utilized in the description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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

The input schema has 0% description coverage, so the description must compensate. It only implies the role of parameters via the purpose statement, but does not explain what 'group_id' and 'user_id' represent, how to obtain them, or any constraints.

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

Purpose5/5

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

The description clearly states the action ('Remove a user from a group'), using a specific verb and resource. It distinguishes this tool from the sibling 'redmine_add_group_user' which performs the inverse operation.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'redmine_add_group_user'. There are no instructions on prerequisites, such as the user needing to be a member of the group, or when not to use it.

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

redmine_remove_membershipB

Remove a project membership. Inherited memberships can't be deleted.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
membership_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided. Description mentions that inherited memberships can't be deleted and that it honors a read-only flag, but lacks details on side effects, error handling, or idempotency. Minimal 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences covering purpose and key limitation. No unnecessary words; efficient and front-loaded.

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?

Output schema exists but description doesn't explain return values. For a simple deletion, the description covers essential purpose and a constraint, but lacks details on response behavior or error cases. Adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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

Single parameter 'membership_id' has no description in schema (0% coverage). Description does not elaborate on its meaning, format, or constraints, forcing reliance on the schema alone.

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

Purpose5/5

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

Clearly states action 'remove' and resource 'project membership'. Distinguishes from siblings by specifying inheritance constraint which differentiates from other membership tools.

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

Usage Guidelines2/5

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

No explicit guidance on when to use vs. alternatives. Only mentions a limitation (inherited memberships cannot be deleted) but does not provide context for when to invoke this tool.

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

redmine_remove_relationA

Delete a relation by its numeric id.

Args: relation_id: id from list_relations output (NOT an issue id).

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
relation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior3/5

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

No annotations exist, so the description carries full burden. It discloses that the tool honors REDMINE_MCP_READ_ONLY, but does not detail success/failure behavior or permissions. Acceptable for a simple delete 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?

Three concise sentences: purpose, parameter arg, and read-only note. Every sentence adds value with no redundancy.

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

Completeness5/5

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

For a one-parameter delete tool with an output schema, the description covers purpose, parameter source, and behavior flag. No missing context.

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 coverage, the description adds critical meaning: relation_id is from list_relations output and not an issue id. This fully compensates for the missing schema description.

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

Purpose5/5

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

The description clearly states 'Delete a relation by its numeric id.' with a specific verb (delete) and resource (relation), distinguishing it from siblings like redmine_add_relation.

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

Usage Guidelines4/5

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

Provides clear context by specifying the parameter source ('from list_relations output') and a negative constraint ('NOT an issue id'), but lacks explicit when-not-to-use or alternative tools guidance.

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

redmine_remove_watcherA

Remove a user from an issue's watcher list.

Args: issue_id: numeric Redmine issue id. user_id: numeric user id to remove.

A 404 from Redmine means the watcher wasn't on the list (vs. issue not found — distinguishable by status code on the underlying error payload). Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
issue_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses important behavioral details: error semantics (404 meaning watcher not on list vs issue not found) and honors a read-only flag ('REDMINE_MCP_READ_ONLY'). This adds valuable 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 succinct and front-loaded with the main purpose. Every sentence serves a purpose: the one-liner for action, the args listing, and the error/flag note. No wasted words.

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

Completeness4/5

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

For a simple removal tool with two parameters and no nested objects, the description covers the main purpose, parameter types, error handling, and a read-only mode. The output schema exists but is not shown, so return values are not described. Still, the description is largely complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It provides brief explanations for each parameter ('numeric Redmine issue id', 'numeric user id to remove'), which adds basic meaning but lacks constraints or additional context. This meets the baseline but does not excel.

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

Purpose5/5

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

The description clearly states the action ('Remove a user from an issue's watcher list') with a specific verb and resource. It distinguishes itself from sibling tools like 'redmine_add_watcher' and 'redmine_list_watchers' by name and action.

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

Usage Guidelines4/5

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

The description clearly indicates when to use this tool (to remove a watcher), and the sibling list provides context. However, it does not explicitly state when not to use it or mention alternatives beyond the tool name.

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

redmine_reply_messageA

Reply to an existing forum topic.

Args: board_id: board the topic belongs to. topic_id: the parent message/topic id. content: required reply body.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes
board_idYes
topic_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations exist, so description carries full burden. It mentions 'Honors REDMINE_MCP_READ_ONLY,' implying conditional behavior, but does not disclose permission requirements, side effects, 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?

Description is concise with two sentences and args list, front-loaded with purpose. No extraneous information.

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 output schema exists, return value explanation is unnecessary. However, description lacks prerequisites (e.g., existence of board/topic), error conditions, or detailed behavioral context for a mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema coverage is 0%, so description must compensate. It lists all three parameters with brief explanations (e.g., 'the parent message/topic id' for topic_id), adding some meaning beyond the schema but not enough to fully compensate.

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

Purpose5/5

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

The description clearly states 'Reply to an existing forum topic,' specifying the verb and resource. This distinguishes it from sibling tools like redmine_create_message, which creates new topics.

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

Usage Guidelines3/5

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

The description provides context (board_id must belong to topic) but does not explicitly state when to use this tool vs alternatives like redmine_create_message. No when-not or exclusion criteria are given.

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

redmine_requestA

ESCAPE HATCH — generic passthrough to any Redmine REST endpoint.

Bypasses redmine-mcp's validation, workflow checks, and schema cache. Every response carries validation_skipped: true so the caller can't accidentally forget. Gated behind REDMINE_MCP_ENABLE_PASSTHROUGH=true — calls return passthrough_disabled if the flag isn't set.

Args: method: HTTP verb. One of GET, POST, PUT, DELETE, PATCH. Case-insensitive. path: must start with /. Joined onto REDMINE_URL by the client. Example: "/custom_fields.json". body: body for POST/PUT/PATCH. Accepted as either a JSON-encoded string (e.g. '{"issue": {"subject": "renamed"}}') or a JSON object passed directly (e.g. {"issue": {"subject": "renamed"}}). Empty string / empty dict means no body. (The dual form is intentional — some MCP transports auto-parse JSON-shaped string args into objects before the tool sees them.) params: query params for GET, in the same dual string/object form.

Honors REDMINE_MCP_READ_ONLY for non-GET methods.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
pathYes
methodYes
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

No annotations were provided, so the description carries full responsibility. It discloses that the tool bypasses validation, workflow checks, and schema cache; that every response includes 'validation_skipped: true'; that it is gated behind 'REDMINE_MCP_ENABLE_PASSTHROUGH'; and that it respects 'REDMINE_MCP_READ_ONLY' for non-GET methods. This is comprehensive 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear header, bulleted parameter list, and context. It is not overly verbose, though the explanation of the dual form for body/params could be slightly more concise. Overall, it is efficiently organized.

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

Completeness5/5

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

Given the tool's complexity as an escape hatch, the 4 parameters, and the existence of an output schema (not shown but flagged as present), the description is complete. It covers purpose, usage gating, parameter details, behavior, and response marker. No obvious gaps remain.

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 input schema has 0% description coverage, so the description must compensate fully. It does: it explains 'method' as an HTTP verb with allowed values, 'path' as starting with '/' and being joined to REDMINE_URL, 'body' and 'params' as accepting both JSON string and object forms (with rationale for the dual form). This adds significant meaning beyond the schema.

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

Purpose5/5

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

The description clearly identifies the tool as a 'generic passthrough to any Redmine REST endpoint', which is a specific verb-resource combination that distinguishes it from the many sibling tools that handle specific operations. It explicitly states it 'bypasses redmine-mcp's validation, workflow checks, and schema cache', making its purpose unambiguous.

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

Usage Guidelines4/5

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

The description provides strong context: it is an escape hatch for unsupported endpoints, gated behind an environment variable, and honors the read-only flag. However, it does not explicitly state when to use this tool instead of a sibling, leaving it implied that it is for cases not covered by specific tools.

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

redmine_search_issuesA

Search/list issues with optional filters and pagination.

Args: query: substring on issue subject (Redmine subject=~ filter). Empty for unfiltered. project: optional numeric id or identifier slug. status: optional id, name, or one of Redmine's special tokens ("open", "closed", "*"). Lower-case tokens are passed through; named statuses (e.g. "Closed") resolve via the cache. tracker: optional tracker id or name ("Bug"), or a comma-separated list of either ("Bug,Feature"). Names resolve through the schema cache and are emitted as Redmine's tracker_id. An unresolvable name returns tracker_not_found rather than dropping the filter — without this parameter a query for "Bug tickets" is inexpressible and returns Features/NewApps/Prompts mixed in, with nothing in the response saying so. query_id: optional Redmine saved query id (numeric). 0 (default) means no saved query. It does NOT merge with custom_fields — the saved query's own filters win and yours are dropped silently — so passing both returns query_id_conflicts_with_custom_fields instead of a quietly unfiltered set. custom_fields: optional mapping of custom field -> value to filter on, sent as Redmine's cf_<id>=<value>. Keys may be numeric ids or field names ({"Github Org": "wgtunnel"}); names resolve through the schema cache. Accepts a dict or a JSON-encoded object. An unresolvable key returns custom_field_not_found rather than silently dropping the filter — Redmine ignores unknown filter params, so a dropped one would return everything in scope and look like a successful match. sort: optional Redmine sort spec, forwarded verbatim. Accepts field[:desc] and comma-separated lists, including custom fields as cf_<id> (e.g. "cf_5:desc"). limit: page size (capped at 100). offset: skip the first N results.

Returns {issues, total_count, limit, offset, query}. Each issue's project object carries identifier (slug) when the project is known to the cache, so consumers need not map name → slug.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo
limitNo
queryNo
offsetNo
statusNo
projectNo
trackerNo
query_idNo
custom_fieldsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does so well: it names concrete failure modes (tracker_not_found, custom_field_not_found, query_id_conflicts_with_custom_fields) and warns that Redmine silently ignores unknown filters, which would otherwise look like a successful match. It stops short of stating auth/permission needs, but the pitfall disclosure is unusually strong.

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?

Front-loaded with the one-line summary, then dense per-argument notes in a predictable order. It is long, but nearly every sentence adds operational detail (failure codes, silent-drop warnings) that earns its place.

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

Completeness5/5

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

For a 9-parameter search tool with no annotations, the description covers filters, conversion rules, conflict handling, error codes, and briefly the return shape. With an output schema present, the return summary is a bonus rather than a requirement, so nothing essential is missing.

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, and it does for all nine parameters: substring semantics for query, id-or-slug for project, special tokens for status, comma-list/name resolution and the tracker_id emission for tracker, saved-query conflict rules for query_id, key resolution and cf_<id> mapping for custom_fields, and field[:desc]/cf_<id> syntax for sort.

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

Purpose5/5

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

States a specific verb+resource (search/list issues) plus scope (optional filters and pagination), which cleanly separates it from single-issue siblings like redmine_get_issue and from narrower listers like redmine_my_issues or redmine_list_child_issues.

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

Usage Guidelines3/5

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

Filter semantics are explained in depth, but there is no explicit when-to-use/when-not guidance relative to the many sibling listing/search tools (e.g. redmine_search, redmine_my_issues, redmine_bulk_create_issues). Usage is implied rather than directed.

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

redmine_set_parent_issueA

Set or clear an issue's parent.

Args: issue_id: issue whose parent is being set. parent_issue_id: numeric id of the new parent. Pass 0 to unparent the issue.

Parent/child is mechanically a field on the issue (parent_issue_id), not a relation record. Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYes
parent_issue_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It notes that parent/child is a field not a relation record, and honors read-only flag. Missing details on permissions, side effects, or response format.

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 concise (~70 words), well-structured with args section, and every sentence adds value without redundancy.

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

Completeness4/5

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

For a simple tool with 2 integer params and an output schema, the description covers core behavior, special unparent value, and field nature. Missing error conditions or permissions, but adequate.

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%, but the description fully explains both parameters: issue_id as 'issue whose parent is being set' and parent_issue_id as 'numeric id of the new parent. Pass 0 to unparent.' This adds essential meaning beyond schema names.

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

Purpose5/5

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

The description 'Set or clear an issue's parent' uses specific verb+resource, clearly indicating the tool's action on issues. It distinguishes from siblings like update_issue or relation tools.

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

Usage Guidelines4/5

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

The description explains the special value 0 to unparent and mentions honoring REDMINE_MCP_READ_ONLY, providing clear context. However, it does not explicitly compare with alternative tools like update_issue that might also set parent.

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

redmine_time_reportA

Aggregate time entries over a date range, grouped by a dimension.

Args: from_date / to_date: YYYY-MM-DD range bounds (to inclusive). project_id / user_id: optional 0 = no filter. group_by: one of user (default), project, activity, issue. max_entries: cap on entries fetched (default 1000); when hit, the result sets truncated: true.

Returns {from, to, group_by, total_hours, entry_count, truncated, groups}.

ParametersJSON Schema
NameRequiredDescriptionDefault
to_dateNo
user_idNo
group_byNouser
from_dateNo
project_idNo
max_entriesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well on the non-obvious parts: it discloses the max_entries cap default of 1000 and that hitting it sets truncated: true, and clarifies that 'to' is inclusive and 0 means no filter. It stops short of stating this is a read-only operation or any permission/rate-limit requirements.

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?

Front-loaded one-line summary followed by compact Args sections; every line carries information. The Returns line is largely redundant with the existing output schema, which keeps it from a 5.

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

Completeness4/5

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

For a 6-parameter aggregation tool with no annotations, all inputs, defaults, the filter sentinel, and the truncation edge case are covered, and an output schema exists so return values need not be explained. Only missing piece is any statement about read-only behavior or access requirements.

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% (only titles and defaults), so the description must compensate and it does: it gives the date format and inclusivity, the 0-means-no-filter sentinel for both ID params, the enumerated group_by values with the default, and the cap semantics plus truncation signal.

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?

States a specific verb (aggregate) and resource (time entries) plus the scope (date range, grouped by dimension), which cleanly separates it from redmine_list_time_entries or redmine_today_time_entries. It never names those siblings, so differentiation must be inferred from the word 'aggregate'.

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

Usage Guidelines3/5

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

Usage is implied by the aggregation framing (use this when you want totals grouped by a dimension rather than raw entries), but there is no explicit 'use X instead of Y' routing against the many time-entry siblings, and no stated prerequisites or exclusions.

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

redmine_today_time_entriesA

Time entries logged today (server-local date).

Convenience wrapper over redmine_list_time_entries with spent_on set to today.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that it is a wrapper over redmine_list_time_entries with spent_on set to today, but it omits read-only safety, pagination behavior, and any permission or rate-limit 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?

Two short sentences, front-loaded with the core scope and followed by the wrapper clarification. Every sentence earns its place with no filler.

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?

An output schema exists, so return values need not be explained. However, with no annotations and undocumented input parameters, the description leaves pagination and parameter semantics to inference, which is a notable gap for an otherwise simple list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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

The schema has 0% description coverage for its two parameters (limit and offset), and the description does not mention them at all. No compensating information is provided despite the coverage gap.

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

Purpose5/5

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

The description states a specific resource (time entries) and a precise scope (logged today, server-local date), and it explicitly identifies itself as a convenience wrapper over redmine_list_time_entries. An agent can distinguish it from the generic list tool without opening either schema.

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

Usage Guidelines4/5

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

It clearly positions the tool for today-only queries by naming the underlying sibling it wraps and the fixed spent_on value. This gives strong context, though it does not explicitly state when not to use it or name an alternative for broader date ranges.

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

redmine_unarchive_projectA

Unarchive a previously archived project (Redmine 5.0+).

Args: project_id: numeric id or identifier slug.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses that the tool honors 'REDMINE_MCP_READ_ONLY', which is a behavioral flag that may prevent mutation in read-only mode. However, it does not mention other traits like required permissions, reversibility, or effects on child resources, leaving gaps.

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 extremely concise (two lines plus args) with no unnecessary words. The primary action is front-loaded, followed by parameter details and a behavioral note. Every sentence adds value.

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

Completeness4/5

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

For a simple mutation tool, the description covers version requirements and a behavioral constraint. However, it omits the output format (though an output schema exists) and error conditions (e.g., what if project is not archived). Overall, it is mostly complete but could include a note on failure scenarios.

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 fully compensates by stating that project_id can be a 'numeric id or identifier slug', adding meaning beyond the schema's plain string type. This is critical for correct invocation and is well-explained.

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

Purpose5/5

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

The description clearly states the action 'Unarchive a previously archived project' with a specific verb and resource. It distinguishes itself from the sibling 'redmine_archive_project' by being the inverse operation. Additionally, it specifies a version requirement (Redmine 5.0+), adding precision.

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

Usage Guidelines3/5

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

The context implies use when reactivating an archived project, but no explicit when-to-use or when-not-to-use guidance is provided. There is no comparison with siblings (e.g., redmine_archive_project) to clarify alternative usage, leaving the agent to infer from the name alone.

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

redmine_update_groupC

Update a group's name.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
group_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

Without annotations, the description carries the full burden of behavioral disclosure. It only mentions 'Honors REDMINE_MCP_READ_ONLY' without explaining what this means (e.g., whether the tool is disabled in read-only mode). No details about authentication, idempotency, side effects, or response behavior are provided.

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, front-loading the main purpose. The mention of READ_ONLY is a slight distraction but acceptable. There is no unnecessary information.

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 has an output schema (not shown) and is a mutation with two parameters, the description lacks completeness. It does not describe what the tool returns, any prerequisites, or potential errors. The minimal information leaves gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/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. However, it only says 'Update a group's name' which adds no semantic value beyond the parameter names 'group_id' and 'name'. The names are self-explanatory, but no additional constraints or formatting hints are given.

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 states 'Update a group's name' which clearly specifies the action and resource, distinguishing it from other update tools like redmine_update_issue or redmine_create_group. However, it could be more explicit about what fields are updated (only name, as per schema), but it's sufficient for purpose 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?

There is no guidance on when to use this tool versus alternatives like redmine_create_group or redmine_delete_group. The description does not provide any context about prerequisites, permissions, or appropriate scenarios for updating a group's name.

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

redmine_update_issueA

Update an issue, with reactive workflow validation on status changes.

Args: issue_id: numeric Redmine issue id. subject: optional new subject. description: optional new description. status: optional id or name (e.g. "In Progress"). Triggers workflow pre-flight against the cache. priority: optional id or name. assigned_to_id: optional user id; 0 means unchanged. notes: optional comment to attach with this update (becomes a journal entry). difficulty: optional engagement-mode level for the global Difficulty custom field. Values: "Unclassified" / "Easy" / "Normal" / "Hard". NO default-fill on update — empty means "don't change Difficulty." held: optional reason string explaining why the issue is held (e.g. "waiting on upstream patch"), which also blocks closing. Empty (default) means unchanged. This is free text a human reads later to decide whether the hold still applies — a bare flag records nothing, so booleans are rejected with held_reason_required. clear_held: set True to remove an existing hold. This is the supported way to un-hold an issue; passing an empty held means "don't change" and cannot clear. Mutually exclusive with a non-empty held. held_until: optional ISO-8601 date ("2026-10-01"). Sets the Held Until custom field. Empty means unchanged. Optional and independent of held — plenty of holds have no knowable end date, so a reason with no date is valid. due_date: optional ISO-8601 date ("2026-05-17"). Empty leaves it unchanged; pass the literal string "" (i.e. just don't send this arg) to leave it untouched. To clear an existing due_date you currently need redmine_request with {"issue": {"due_date": null}} — the MCP can't distinguish "unset" from "leave alone" without explicit null support. start_date: same shape as due_date. done_ratio: optional 0-100 progress percent. -1 (sentinel) means unchanged; 0 is explicit "reset to no progress." fixed_version_id: optional version id (string for id-or-empty). Empty leaves unchanged; explicit "0" clears the version. custom_fields: optional list of {"id": <int>, "value": <str>} entries. Accepts either a Python list (preferred) or a JSON- encoded string. Empty means no custom-field changes.

On a status change the cache pre-flight short-circuits any previously-observed disallowed transition with a :class:WorkflowTransitionDisallowed payload. After a real PUT the outcome is recorded so future calls benefit. Honors REDMINE_MCP_READ_ONLY.

With quiet=True a successful result is reduced to ids + status (bulk: compact per-item rows + summary) instead of the full issue JSON. Errors are never reduced.

ParametersJSON Schema
NameRequiredDescriptionDefault
heldNo
notesNo
quietNo
statusNo
subjectNo
due_dateNo
issue_idYes
priorityNo
clear_heldNo
difficultyNo
done_ratioNo
held_untilNo
start_dateNo
descriptionNo
custom_fieldsNo
assigned_to_idNo
fixed_version_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so richly: it discloses the workflow pre-flight short-circuit and its WorkflowTransitionDisallowed payload, post-PUT outcome caching, the REDMINE_MCP_READ_ONLY flag, held semantics including the held_reason_required rejection of bare booleans, mutual exclusivity of held/clear_held, and quiet-mode output reduction with errors never reduced.

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?

Front-loaded one-line purpose followed by a structured Args list, which is an appropriate shape for 17 parameters with no schema-level documentation; nearly every sentence earns its place. It loses a point for the convoluted and self-referential due_date sentence ("pass the literal string \"\" (i.e. just don't send this arg)"), which is harder to parse than it needs to be.

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

Completeness5/5

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

For a 17-parameter mutation tool with no annotations and a rich output schema, the description covers purpose, per-parameter edge cases, workflow-validation behavior, environment gating, and the quiet-mode return-shape reduction. Given the output schema already carries return structure, nothing an agent needs to invoke this correctly is missing.

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 entirely, and it documents essentially every one of the 17 parameters. It goes well beyond naming them, explaining sentinel semantics (-1 unchanged vs 0 reset for done_ratio; "0" clears fixed_version_id), the explicit-empty-means-unchanged convention, the boolean-rejection on held, and the inability to clear due_date through this tool.

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 opening line states a specific verb and resource ("Update an issue") and adds a distinctive behavioral qualifier ("reactive workflow validation on status changes"). It is clearly distinct from read tools, but never explicitly contrasts itself with close cousin siblings such as redmine_bulk_update_issues or redmine_close_issue, leaving the single-vs-bulk boundary to inference.

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

Usage Guidelines4/5

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

Strong conditional guidance: status changes trigger a workflow pre-flight, clear_held is named as "the supported way to un-hold," and it explicitly routes the agent to redmine_request for clearing a due_date. It lacks broad when-to-use guidance relative to sibling update tools (bulk vs single, close_issue), so it stops just short of fully explicit routing.

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

redmine_update_issue_categoryC

Update an issue category. Partial.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
category_idYes
assigned_to_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It mentions 'Honors REDMINE_MCP_READ_ONLY' which is helpful, but does not disclose permissions, side effects, or whether update is partial. 'Partial' hints at behavioral nuance but is not explained.

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 very short and front-loaded with the purpose. 'Partial.' is a separate line but could be integrated. No unnecessary words, but could be slightly more structured.

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 an update tool with 3 parameters and no parameter explanation, the description is incomplete. It does not explain what 'Partial' means or how the parameters affect the update. Output schema exists but description still lacks basic context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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

Schema description coverage is 0%, yet the description adds no information about any of the three parameters (category_id, name, assigned_to_id). This fails to compensate for the lack of schema 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 'Update an issue category,' which is a specific verb and resource. It distinguishes from sibling tools like create and delete. However, the term 'Partial' is ambiguous but likely means partial update.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The note about honoring READ_ONLY provides some context but no explicit when-to-use or when-not-to-use.

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

redmine_update_journalA

Edit an existing journal entry's notes in place.

Requires Redmine 5.0+. Use redmine_get_journals to find the journal_id to edit.

Args: journal_id: numeric journal id. notes: replacement note text. Pass an empty string to clear the note (deletes the journal if it has no field-change details). Use actual newline characters for multi-line notes, not backslash-n escape sequences. Redmine renders notes as Markdown.

Honors REDMINE_MCP_READ_ONLY. The API user can only edit their own notes unless they have the edit_issue_notes permission.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesYes
journal_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/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 thoroughly covers: in-place editing, the behavior of clearing notes (deletes journal if no other changes), input formatting rules (actual newlines, not escape sequences), Markdown rendering, read-only flag honoring, and permission model. This is comprehensive and leaves no ambiguity about side effects or constraints.

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 lead sentence, followed by a requirements note, a prerequisite reference, parameter details in a bullet-like format, and additional context. It is concise overall, though the parameter details could be slightly more streamlined. However, every sentence serves a purpose, making it efficient for an AI agent to parse.

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

Completeness5/5

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

Given the tool's complexity (mutation with side effects, permissions, formatting rules, output schema exists so return value documentation not required), the description is remarkably complete. It covers prerequisites, required inputs, edge cases (empty notes, deletion), formatting, permissions, and read-only behavior. No additional information seems necessary for correct invocation.

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 does so excellently: for journal_id it notes it's numeric; for notes it explains it's replacement text, the impact of empty string (clear note and potentially delete journal), the requirement for actual newlines, and that Redmine renders notes as Markdown. This adds critical meaning beyond the bare schema with just types and titles.

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

Purpose5/5

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

The description clearly states the tool's action ('Edit an existing journal entry's notes in place') and identifies the specific resource (journal entry). It distinguishes itself by referencing the need to use redmine_get_journals to find the journal_id, implying a prerequisite that sets it apart from other tools. The verb and resource are specific and unambiguous.

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

Usage Guidelines4/5

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

The description provides explicit prerequisites: Redmine 5.0+ and the need to obtain a journal_id via redmine_get_journals. It also mentions that the tool honors the REDMINE_MCP_READ_ONLY flag and describes permission requirements (user can only edit own notes unless they have edit_issue_notes permission). However, it does not directly contrast with sibling tools like redmine_add_comment or redmine_update_issue, which could be alternatives for adding comments vs. editing existing journal notes.

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

redmine_update_membershipA

Update a membership's roles.

Args: membership_id: numeric membership id (from list_memberships). role_ids: new list of role ids (required, non-empty).

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
role_idsYes
membership_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

The description mentions honoring REDMINE_MCP_READ_ONLY, a useful behavioral trait. However, it does not elaborate on side effects (e.g., replacing roles), error states, or permission requirements, leaving gaps given no annotations.

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 concise with a structured Args block, front-loading the key action. Every sentence serves a purpose without redundancy.

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

Completeness4/5

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

For a simple update tool with an output schema, the description covers purpose, parameter sources, and read-only behavior. It is nearly complete, but missing explicit mention of role replacement behavior.

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 coverage, the description adds critical meaning: membership_id is numeric and sourced from list_memberships, role_ids is required and non-empty. This significantly aids agent understanding, though role_ids format (integer list) is implied.

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 states 'Update a membership's roles,' clearly indicating the verb and resource. This distinguishes it from add/remove membership tools, though it could be more specific about replacing roles.

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

Usage Guidelines3/5

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

The description implies use for modifying roles of an existing membership, but does not explicitly contrast with sibling tools like redmine_add_membership or redmine_remove_membership, nor does it provide when-not guidance.

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

redmine_update_newsB

Update a news entry. Partial — only supplied fields are sent.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
news_idYes
summaryNo
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior4/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 discloses two key behaviors: partial update (only supplied fields are sent) and honoring the REDMINE_MCP_READ_ONLY environment variable for read-only mode. This adds significant context beyond the schema.

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 at two sentences, front-loading the purpose. However, it omits essential details about parameters, making it under-specified. Conciseness is good but at the expense of completeness.

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 4 parameters, 0% schema coverage, and no annotations, the description is incomplete. It covers basic behavior but lacks parameter descriptions, prerequisites, or error handling. An output schema exists but is not referenced. The description does not fully compensate for missing structured information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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

Schema description coverage is 0%, meaning the description does not explain any parameter. It only notes that only supplied fields are sent, but fails to define the meaning of title, news_id, summary, or description. The description should compensate but does not.

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

Purpose5/5

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

The description clearly states the verb 'Update' and the resource 'a news entry'. It specifies partial update behavior, distinguishing it from create or delete operations. Sibling tools include redmine_create_news and redmine_delete_news, so the purpose is specific and well-differentiated.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. It implies usage for modifying an existing news entry, but lacks when-not-to conditions, prerequisites, or comparisons with other update tools. The description does not leverage sibling context for differentiation.

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

redmine_update_projectA

Update a project. Partial — only supplied fields are sent.

Args: project_id: numeric id or identifier slug. name: optional new display name. description: optional new description. homepage: optional new homepage URL. is_public: project visibility. None (omitted) leaves the current value unchanged — omitting never publishes a private project. parent_id: new parent project id (0 for unchanged). inherit_members: whether to inherit members from parent. None (omitted) leaves the current value unchanged. tracker_ids: optional list of tracker ids to enable. enabled_module_names: optional list of modules.

Returns the refreshed project. Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
homepageNo
is_publicNo
parent_idNo
project_idYes
descriptionNo
tracker_idsNo
inherit_membersNo
enabled_module_namesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full load and does well: it discloses partial semantics, the safe default that omitting is_public never publishes a private project, and that it honors REDMINE_MCP_READ_ONLY. It stops short of stating required permissions or failure behavior for invalid ids.

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?

Purpose is front-loaded in one sentence, followed by a tight per-argument list. The Args block is verbose but each line is justified by the total absence of schema descriptions, so nothing is wasted.

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

Completeness4/5

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

For a 9-parameter mutation tool with no annotations and an output schema, the description covers the essentials: partial semantics, per-param meaning, the read-only guard, and return behavior. Missing only permission/prerequisite detail, which is a minor gap.

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, and it does: every parameter gets meaning, including the non-obvious sentinel semantics ('parent_id: 0 for unchanged', is_public/inherit_members None leaves value unchanged). This adds real value beyond the bare types/defaults in the 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?

Opens with a specific verb+resource ('Update a project') and immediately qualifies the mutation as partial ('only supplied fields are sent'). It does not explicitly differentiate itself from siblings such as redmine_create_project or redmine_archive_project, but the operation is unambiguous.

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

Usage Guidelines3/5

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

The partial-update framing signals when this is appropriate (incremental edits without resending the whole project), but there is no explicit when-to-use/when-not guidance or named alternative (e.g., use redmine_archive_project to deactivate, redmine_create_project to add). Usage is only implied.

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

redmine_update_time_entryB

Update a time entry. Partial — only supplied fields are sent.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNo
activityNo
commentsNo
issue_idNo
spent_onNo
project_idNo
time_entry_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. Discloses 'partial' update and honoring read-only flag, but omits details like success/error responses, permissions, or side effects. Minimal behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no waste. Purpose is front-loaded. However, brevity sacrifices important information given the tool's complexity.

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?

Despite an output schema, the description does not cover return values. Lacks safety/permission context for a mutation tool with 7 parameters and no schema descriptions. Insufficient for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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

Schema description coverage is 0%, and the description adds no value for parameters beyond generic 'partial' statement. None of the 7 parameters are explained, leaving the agent to rely solely on titles.

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

Purpose5/5

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

Clearly states 'Update a time entry' with verb and resource. Distinguishes from sibling tools like redmine_create_time_entry and redmine_delete_time_entry by specifying 'partial — only supplied fields are sent'.

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

Usage Guidelines3/5

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

Implied usage for modifying existing time entries, but no explicit when-to-use or when-not-to-use guidance, nor alternatives mentioned. The description lacks context for usage decisions.

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

redmine_update_versionC

Update a version. Partial — only supplied fields are sent.

Returns the refreshed version. Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
statusNo
sharingNo
due_dateNo
version_idYes
descriptionNo
wiki_page_titleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/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 states that it updates a version (implying mutation) and returns the refreshed version. It also mentions the partial update behavior and the REDMINE_MCP_READ_ONLY flag. However, it lacks details on authentication, side effects, or error conditions.

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 very concise with two sentences, front-loading the main purpose. Every sentence adds value (purpose, partial update nature, return value, read-only flag). There is no trivial information, but it could be structured better.

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 7 parameters, 0% schema coverage, and no output schema description (though output schema exists), the description is incomplete. It does not explain which fields are required (only version_id is required per schema), nor does it provide examples or constraints. The output schema is not described but exists separately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain any parameter meanings or formats. The only hint is 'Partial — only supplied fields are sent,' which implies that the properties are updatable fields, but it does not compensate for the lack of individual 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 'Update a version,' which identifies the specific verb and resource. It returns the refreshed version, adding clarity. However, it does not explicitly differentiate from other update tools like redmine_update_issue, though the context of versions is distinct.

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 minimal guidance: it notes that only supplied fields are sent (indicating partial updates) and that it honors REDMINE_MCP_READ_ONLY. It does not specify when to use this tool versus alternatives (e.g., redmine_create_version) or any prerequisites.

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

redmine_update_wiki_pageA

Update an existing wiki page (with optional optimistic concurrency).

Args: project: numeric id or identifier slug. title: target wiki page title. text: new markdown body. Empty is rejected client-side. version: if non-zero, included as the optimistic-lock version. A mismatch surfaces as redmine_api_409 from Redmine. parent_title: optional new parent wiki page. comments: optional revision comment.

Returns the updated page (re-fetched after PUT for fresh metadata). Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
titleYes
projectYes
versionNo
commentsNo
parent_titleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses optimistic locking, empty text rejection, return behavior (re-fetched after PUT), and honors read-only mode. Could mention error conditions beyond 409.

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?

Description is structured with bullet points for arguments, a note about return, and read-only flag. It is concise, front-loaded with purpose, and every sentence adds value.

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

Completeness5/5

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

Given the output schema exists, description doesn't need to detail returns, but it does. Covers all parameters, optimistic concurrency, error case (409), and read-only mode. Complete for a complex tool.

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 coverage is 0%, but description explains all 6 parameters with details: project type, title, text constraints, version locking, optional parent_title and comments. Adds significant meaning beyond the schema.

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

Purpose5/5

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

The description states 'Update an existing wiki page' with optional optimistic concurrency, clearly specifying the verb and resource. It distinguishes from siblings like redmine_create_wiki_page and redmine_delete_wiki_page.

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

Usage Guidelines4/5

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

The description implies usage for updating existing pages, differentiating from creation or deletion via the name and context. However, it does not explicitly state when not to use or list alternatives.

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

redmine_upload_attachmentA

Upload a file (path-restricted) and optionally attach it to an issue.

Args: file_path: absolute or ~-relative path to a regular file. Must resolve under one of REDMINE_MCP_ALLOWED_DIRECTORIES (default /tmp); symlinks are resolved before checking. issue_id: if non-zero, attach the upload to this issue. Otherwise return the bare upload token for later attachment. description: optional human-readable description for the attachment (only meaningful when attaching).

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idNo
file_pathYes
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. It details path restriction (must be under allowed directories), symlink resolution, honoring read-only flag, and dual behavior based on issue_id (attach vs return token). No contradictions.

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?

Description is well-structured with a clear purpose sentence followed by bullet-pointed args. Front-loaded and appropriately sized. Every sentence adds value.

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

Completeness5/5

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

Given that an output schema exists, return values are likely documented there. Description covers security (read-only, path restriction), dual behavior, and parameter usage. Complete for this tool's complexity.

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%, requiring description to add meaning. It does: file_path explains path restriction, issue_id explains attachment vs token behavior, description explains it's only meaningful when attaching. Adds significant context beyond schema.

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

Purpose5/5

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

Description explicitly states 'Upload a file (path-restricted) and optionally attach it to an issue.' The verb 'upload' and resource 'file' are specific. It distinguishes from sibling tools like 'redmine_upload_project_file' which uploads to project files, and 'redmine_download_attachment' for downloading.

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

Usage Guidelines4/5

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

Description explains when to use: to upload a file and optionally attach to an issue. It mentions honoring REDMINE_MCP_READ_ONLY, implying a write operation that can be prevented. No explicit alternatives, but context is clear.

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

redmine_upload_project_fileA

Upload a file to a project's Files section.

Args: project_id: project id or slug. file_path: path to file (path-restricted like attachment upload). filename: optional override for the file name. description: optional file description. version_id: optional version to associate. 0 for none.

Honors REDMINE_MCP_READ_ONLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNo
file_pathYes
project_idYes
version_idNo
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description is the sole behavioral source. It mentions honoring REDMINE_MCP_READ_ONLY, which adds a safety constraint, but does not disclose behaviors like file size limits, overwrite policy, or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: a brief purpose line followed by a clean parameter list. It is well-structured and free of unnecessary words.

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 presence of an output schema and the parameter descriptions, the tool is fairly well-covered. However, missing details on error conditions, file size limits, or what happens if the file already exists leave some gaps. The read-only behavior note is 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?

Schema description coverage is 0%, so the description fully compensates by explaining each parameter's meaning and optionality. It adds valuable context such as path restriction for file_path and version association.

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

Purpose5/5

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

The description clearly states the action 'Upload' and the specific resource 'file to a project's Files section'. It distinguishes this tool from siblings like redmine_upload_attachment which likely targets other entities.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives such as redmine_upload_attachment. It implies usage for project files but lacks conditions, prerequisites, or exclusions.

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

redmine_view_attachmentA

Return an image attachment inline so a model can see it.

PNG/JPEG/GIF/WebP attachments are returned as MCP image content. Other types, or images larger than max_bytes (default 5 MB), return a structured error pointing at redmine_download_attachment.

Args: attachment_id: numeric Redmine attachment id. max_bytes: inline size ceiling; larger images are refused.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_bytesNo
attachment_idYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the supported formats (PNG/JPEG/GIF/WebP), the return medium (MCP image content), the size ceiling default (5 MB), and the failure behavior (structured error redirecting to download). It does not mention permission/access requirements, which keeps it from a 5.

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?

Front-loaded with the core behavior, then a clear Args block. Slight redundancy in restating the size ceiling in both the body and the Args section, but overall tight and well organized.

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

Completeness4/5

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

No output schema and no annotations, so the description must explain results itself, which it does by naming the return type (MCP image content) and the error path. An agent has enough to call it correctly; only access/permission behavior is left implicit.

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 coverage is 0%, so the description must fully compensate, and it does: attachment_id is defined as a numeric Redmine attachment id and max_bytes as the inline size ceiling with a stated default. Both parameters gain meaning not present in the bare schema.

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

Purpose5/5

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

States a specific verb and resource ('Return an image attachment inline so a model can see it') and explicitly scopes which formats qualify. It also names the sibling redmine_download_attachment, so an agent can distinguish it without opening either schema.

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

Usage Guidelines4/5

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

Gives a clear routing rule: unsupported types or oversized images return a structured error pointing at redmine_download_attachment, which tells the agent when to fall back. It stops short of stating the positive condition in a general way (e.g. 'use this whenever you need to visually inspect an image'), but the alternative is named with its trigger condition.

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

Tool Schema Changelog

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

  1. 20 tool updatesv1.1.0
    • Addedredmine_activity_feed
    • Changedredmine_add_comment1 field changed
      • addedInput schema / properties / quiet
        Added value: +{
        +  "default": false,
        +  "title": "Quiet",
        +  "type": "boolean"
        +}
    • Changedredmine_bulk_create_issues2 fields changed
      • addedInput schema / properties / concurrency
        Added value: +{
        +  "default": 1,
        +  "title": "Concurrency",
        +  "type": "integer"
        +}
      • addedInput schema / properties / quiet
        Added value: +{
        +  "default": false,
        +  "title": "Quiet",
        +  "type": "boolean"
        +}
    • Addedredmine_bulk_create_time_entries
    • Changedredmine_bulk_update_issues4 fields changed
      • addedInput schema / properties / clear_held
        Added value: +{
        +  "default": false,
        +  "title": "Clear Held",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / concurrency
        Added value: +{
        +  "default": 1,
        +  "title": "Concurrency",
        +  "type": "integer"
        +}
      • changedInput schema / properties / held / default
        Previous value: -falseNew value: +""
      • changedInput schema / properties / held / type
        Previous value: -"boolean"New value: +"string"
    • Changedredmine_close_issue1 field changed
      • addedInput schema / properties / quiet
        Added value: +{
        +  "default": false,
        +  "title": "Quiet",
        +  "type": "boolean"
        +}
    • Addedredmine_copy_issue
    • Changedredmine_create_issue3 fields changed
      • changedInput schema / properties / held / default
        Previous value: -falseNew value: +""
      • changedInput schema / properties / held / type
        Previous value: -"boolean"New value: +"string"
      • addedInput schema / properties / quiet
        Added value: +{
        +  "default": false,
        +  "title": "Quiet",
        +  "type": "boolean"
        +}
    • Changedredmine_create_project6 fields changed
      • addedInput schema / properties / inherit_members / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / inherit_members / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / inherit_members / type
        Removed value: -"boolean"
      • addedInput schema / properties / is_public / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / is_public / default
        Previous value: -trueNew value: +null
      • removedInput schema / properties / is_public / type
        Removed value: -"boolean"
    • Addedredmine_health
    • Addedredmine_list_child_issues
    • Addedredmine_list_endpoints
    • Addedredmine_metrics
    • Addedredmine_my_issues
    • Changedredmine_search_issues3 fields changed
      • addedInput schema / properties / custom_fields
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "string"
        +    }
        +  ],
        +  "default": "",
        +  "title": "Custom Fields"
        +}
      • addedInput schema / properties / sort
        Added value: +{
        +  "default": "",
        +  "title": "Sort",
        +  "type": "string"
        +}
      • addedInput schema / properties / tracker
        Added value: +{
        +  "default": "",
        +  "title": "Tracker",
        +  "type": "string"
        +}
    • Addedredmine_time_report
    • Addedredmine_today_time_entries
    • Changedredmine_update_issue4 fields changed
      • addedInput schema / properties / clear_held
        Added value: +{
        +  "default": false,
        +  "title": "Clear Held",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / held / default
        Previous value: -falseNew value: +""
      • changedInput schema / properties / held / type
        Previous value: -"boolean"New value: +"string"
      • addedInput schema / properties / quiet
        Added value: +{
        +  "default": false,
        +  "title": "Quiet",
        +  "type": "boolean"
        +}
    • Changedredmine_update_project6 fields changed
      • addedInput schema / properties / inherit_members / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / inherit_members / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / inherit_members / type
        Removed value: -"boolean"
      • addedInput schema / properties / is_public / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / is_public / default
        Previous value: -trueNew value: +null
      • removedInput schema / properties / is_public / type
        Removed value: -"boolean"
    • Addedredmine_view_attachment
  2. 81 tool updatesv1.0.0
    • First observedredmine_add_comment
    • First observedredmine_add_group_user
    • First observedredmine_add_membership
    • First observedredmine_add_relation
    • First observedredmine_add_watcher
    • First observedredmine_archive_project
    • First observedredmine_assign_issue_to_version
    • First observedredmine_bulk_close
    • First observedredmine_bulk_create_issues
    • First observedredmine_bulk_update_issues
    • First observedredmine_close_issue
    • First observedredmine_create_group
    • First observedredmine_create_issue
    • First observedredmine_create_issue_category
    • First observedredmine_create_message
    • First observedredmine_create_news
    • First observedredmine_create_project
    • First observedredmine_create_time_entry
    • First observedredmine_create_version
    • First observedredmine_create_wiki_page
    • First observedredmine_delete_group
    • First observedredmine_delete_issue
    • First observedredmine_delete_issue_category
    • First observedredmine_delete_message
    • First observedredmine_delete_news
    • First observedredmine_delete_project
    • First observedredmine_delete_time_entry
    • First observedredmine_delete_version
    • First observedredmine_delete_wiki_page
    • First observedredmine_describe_project
    • First observedredmine_describe_tracker
    • First observedredmine_download_attachment
    • First observedredmine_get_group
    • First observedredmine_get_issue
    • First observedredmine_get_journals
    • First observedredmine_get_role
    • First observedredmine_get_user
    • First observedredmine_get_version
    • First observedredmine_get_wiki_page
    • First observedredmine_invalidate_cache
    • First observedredmine_list_boards
    • First observedredmine_list_custom_fields
    • First observedredmine_list_enumerations
    • First observedredmine_list_groups
    • First observedredmine_list_issue_categories
    • First observedredmine_list_issue_statuses
    • First observedredmine_list_memberships
    • First observedredmine_list_messages
    • First observedredmine_list_news
    • First observedredmine_list_project_files
    • First observedredmine_list_projects
    • First observedredmine_list_queries
    • First observedredmine_list_relations
    • First observedredmine_list_roles
    • First observedredmine_list_time_entries
    • First observedredmine_list_trackers
    • First observedredmine_list_users
    • First observedredmine_list_versions
    • First observedredmine_list_watchers
    • First observedredmine_remove_group_user
    • First observedredmine_remove_membership
    • First observedredmine_remove_relation
    • First observedredmine_remove_watcher
    • First observedredmine_reply_message
    • First observedredmine_request
    • First observedredmine_search
    • First observedredmine_search_issues
    • First observedredmine_set_parent_issue
    • First observedredmine_unarchive_project
    • First observedredmine_update_group
    • First observedredmine_update_issue
    • First observedredmine_update_issue_category
    • First observedredmine_update_journal
    • First observedredmine_update_membership
    • First observedredmine_update_news
    • First observedredmine_update_project
    • First observedredmine_update_time_entry
    • First observedredmine_update_version
    • First observedredmine_update_wiki_page
    • First observedredmine_upload_attachment
    • First observedredmine_upload_project_file

TDQS

B3.4/5.0

Scored across 92 tools

Disambiguation3/5

The set contains many convenience wrappers (e.g., my_issues, today_time_entries, close_issue, assign_issue_to_version) that overlap with general tools like search_issues, list_time_entries, and update_issue. Descriptions generally clarify boundaries, but the sheer number of similar retrieval and mutation paths for issues, time entries, and comments creates moderate misselection risk.

Naming Consistency4/5

All tools use snake_case with a redmine_ prefix, and most follow a verb_noun pattern (list_*, get_*, create_*, update_*, delete_*). A handful are noun phrases (my_issues, today_time_entries, time_report, activity_feed, health, metrics), so minor deviations exist.

Tool Count1/5

92 tools far exceeds the typical 3-15 range and even the 25+ threshold for 'too many.' While Redmine is broad, the surface is inflated with thin wrappers and bulk variants, making the set unwieldy for an agent.

Completeness4/5

Coverage is extensive across issues, projects, time, wiki, news, forums, versions, groups, memberships, categories, watchers, relations, journals, and attachments. Some resources lack full lifecycle (users, roles, custom fields, project files, documents), and there is a passthrough escape hatch, so minor gaps remain.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server providing 63 tools to interact with Redmine instances, covering issues, projects, time entries, and wiki pages. It utilizes streamable HTTP transport and supports per-client authentication for secure management of Redmine resources.
    8 npm
    -
  • A
    license
    B
    quality
    D
    maintenance
    MCP server for Redmine project management, enabling tools for managing projects, issues, users, time entries, groups, memberships, versions, wiki, news, attachments, search, and Agile sprints via the Redmine REST API.
    89
    8 npm
    1
    MIT