Skip to main content
Glama

Add a file to a version

version_file_upload

Add a file to a version that already exists (for a NEW upload, pass files with the upload call instead: the version then shows them from the start): returns a presigned upload URL for exactly file_size bytes; upload with the curl command from next_step (this needs a shell that can run curl). The file belongs to the version as soon as the bytes land (no complete call); to show it in the notes, put the markdown line it returns on a line of its own at the start of the notes in version_notes_update (it becomes a file block). By convention attach the working files that made the version as ONE archive named source.zip (zip the project folder without node_modules, build output or renders), so the next agent gets a consistent snapshot. Max 30 MB per file, 20 files per version. A version's files never change: a name can be used once per version; to change the source, upload a new version and attach to that. Needs full_access (edit access) and membership of the asset's team: any version, not only ones you uploaded.

Input Schema

NameRequiredDescriptionDefault
nameYesFile name as it will be downloaded, e.g. source.zip
asset_idYesThe version (an upload's asset_id / version_id), or an asset id (its current version)
file_sizeYesExact size of the local file in bytes (stat -f%z <file> on macOS, stat -c%s <file> on Linux)
content_typeNoMIME type, e.g. application/zip (default application/octet-stream)

Schema Changelog

Changes observed during successful MCP inspections.

No schema history has been recorded yet.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only say non-readonly/non-idempotent/non-destructive; the description adds substantial context: returns a presigned URL for exactly file_size bytes, no complete call needed, files are immutable (a name used once), requires full_access and team membership, 30 MB/20 files limits, and a convention for source.zip including what to exclude from the zip. This is far beyond annotation coverage.

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?

Front-loaded with the core action and the key alternative, but the run-on parentheticals and stacked clauses (curl, markdown line, zip convention, limits, permissions, immutability) make it dense and hard to scan. Every sentence carries content, but structure is convoluted.

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?

Covers the full contract: presigned URL return, upload mechanism, no complete step, visibility in notes, limits, permissions, and immutability policy. No output schema, but the description explicitly explains what is returned ('presigned upload URL') and how to consume it, so nothing an agent needs 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 already 100%, so baseline is 3; the description adds real semantics (file_size must match exactly and is enforced, name uniqueness per version, asset_id can be asset or version id, content_type implied by application/zip convention). Marginal but meaningful value above schema.

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 action and resource ('add a file to a version that already exists') and explicitly distinguishes from the new-upload path (upload_file_start/upload_file_complete via 'pass files with the upload call instead'). An agent can tell it apart from siblings without opening schemas.

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?

Explicit when-to-use (version already exists) vs when-not (new upload), names the alternative workflow, and gives the exact next action ('upload with the curl command from next_step') and follow-up (put returned markdown line in version_notes_update). Covers the only sane sequence.

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.