Skip to main content
Glama

upload_markdown

Upload a file to a GitLab project for use in markdown content. Provide project ID and file path; requires permission and modifies remote state.

Instructions

Upload a file for use in markdown content. Use this for the specific operation described; choose a sibling tool when you need a different resource or lifecycle action. It changes remote GitLab state and requires the necessary project or group permission; GitLab returns validation, conflict, permission, or rate-limit errors instead of silently applying an invalid request. When project_id or group_id is accepted, provide the numeric ID or complete URL-encoded path described by the schema; use required identifiers and pagination fields exactly as documented.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
jmespathNoOptional JMESPath expression filtering the JSON result before return.
file_pathYesPath to the file to upload
project_idYesProject ID or URL-encoded path of the project

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv2.1.66
    • addedInput schema / properties / jmespath
      Added value: +{
      +  "description": "Optional JMESPath expression filtering the JSON result before return.",
      +  "type": "string"
      +}
  2. Addedv2.1.45
  3. Removedv2.1.43
  4. Addedv2.1.18
  5. Removedv2.1.14
  6. Addedv2.1.11
  7. Removedv2.1.10
  8. Changed1 schema field changedv2.1.9
    • removedInput schema / additionalProperties
      Removed value: -false
  9. First observedv1.0.0

TDQS

B3.3/5.0
Behavior4/5

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

The annotations provide only openWorldHint, so the description carries most of the behavioral burden. The description adds meaningful context: the operation changes remote GitLab state, requires project or group permission, and surfaces validation, conflict, permission, or rate-limit errors rather than silently applying invalid requests. It could go further by explaining what a successful upload returns, but the core mutation and error behavior are clearly disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is reasonably short and front-loads the purpose in the first sentence. The second sentence is largely generic boilerplate about choosing a sibling tool, and the final sentence mixes parameter advice with error behavior, including references to fields not present in the schema. It is not bloated, but contains some filler that does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter tool with two required parameters and no output schema, the description covers the key operational facts: what it does, that it mutates state, that permissions are required, and what kinds of errors can occur. The main gaps are the lack of any description of the return value and the misleading mention of group_id and pagination fields that are absent from the schema, leaving moderate room for agent confusion.

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 the baseline is 3 even without extra parameter guidance. The description adds some useful emphasis on numeric ID or URL-encoded path handling for project_id, matching the schema. However, it also refers to group_id and pagination fields that do not appear in the input schema, which slightly confuses the otherwise adequate parameter guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'Upload a file for use in markdown content.' It is clear enough about the tool's basic job, and the mention of changing remote GitLab state adds useful scope. However, the sibling-tool sentence is generic and does not name any concrete alternative, so it does not meaningfully distinguish this tool from similar file-related tools like create_or_update_file or push_files.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

There is no real when-to-use guidance beyond the boilerplate 'Use this for the specific operation described; choose a sibling tool when you need a different resource or lifecycle action.' This does not tell an agent when this tool is preferred, when to avoid it, or which sibling should be chosen instead. The instruction is essentially a restatement of the obvious and provides no actionable decision support.

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

Deploy Server

Other Tools