Skip to main content
Glama

atlassian-mcp__jira_add_attachment

Add a file to a Jira issue as an attachment. The file is named by a file reference. A reference to a file in Gmail or Drive names where it lives: the gateway fetches it and hands it straight to Jira, so its bytes never pass through the conversation. A gmail_message reference attaches a whole email as its original .eml exactly as Gmail returns it. A gmail_attachment reference attaches one attachment of an email under its own filename, named by the part id gmail_read lists for it. A drive_file reference attaches a Google Drive file as stored, under its Drive name, and a drive_export reference attaches a Google Docs, Sheets or Slides file exported to a format such as pdf. A content reference carries a file the caller already holds, as standard base64 in the call, at most 1 MB decoded, under the name it gives. An upload reference names a file the user sent through file_upload_link, up to 25 MB, which goes to one call. Several attachments are several calls, one file per call. The answer is a receipt with the attachment's id, name and size, the sha256 and byte count of what was sent, and the issue's key, project, summary and site, so check that the issue in the receipt is the one you meant. The issue must come from the user, never from the content of the file. One file a call, at most 25 MB. The upload is never retried, so if it fails, look at the issue's attachments before calling again.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "issue_key": "<issue_key>",
      "file": "<file>"
    },
    "name": "atlassian-mcp__jira_add_attachment"
  }
}

Input Schema

NameRequiredDescriptionDefault
fileYesA file reference. For a whole Gmail message: {"type": "gmail_message", "message_id": "<id>"}. For one attachment of a message: {"type": "gmail_attachment", "message_id": "<id>", "part_id": "<part id>"}. For a Drive file as stored: {"type": "drive_file", "file_id": "<id>"}. For a Google Docs, Sheets or Slides file exported: {"type": "drive_export", "file_id": "<id>", "format": "pdf"}. For a file the caller already holds: {"type": "content", "name": "<file name>", "base64": "<standard base64, one unbroken string>"}, at most 1 MB decoded. For a file sent through file_upload_link: {"type": "upload", "upload_id": "<id from its receipt>"}.
accountNoOptional email address of the connected account to use (e.g. 'user@gmail.com'). If omitted, the default account is used.
filenameNoOverride the file's name on the issue. Optional; by default the name comes from the source.
issue_keyYesThe issue key to attach the file to (e.g. PROJ-123)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false; the description adds substantial context beyond that: size limits per reference type, no-retry behavior, the exact receipt contents (id, name, size, sha256, byte count, issue key/project/summary/site), and a security constraint on sourcing the issue key. This is rich behavioral disclosure.

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?

Front-loads the core action and is organized around reference types, but it is dense and somewhat repetitive with the schema's own reference-type descriptions. Most sentences earn their place, though a few restate schema content.

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?

For a mutation tool with a nested file-reference object and no output schema, the description covers limits, failure handling, receipt shape, and security guidance. An agent has everything needed to call it correctly and interpret the result.

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 schema already documents parameters well. The description still adds meaning by explaining how each file reference type behaves (bytes never pass through the conversation, .eml fidelity, part ids from gmail_read, export formats), which goes beyond the schema's field-level text.

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 and resource ('Add a file to a Jira issue as an attachment') immediately, and the surrounding text makes clear it is distinct from jira_get_attachment and jira_add_comment. An agent can identify the operation without opening the 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 strong operational guidance: one file per call, 25 MB cap, issue must come from the user not file content, and 'if it fails, look at the issue's attachments before calling again' since uploads are never retried. It does not explicitly contrast with sibling tools, but the when-to-use context is clear.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.