Skip to main content
Glama
qase-tms

Qase MCP Server

Official
by qase-tms

Upload attachment

qase_attachment_upload

Upload files to Qase and receive hashes. Pass these hashes in an attachments field to attach the files; uploading alone does not attach.

Instructions

Upload files and get back the hashes other tools reference them by. Pass file_base64 plus filename for one file, or files for several in one request; file_path only works when the server runs on the same machine as the file — never on the hosted connector. The hash must then be passed in an attachments field; uploading alone attaches nothing. This is the only tool that sends multipart/form-data, which is why qase_api cannot send files. Cost: one API call per request, dominated by size.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
codeYesProject code, e.g. DEMO
fileNoDeprecated: use file_base64 or file_path. Accepts an absolute path or base64 content.
filesNoSeveral files in one request, each entry with its own filename plus file_base64 or file_path. One round trip, hashes returned in the same order. Limits and sizing are in qase_tool_help.
filenameNoOriginal filename with extension. Required for the single-file form.
file_pathNoSingle-file form. Absolute path on the machine running THIS server; a remote server cannot see it — send file_base64 instead.
file_base64NoSingle-file form. File content, base64 encoded. Use this unless the server runs on the same machine as the file.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv3.0.0
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedInput schema / properties / code / description
      Previous value: -"Project code (2-10 uppercase letters, numbers, or underscores)"New value: +"Project code, e.g. DEMO"
    • changedInput schema / properties / file / description
      Previous value: -"Deprecated: prefer file_base64 or file_path, which say which one you mean. Accepts either an absolute path to an existing file or base64 content."New value: +"Deprecated: use file_base64 or file_path. Accepts an absolute path or base64 content."
    • changedInput schema / properties / file_base64 / description
      Previous value: -"Single-file form. File content, base64 encoded. Use this whenever the server is not on the same machine as the file — including the hosted connector, where it is the only option. Base64 grows a file by a third and the whole request body is capped at 10 MB by default, so this form carries roughly 7 MB of file; larger ones need a local stdio server and file_path."New value: +"Single-file form. File content, base64 encoded. Use this unless the server runs on the same machine as the file."
    • changedInput schema / properties / file_path / description
      Previous value: -"Single-file form. Absolute path to a file on the machine running THIS server. Only usable for a local stdio server; a remote server cannot see your filesystem — send file_base64 instead."New value: +"Single-file form. Absolute path on the machine running THIS server; a remote server cannot see it — send file_base64 instead."
    • changedInput schema / properties / files / description
      Previous value: -"Several files in one request — each entry carries its own filename and either file_base64 or file_path. Qase accepts at most 20 files, 32 MB per file and 128 MB in total per request. Those are Qase limits; on a network transport the request body itself caps out at 10 MB by default, so base64 content has to fit in that. Prefer this over one call per file: it is a single round trip and returns the hashes in the same order."New value: +"Several files in one request, each entry with its own filename plus file_base64 or file_path. One round trip, hashes returned in the same order. Limits and sizing are in qase_tool_help."
    • removedInput schema / properties / files / items / additionalProperties
      Removed value: -false
  2. Changed2 schema fields changedv2.7.5
    • changedInput schema / properties / file_base64 / description
      Previous value: -"Single-file form. File content, base64 encoded. Use this whenever the server is not on the same machine as the file — including the hosted connector, where it is the only option."New value: +"Single-file form. File content, base64 encoded. Use this whenever the server is not on the same machine as the file — including the hosted connector, where it is the only option. Base64 grows a file by a third and the whole request body is capped at 10 MB by default, so this form carries roughly 7 MB of file; larger ones need a local stdio server and file_path."
    • changedInput schema / properties / files / description
      Previous value: -"Several files in one request — each entry carries its own filename and either file_base64 or file_path. Qase accepts at most 20 files, 32 MB per file and 128 MB in total per request. Prefer this over one call per file: it is a single round trip and returns the hashes in the same order."New value: +"Several files in one request — each entry carries its own filename and either file_base64 or file_path. Qase accepts at most 20 files, 32 MB per file and 128 MB in total per request. Those are Qase limits; on a network transport the request body itself caps out at 10 MB by default, so base64 content has to fit in that. Prefer this over one call per file: it is a single round trip and returns the hashes in the same order."
  3. Changed5 schema fields changedv2.7.4
    • changedInput schema / properties / file_base64 / description
      Previous value: -"File content, base64 encoded. Use this whenever the server is not on the same machine as the file — including the hosted connector, where it is the only option."New value: +"Single-file form. File content, base64 encoded. Use this whenever the server is not on the same machine as the file — including the hosted connector, where it is the only option."
    • changedInput schema / properties / file_path / description
      Previous value: -"Absolute path to a file on the machine running THIS server. Only usable for a local stdio server; a remote server cannot see your filesystem — send file_base64 instead."New value: +"Single-file form. Absolute path to a file on the machine running THIS server. Only usable for a local stdio server; a remote server cannot see your filesystem — send file_base64 instead."
    • changedInput schema / properties / filename / description
      Previous value: -"Original filename with extension"New value: +"Original filename with extension. Required for the single-file form."
    • addedInput schema / properties / files
      Added value: +{
      +  "description": "Several files in one request — each entry carries its own filename and either file_base64 or file_path. Qase accepts at most 20 files, 32 MB per file and 128 MB in total per request. Prefer this over one call per file: it is a single round trip and returns the hashes in the same order.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "file_base64": {
      +        "description": "File content, base64 encoded. The only option on a remote server.",
      +        "type": "string"
      +      },
      +      "file_path": {
      +        "description": "Absolute path to a file on the machine running THIS server.",
      +        "type": "string"
      +      },
      +      "filename": {
      +        "description": "Original filename with extension",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "filename"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 20,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "code",
      -  "filename"
      -]New value: +[
      +  "code"
      +]
  4. Addedv2.2.1

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only carry destructiveHint=false, so the description does the real work: it discloses the hash-return contract, the remote-vs-local file_path limitation, the multipart/form-data uniqueness, and a cost model ('one API call per request, dominated by size'). These are behavioral traits no annotation conveys.

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 payoff (get back hashes), then layers mode selection, the attach step, and cost. Every sentence carries distinct, non-redundant information; nothing is padding.

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 no output schema, the description still explains the return value (ordered hashes) and the follow-up requirement, plus where limits live (qase_tool_help). For a 6-param upload tool with a two-step workflow, nothing critical is missing.

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%, so the baseline is 3, but the description adds cross-parameter logic the schema doesn't state — single-file form (file_base64+filename) vs multi-file form (files), and the conditional validity of file_path based on server locality. It doesn't cover the deprecated `file` param or the code pattern, keeping it just below the top.

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 ('Upload files') and immediately names the output artifact (hashes other tools reference them by). It also differentiates itself from the qase_api sibling by explaining that this is the only tool that sends multipart/form-data, so an agent knows why to pick this one.

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?

Explicitly distinguishes the three input modes: file_base64+filename for a single file, files for several, and file_path only when server and file share a machine (never on the hosted connector). It also discloses the two-step workflow — 'uploading alone attaches nothing' and the hash must be passed in an `attachments` field — so the agent knows this tool is not sufficient on its own.

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