Skip to main content
Glama

Create upload address

create_upload

A signed address to upload one file into the account: an image (PNG, JPEG or WebP, up to 10 MB), a video (MP4 or MOV, up to 200 MB: video_upscale takes 3 minutes, every other tool 50 MB) or a sound (MP3 or WAV, up to 15 MB). Use it from a shell. For a file up to 4 MB, one PUT whose answer is JSON with url, valid 15 minutes. For a larger one pass size (bytes, e.g. from wc -c < file) and content_type: you get upload_url with the exact headers to PUT the file straight into the store, then POST complete_url, whose answer is JSON with url (curl does both). Always take that url (a video's url carries its size and length, e.g. …-1280x720_12s.mp4). Pass an image as params.image or in params.references, a video as params.video (recast, video_upscale, the video tools), a sound as params.audio of lip_sync. For an image on the web use import_image instead.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "create_upload"
  }
}

Input Schema

NameRequiredDescriptionDefault
sizeNoThe file's size in bytes; needed for a file over 4 MB.
content_typeNoThe file's type; needed with size over 4 MB.

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 declare the safety profile (non-readonly, non-idempotent, non-destructive, closed-world), and the description layers on behavior they cannot express: a 15-minute URL validity window, the two-step upload/complete handshake with required headers, and the fact that a video's returned url encodes size and duration. That is material operational context beyond the structured fields.

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 purpose and limits, and every clause carries operational information with little filler. It is however a single dense paragraph with stacked parentheticals, so the 4 MB path and the 200 MB path are harder to scan than a short structured listing would be.

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?

There is no output schema, and the description compensates fully by specifying the shape of each response (JSON with url; upload_url plus complete_url, then JSON with url) and how long the url stays valid. For a two-parameter, multi-step upload tool, nothing an agent needs in order to call it correctly 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 100% and both params are already documented, so the burden is low, but the description still adds the reason for each: size in bytes with a concrete derivation (`wc -c < file`) and the 4 MB threshold that makes both parameters necessary. It does not enumerate which content_type values pair with which media class, leaving that to the enum.

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?

Opens with a specific verb+resource: 'A signed address to upload one file into the account', then enumerates exactly which media types and limits apply. It also names the sibling it is not (import_image), so an agent can separate it from the other creation tools without opening a 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 branching conditions: one PUT for files up to 4 MB, size+content_type plus upload_url/complete_url POST for larger ones, and 'Use it from a shell' for execution context. It closes with an exclusion ('For an image on the web use import_image instead') and states where the resulting url belongs (params.image, params.references, params.video, params.audio of lip_sync).

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