Skip to main content
Glama

Create Video Upload URL

create_media_upload

Creates a signed URL for uploading a video file (MP4 or MOV, max 200MB) straight to FeedSquad storage over HTTP, for clients that can run commands or make HTTP requests. A video's bytes do not fit in a tool argument, so the file goes to upload_url as one HTTP PUT with the raw bytes as the body, the Content-Type header set to mime_type and x-upsert: false; the URL's token authorizes it, with no other credential. Takes kind (video), mime_type (video/mp4 or video/quicktime), size_bytes (the exact file size in bytes, at most 200MB) and an optional filename. Returns upload_id, upload_url, method (PUT), headers, expires_at (two hours after creation), max_bytes, a curl command line and next_step, the attach call that takes upload_id together with a post_id. The storage path is chosen by the server, and a stored file cannot be overwritten through the URL. Clients without HTTP access attach a video by its public HTTPS URL. Nothing counts against the 5GB monthly video budget until the upload is attached; a size_bytes larger than what remains of the budget is refused up front. At most 5 uploads can be open at once and 20 created in any 24 hours. Errors carry error.data = { code, recovery } with codes UNSUPPORTED_FORMAT, UPLOAD_TOO_LARGE, VIDEO_QUOTA_EXCEEDED, TOO_MANY_OPEN_UPLOADS, TOO_MANY_UPLOADS_TODAY and UPLOAD_NOT_AVAILABLE. Included with paid Handler only: on Free Handler the call is refused as not included in the plan.

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": {
      "kind": "<kind>",
      "mime_type": "<mime_type>",
      "size_bytes": "<size_bytes>"
    },
    "name": "create_media_upload"
  }
}

Input Schema

NameRequiredDescriptionDefault
kindYesWhat is being uploaded. Only video for now.
filenameNoOptional original file name, kept for the record. It does not choose the storage path.
mime_typeYesThe file type: video/mp4 for .mp4, video/quicktime for .mov. The PUT must send the same value as its Content-Type, and the file content must match it.
size_bytesYesThe exact file size in bytes (at most 200MB). The uploaded file may not be larger.

Output Schema

NameRequiredDescriptionDefault
curlYes
kindYes
methodYes
headersYes
max_bytesYes
next_stepYes
upload_idYes
expires_atYes
upload_urlYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only cover the generic safety flags; the description supplies the operationally important behavior: token-only auth on the PUT, two-hour expiry, server-chosen storage path, no overwrite through the URL, quota accounting deferred to attach, up-front refusal when size exceeds remaining budget, concurrency limits (5 open / 20 per day), and paid-plan gating. It even enumerates the error codes and the error.data shape, which is well beyond what annotations provide.

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?

It is front-loaded with the core action and the HTTP mechanics, and the dense run-on structure still keeps related facts (auth, expiry, limits, plan gating) together. It loses a point for restating schema details such as the mime_type enum values and the 200MB ceiling, which are already in the schema.

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 an output schema exists, the description need not explain returns, yet it summarizes the useful parts (upload_id, upload_url, method, headers, expires_at, curl command, next_step). Combined with the auth model, quota semantics, rate limits and error codes, an agent has everything needed to invoke and recover from this tool without further lookup.

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 100% and the property descriptions already explain kind, mime_type, size_bytes and filename, so the baseline is 3. The description adds some genuine meaning — that size_bytes is checked against the remaining monthly budget up front and that mime_type must match both the Content-Type header and the actual file content — but most of the parameter text restates enum values already in the 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?

The description names a specific verb and resource ('Creates a signed URL for uploading a video file ... straight to FeedSquad storage') and scopes it to MP4/MOV up to 200MB. It also distinguishes this pre-upload step from the later attach step ('next_step, the attach call that takes upload_id together with a post_id'), so an agent can separate it from siblings like set_post_video or upload_asset.

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?

It states the qualifying client condition ('for clients that can run commands or make HTTP requests') and the exclusion with an alternative ('Clients without HTTP access attach a video by its public HTTPS URL'). It further clarifies that nothing counts against the quota until the upload is attached, which tells the agent when this call is the cheap option.

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.

Resources