Skip to main content
Glama
devyhan
by devyhan

Upload a file

files_upload

Upload file bytes to Redmine and receive an upload token, then attach the file to an issue by referencing the token in issue create or update calls.

Instructions

Uploads raw bytes and returns an upload token. Reference it from issues_create or issues_update via uploads: [{token, filename}]. Tokens expire with the session.

Input Schema

NameRequiredDescriptionDefault
filenameYesFilename Redmine stores.
content_typeNoMIME type sent with the upload.application/octet-stream
content_base64YesRaw file bytes, base64-encoded.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare non-read-only and non-idempotent, and the description adds genuinely useful behavioral context beyond that: the return artifact is a token, it must be consumed via the uploads array, and it expires with the session. Token expiry is a real operational constraint the schema and annotations do not convey.

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 short sentences, zero filler, front-loaded with the action and its return value. Every sentence carries distinct information (what it does, how to use the token, when the token dies).

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?

There is no output schema, yet the description still explains the return value (an upload token) and how to use it, which is the critical missing piece. Combined with the fully documented parameters and annotations, nothing an agent needs to call this correctly is absent.

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 100%, so filename, content_type, and content_base64 are already documented in the schema. The description only echoes "filename" inside the uploads array and adds no format or constraint detail beyond the structured fields, so baseline 3 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?

States a specific verb ("Uploads") and resource ("raw bytes") and immediately names the artifact it produces ("upload token"). It is clearly distinguishable from siblings like files_download and files_get_attachment.

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 tells the agent how to consume the result — reference it from issues_create or issues_update via uploads: [{token, filename}]. It gives clear downstream context but does not spell out when to prefer this upload path over anything else or state preconditions.

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