Skip to main content
Glama

manage_user_files

Deliver files through a two-step direct upload, or list/get/delete retained user files. Upload takes file metadata, never a local path or file bytes: compute the exact byte count and base64 MD5 locally, then action=upload reserves a pending file and returns a signed PUT URL plus required headers. Upload the original bytes directly to that URL with every returned header, then call action=complete with the returned full id. Do not claim delivery until complete returns status=ready. No backend workspace is used. Default access=private returns a stable authenticated downloadUrl; keep ordinary files and .blend sources private. Explicit access=public-model makes a self-contained .glb world-readable at its stable CORS-enabled publicUrl. Use that publicUrl for Three.js Motion Graphics and exports, never a local path, private downloadUrl or expiring URL. Files persist independently of the project; limits are 100 MiB/file and 1 GiB/100 live or reserved files/user. Delete removes public model bytes immediately; private bytes follow the retention policy. For timeline media, use import_media.

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": {
      "action": "<action>"
    },
    "name": "manage_user_files"
  }
}

Input Schema

NameRequiredDescriptionDefault
accessNoUpload only. Default private; public-model explicitly publishes a self-contained .glb for anonymous browser/export loading.
actionYes
beforeNoList only: pagination cursor returned as nextBefore.
fileIdNoRequired for complete/get/delete: the full id from upload/list.
filenameNoUpload only: filename including its extension, not a path or URL.
projectIdNoProject for this call (full ID or unambiguous prefix). Explicit-timeline calls never change the target of later calls; legacy project selection applies otherwise.
sizeBytesNoUpload only: exact byte count of the local file; at most 100 MiB.
contentMd5NoUpload only: MD5 of the exact bytes, encoded as base64 (not hex).
timelineIdNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Goes far beyond the annotations: pending/reserved state, signed PUT URL with required headers, the status=ready gate, 'no backend workspace is used', per-file and per-user quotas, and differing delete semantics for public vs private bytes. The one weak spot is that the delete action is described as removing public model bytes immediately while destructiveHint=false, an under-cautious annotation the description partly compensates for by spelling out the deletion behavior; it also does not describe pagination behavior for list beyond the schema's nextBefore.

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-loaded with the two modes of the tool, then sequenced as upload → PUT → complete, which matches the required call order. It is dense and long for one description, with some repetition ('never a local path' appears in two places, and the private-vs-public guidance overlaps the access parameter's own description).

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 nine-parameter, five-action tool with no output schema, the description still supplies the returned artifacts the agent must act on (signed PUT URL, required headers, full id, status=ready, downloadUrl, publicUrl), plus quota and retention behavior. An agent has enough to complete a delivery end to end without guessing.

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 coverage is 78%, so the schema already carries most per-parameter meaning, and the description mostly restates it (access private vs public-model, fileId from upload/list). It does add genuine operational meaning for two params that the schema only labels: that sizeBytes must be the exact byte count of the original file computed locally and that contentMd5 is base64 of those exact bytes, not hex.

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 specific verbs and resources across all five actions: a two-step direct upload plus list/get/delete of retained user files, and explicitly what upload does NOT take (a local path or file bytes). It ends by naming the sibling that handles adjacent work, import_media, so the agent can separate this tool from timeline media handling 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 Guidelines5/5

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

Gives explicit when-to-use rules (upload → complete → only then claim delivery; public-model only for self-contained .glb used by Three.js/export), when-not rules (don't use a private downloadUrl or expiring URL in exports), and an outright alternative ('For timeline media, use import_media'). Defaults and limits are stated as constraints rather than left to inference.

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.