Skip to main content
Glama
qase-tms

Qase MCP Server

Official
by qase-tms

Upload attachment

qase_attachment_upload

Upload screenshots, logs, HAR files, or videos to Qase and retrieve attachment hashes for use in test cases, results, and defects. Send one file or a batch using base64 content or local file paths.

Instructions

Upload files and get back the hashes that other tools reference them by — screenshots, logs, HAR files, videos. For one file pass file_base64 with the base64-encoded bytes, or file_path with an absolute path, plus filename with its extension. For several, pass files — one entry per file, each with its own filename — and they go up in a single request, hashes returned in the same order. Use file_base64 unless the server runs on the same machine as the file: a remote server, the hosted connector included, cannot see your filesystem, and file_path will simply not find the file. Qase accepts at most 20 files, 32 MB per file and 128 MB per request; a request over any of those is refused here before anything is sent, so split it across calls. The returned hash is what goes in the attachments field of qase_case_upsert, qase_result_record, qase_defect_upsert or qase_triage_defect — uploading alone attaches nothing, the hash has to be passed on. This is the only tool that sends multipart/form-data, which is why qase_api cannot send them. Upload once and reuse the hash rather than re-uploading the same evidence per case. Cost: one API call per request whatever the number of files, dominated by total size rather than round trip — well under a second for a screenshot, seconds for a video. Base64 inflates the payload by about a third.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
codeYesProject code (2-10 uppercase letters, numbers, or underscores)
fileNoDeprecated: prefer file_base64 or file_path, which say which one you mean. Accepts either an absolute path to an existing file or base64 content.
filesNoSeveral 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.
filenameNoOriginal filename with extension. Required for the single-file form.
file_pathNoSingle-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.
file_base64NoSingle-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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. 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"
      +]
  2. Addedv2.2.1

TDQS

A4.9/5.0
Behavior5/5

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

Beyond annotations, the description discloses important behavior: uploads alone attach nothing, hashes are returned in input order, requests over 20 files/32 MB per file/128 MB total are refused before being sent, and there is one API call per request with cost implications and base64 inflation.

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 front-loaded with purpose and the most critical usage constraints, and it is dense rather than padded. It is slightly longer than strictly necessary and some details repeat schema descriptions, but the extra cost and performance context earns most of its space.

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 correctly explains the return value (hashes) and how those hashes are consumed by sibling tools. It covers validation limits, the local/remote filesystem distinction, and the integration path into attachments fields, so an agent has enough context to call it 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?

Even though schema coverage is 100%, the description adds real selection semantics: single-file forms via file_base64/file_path plus filename, multi-file form via files, and the exact condition for choosing file_base64 over file_path. It also clarifies that hashes come back in the same order as the files.

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 opens with a specific verb and resource: uploading files and returning the hashes other tools reference. It names example content types (screenshots, logs, HAR files, videos) and distinguishes itself from siblings by noting it is the only tool that sends multipart/form-data, which qase_api cannot do.

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?

It gives explicit when-to-use guidance: use file_base64 unless the server is local, since a remote server cannot see the filesystem. It also names the alternative (qase_api) and why it cannot handle this case, and advises reusing hashes instead of re-uploading per case.

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