Skip to main content
Glama

Create upload URL

create_upload_url

A one-time link to upload a local file into the media library, for a client that can run a command (Claude Code, Codex, Cursor): PUT the file to uploadUrl with the returned Content-Type (the result includes the curl command), then call import_media with url set to the returned mediaUrl. A Blender scene (.blend, contentType application/x-blender) is the exception: it skips import_media and its mediaUrl goes into a Blender Render node's Blend file field. So is a Gaussian splat (contentType model/x-spz, model/x-ply or model/x-splat): its mediaUrl goes into a Splat Render node's Splat field, to film a camera move through it. The link expires in 15 minutes and signs one content type. If you cannot run a command, do not call this: ask the person to drop the file into their Treza library in the web app and find it with list_assets. Needs the pipelines:write scope. Spends no credits.

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": {
      "contentType": "<contentType>"
    },
    "name": "create_upload_url"
  }
}

Input Schema

NameRequiredDescriptionDefault
contentTypeYesThe type of the file you will upload, e.g. "image/png" for a PNG logo. The PUT must send exactly this Content-Type.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / contentType / enum
      Previous value: -[
      -  "image/png",
      -  "image/jpeg",
      -  "image/webp",
      -  "image/gif",
      -  "video/mp4",
      -  "video/quicktime",
      -  "video/webm",
      -  "audio/mpeg",
      -  "audio/mp4",
      -  "audio/wav",
      -  "audio/ogg",
      -  "application/x-blender"
      -]New value: +[
      +  "image/png",
      +  "image/jpeg",
      +  "image/webp",
      +  "image/gif",
      +  "video/mp4",
      +  "video/quicktime",
      +  "video/webm",
      +  "audio/mpeg",
      +  "audio/mp4",
      +  "audio/wav",
      +  "audio/ogg",
      +  "application/x-blender",
      +  "model/x-spz",
      +  "model/x-ply",
      +  "model/x-splat"
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / contentType / enum
      Previous value: -[
      -  "image/png",
      -  "image/jpeg",
      -  "image/webp",
      -  "image/gif",
      -  "video/mp4",
      -  "video/quicktime",
      -  "video/webm",
      -  "audio/mpeg",
      -  "audio/mp4",
      -  "audio/wav",
      -  "audio/ogg"
      -]New value: +[
      +  "image/png",
      +  "image/jpeg",
      +  "image/webp",
      +  "image/gif",
      +  "video/mp4",
      +  "video/quicktime",
      +  "video/webm",
      +  "audio/mpeg",
      +  "audio/mp4",
      +  "audio/wav",
      +  "audio/ogg",
      +  "application/x-blender"
      +]
  3. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only say it is non-read-only and non-destructive; the description adds the operationally critical facts: the link expires in 15 minutes, signs exactly one content type, is one-time, requires the pipelines:write scope, and spends no credits. It also describes the required PUT step and the returned curl command, which annotations cannot convey.

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 core action and the PUT-then-import_media sequence, with the exceptions and constraints following logically. It is dense and long-sentenced, but nearly every clause carries actionable information; a little restructuring of the exception sentences would tighten it.

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 by naming the returned fields (uploadUrl, mediaUrl, curl command) and the follow-up call for each case. For a one-parameter tool, an agent has everything needed to call it and continue the workflow.

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 the enum is self-documenting, so the schema does most of the work. The description still adds value by tying each content type to a consequence — the PUT must send exactly that Content-Type, and .blend and splat types route to specific node fields rather than import_media.

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 (creates a one-time link to upload a local file into the media library) and immediately names the downstream siblings it feeds (import_media, list_assets). An agent can distinguish it from import_media without opening either 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?

Explicit when-to-use (a client that can run a command, with named examples Claude Code, Codex, Cursor), explicit when-not (cannot run a command → ask the person to use the web app and find the file with list_assets), plus named exceptions for .blend and splat content types that skip import_media. Nothing is left to inference.

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.