Skip to main content
Glama

Start a direct file upload

livereacting_upload_file

Start uploading a file from the machine you run on (or the customer's) into the media library. This server cannot read local files, so the upload has three steps: (1) call this tool with the file name, type and exact size in bytes; (2) send each part with an HTTP PUT to its URL, for example by running each returned command with FILE set to the local path (each prints the part's HTTP status) -- a part must be exactly its size in bytes, or storage refuses it with 403; (3) call livereacting_complete_upload with the uploadToken. A file up to 256 MiB is one part. If you cannot run commands or make HTTP PUT requests, you cannot upload; ask for a public link and use livereacting_import_from_url instead. The extension must match the type (video: .mp4 .m4v .mov .flv .webm .ogv .3gp .wmv .avi .mkv; audio: .mp3 .m4a .wav; image: .jpg .jpeg .png .gif .bmp .svg .heic .webp). The size must fit the plan's max file size, and a video is refused once storage is full. The part URLs and the token expire after 3 days.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesFile name shown in the library, with its extension, for example intro.mp4.
sizeYesExact file size in bytes, for example from `wc -c < FILE`.
typeYesWhat kind of media this is. A video playlist layer can only use video files.
folderIdNoPut the file in this folder. Omit to upload to the root of the library.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only tell the agent this is a non-idempotent, non-read-only operation; the description goes far beyond that with the 3-step protocol, the 403 refusal when a part's byte count is wrong, the 256 MiB single-part threshold, plan max-size and full-storage refusals for video, and a 3-day expiry on part URLs and the token. This is behaviorally rich context the schema cannot carry.

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 decisive constraint, and the numbered three-step flow is scannable. It is long, but nearly every clause carries a constraint (sizes, expiry, extension/type matching) rather than padding, so the length is largely earned.

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 4-parameter tool with no output schema, the description covers the complete lifecycle: precondition (file metadata), execution (HTTP PUT to part URLs), completion (token handoff), failure modes (403, storage full, plan limits), and expiry. An agent has everything needed to call it correctly or decide not to.

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 baseline is 3, but the description adds real meaning: it supplies the full extension lists per type (e.g. video: .mp4 .m4v .mov ...) that the schema enum alone does not contain, and reinforces that size must be exact bytes and must fit the plan limit. It stops short of explaining folderId placement beyond what the schema says.

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 ('start uploading a file into the media library') and immediately delimits scope with the key constraint that the server cannot read local files. It clearly distinguishes itself from livereacting_complete_upload (next step) and livereacting_import_from_url (alternate path).

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 and when-not-to-use guidance: if you cannot run commands or make HTTP PUTs, 'ask for a public link and use livereacting_import_from_url instead.' It also names the required follow-up tool and the exact sequencing across all three steps.

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.