Skip to main content
Glama
0xkillaflow

Redmine MCP Server

by 0xkillaflow

Download attachment

redmine_download_attachment
Idempotent

Download a Redmine attachment to a local directory using its numeric ID. Save the file without overwriting existing ones.

Instructions

Download a Redmine attachment and save it into a local directory. Find the id with redmine_get_issue using include: ["attachments"]. The file is written into save_path under the attachment's own name unless you override filename. The destination must be inside the operator-configured REDMINE_ALLOWED_DIRECTORIES, and an existing file is never overwritten — the call fails instead, so pass a different filename or directory to retry. Returns where the file was saved, its name, and its size in bytes.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filenameNoName to save the file under. Defaults to the attachment's own filename. Any directory part is stripped: only a bare filename is honoured.
save_pathYesDestination **directory** — the filename is appended to it, so do not include one. It must resolve inside the operator-allowlisted REDMINE_ALLOWED_DIRECTORIES.
attachment_idYesNumeric id of the attachment. Get it from `redmine_get_issue` with `include: ["attachments"]`, which lists each attachment id, filename, and size.
Behavior1/5

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

Annotation contradiction: idempotentHint is true, but description states 'an existing file is never overwritten — the call fails instead', meaning the call is not idempotent (first call succeeds, subsequent calls fail). Otherwise, description adds useful behavioral details about allowed directories, overwrite behavior, and return values.

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?

6 sentences, well-structured with purpose first, then prerequisite, filename override, destination constraints and failure condition, then return values. Every sentence adds value, no 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?

Covers all 3 parameters fully, explains constraints (allowed directories, overwrite), explains how to get attachment id via another tool, and describes return values (saved path, name, size) despite no output schema. Complete for this 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 coverage is 100%, but description adds meaning: for attachment_id, explains how to find it; for save_path, clarifies it's a directory and filename is appended; for filename, explains default and stripping of directory parts. This enhances usability beyond 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?

Clearly states verb (download and save), resource (Redmine attachment), and distinguishes from sibling upload tool. Also provides prerequisite (find id via redmine_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 Guidelines4/5

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

Provides clear context: need to find attachment id via redmine_get_issue with include: attachments. Explains destination constraints and overwrite policy. Does not explicitly exclude alternative tools, but given the sibling list, it is the only download tool.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

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

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

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