Skip to main content
Glama
igorolv

redmine-mcp-server

attachFileToIssue

attachFileToIssue

Upload a server-local file and attach it to an existing Redmine issue by providing issue ID and file path. Retries may create duplicate attachments.

Instructions

Upload a readable server-local file and attach it to one existing Redmine issue. This is non-idempotent and retries may create duplicate attachments; getAttachment performs the reverse read/download flow.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
issueIdYes
localPathYes
descriptionNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
issueIdYes
journalIdNo
attachmentIdNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.1.1

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare idempotentHint=false and destructiveHint=false, but the description adds the concrete consequence an agent actually needs: retrying may create duplicate attachments. It also discloses that the file must be server-local and readable, which is a real operational constraint. Auth/permission requirements are not covered, keeping it out of 5 territory.

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, front-loaded with the action and scope, then the non-idempotency caveat and sibling pointer. No filler; every clause earns its place.

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 3-parameter mutation tool with an output schema and full annotation coverage, the description supplies purpose, idempotency behavior, and sibling routing. The remaining gap is parameter-level detail and any permission/error expectations, which is minor given the output schema handles results.

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 carry parameter meaning. 'server-local file' usefully clarifies that localPath is a path on the server rather than the client, and 'one existing issue' implies issueId must reference a valid issue. However, the optional description parameter and the format/type of issueId are entirely undocumented.

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 (Upload/attach), a specific resource (one existing Redmine issue), and a constraint on the input (readable server-local file). It also distinguishes itself from getAttachment by naming that sibling's opposite flow, so an agent can separate the two 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 clear operating context: non-idempotent, retries may create duplicates, and getAttachment handles the reverse read/download path. It stops short of explicit when-not-to-use guidance (e.g., no size/permission prerequisites), so it is clear context rather than full routing.

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