Skip to main content
Glama

Write upload content

artifact_site_upload_write
Idempotent

Upload file chunks sequentially to an active upload session; mark the final chunk to complete each file, enabling multi-file publishing without publishing automatically.

Instructions

Transfer one file's bytes into a remote upload. Use after upload_start; file creation and assembly are automatic. Send files and chunks sequentially, index starting at 0 for each relative path, at most 256 KiB decoded bytes per chunk. Set final:true on the last chunk of EVERY file (empty files use empty base64). Identical chunk retries are safe, including the final chunk; finalized files cannot be changed in this upload. After all files finish, use publish with upload_id or update with slug, upload_id and expected_version. Does not publish by itself.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathYesRelative uploaded filename, e.g. assets/chart.png; never an absolute local path.
finalYesTrue only for the last chunk of this file.
indexYesZero-based sequential chunk index within this file.
base64YesBase64-encoded bytes, at most 262144 decoded bytes.
tenant_idNoDestination tenant for creation; defaults to the account tenant.
upload_idYesversionId returned by upload_start.
share_tokenNoToken from a user-provided share URL; carries only that share permission.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already indicate idempotentHint=true and destructiveHint=false. The description adds valuable context: retries are safe, finalized files cannot be changed, and the tool does not publish by itself. This goes beyond annotations by clarifying the state machine and idempotency implications. However, it doesn't mention potential errors or failure modes, but the bar is lowered due to annotations.

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

Conciseness5/5

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

The description is compact but information-dense, with each sentence serving a purpose. It front-loads the primary action, then covers sequencing, chunking rules, retry safety, and post-upload steps without fluff. It is appropriately sized for the protocol complexity.

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?

Given the tool's complexity (chunked upload with sequential indexing, final flags, and post-upload steps), the description covers all essential aspects: ordering, size limits, idempotency, and next steps. No output schema exists, but the tool's return value is not critical for correct invocation; the description's focus on input protocol is sufficient.

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 description coverage is 100%, so baseline is 3. The description adds significant semantic context: it explains the chunking protocol (index starting at 0, max 256 KiB), the meaning of final (last chunk of every file, empty for empty files), and upload_id connects to upload_start. This clarifies relationships between parameters (index, final, base64) beyond their individual schema descriptions.

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 clearly states the action: 'Transfer one file's bytes into a remote upload', specifying the resource (remote upload) and the context (after upload_start). It also differentiates from siblings by explicitly mentioning publish and update as subsequent steps, making it distinct from upload_start, upload_status, and upload_cancel.

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?

Explicitly states when to use it ('Use after upload_start'), how to use it (sequential chunks, index starting at 0, max 256 KiB per chunk), and what not to do ('finalized files cannot be changed'). It also names alternative tools (publish, update) for post-upload actions, providing clear routing among siblings.

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