Skip to main content
Glama

Download an output file

creator_download_file
Read-onlyIdempotent

Fetch, by name, a file a script created with creator.render(file) or creator.export(file, format) inside creator_exec, or a media/ file. Ready: returns downloadUrl and downloadExpiresAt (a temporary web link; anyone holding it can read the file until it expires, call again to renew) when this deployment's store can sign one, else only a uri (an MCP resource for resources/read, not a browser URL). Still encoding: {status:"encoding", retryAfterS} — wait that long and call again. Failed: the error message.

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": {
      "file": "<file>"
    },
    "name": "creator_download_file"
  }
}

Input Schema

NameRequiredDescriptionDefault
fileYesFile name passed to creator.render / creator.export, e.g. "hero.mp4".
documentIdNoDocument the file belongs to (default "default").

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "additionalProperties": false,
      -        "properties": {
      -          "boundUri": {
      -            "type": "string"
      -          },
      -          "bytes": {
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "documentId": {
      -            "type": "string"
      -          },
      -          "downloadExpiresAt": {
      -            "type": "string"
      -          },
      -          "downloadUrl": {
      -            "type": "string"
      -          },
      -          "expiresAt": {
      -            "type": "string"
      -          },
      -          "file": {
      -            "type": "string"
      -          },
      -          "format": {
      -            "type": "string"
      -          },
      -          "height": {
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "jobId": {
      -            "description": "The export job that produced this file, on encoding, ready and error results alike; absent for files without a job, such as renders. Pass it as expectedJobId to creator_delete_file.",
      -            "type": "string"
      -          },
      -          "kind": {
      -            "enum": [
      -              "render",
      -              "export"
      -            ]
      -          },
      -          "mime": {
      -            "type": "string"
      -          },
      -          "note": {
      -            "description": "What to do with this result: how to use or share the link, or when to retry.",
      -            "type": "string"
      -          },
      -          "progress": {
      -            "type": "number"
      -          },
      -          "retryAfterS": {
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "revision": {
      -            "type": "string"
      -          },
      -          "state": {},
      -          "status": {
      -            "enum": [
      -              "encoding",
      -              "ready",
      -              "error"
      -            ]
      -          },
      -          "uri": {
      -            "type": "string"
      -          },
      -          "waiting": {
      -            "enum": [
      -              "quota"
      -            ]
      -          },
      -          "width": {
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "file",
      -          "status",
      -          "kind",
      -          "format",
      -          "mime",
      -          "documentId",
      -          "revision",
      -          "expiresAt"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "additionalProperties": false,
      -        "properties": {
      -          "attribution": {
      -            "description": "Credit the user must give when using the file.",
      -            "type": "string"
      -          },
      -          "bytes": {
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "contentType": {
      -            "type": "string"
      -          },
      -          "createdAt": {
      -            "type": "string"
      -          },
      -          "documentId": {
      -            "type": "string"
      -          },
      -          "downloadExpiresAt": {
      -            "type": "string"
      -          },
      -          "downloadUrl": {
      -            "type": "string"
      -          },
      -          "durationS": {
      -            "type": "number"
      -          },
      -          "expiresAt": {
      -            "description": "When an open upload stops accepting its PUT.",
      -            "type": "string"
      -          },
      -          "file": {
      -            "description": "media/<name>: the path scripts and the file tools use.",
      -            "type": "string"
      -          },
      -          "height": {
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "method": {
      -            "const": "PUT"
      -          },
      -          "mime": {
      -            "type": "string"
      -          },
      -          "note": {
      -            "description": "What to do with this result.",
      -            "type": "string"
      -          },
      -          "origin": {
      -            "enum": [
      -              "upload"
      -            ]
      -          },
      -          "sha256": {
      -            "type": "string"
      -          },
      -          "source": {
      -            "type": "string"
      -          },
      -          "status": {
      -            "enum": [
      -              "pending",
      -              "ready",
      -              "error"
      -            ]
      -          },
      -          "type": {
      -            "enum": [
      -              "image",
      -              "svg",
      -              "lottie",
      -              "rive",
      -              "audio",
      -              "font"
      -            ]
      -          },
      -          "uploadBytes": {
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "uri": {
      -            "type": "string"
      -          },
      -          "url": {
      -            "description": "Takes one PUT of exactly uploadBytes bytes with Content-Type contentType; the URL is the only credential, so do not add any.",
      -            "type": "string"
      -          },
      -          "warnings": {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "width": {
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "file",
      -          "status",
      -          "origin",
      -          "documentId",
      -          "createdAt"
      -        ],
      -        "type": "object"
      -      }
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": true,
      -    "properties": {
      -      "error": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "code": {
      -            "type": "string"
      -          },
      -          "hint": {
      -            "description": "A short remedy, when one applies; also folded into message.",
      -            "type": "string"
      -          },
      -          "line": {
      -            "description": "1-based user-code line the error occurred on, when known.",
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "message": {
      -            "type": "string"
      -          },
      -          "retryable": {
      -            "type": "boolean"
      -          },
      -          "source": {
      -            "description": "The offending source line, trimmed to 160 characters.",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "code",
      -          "message",
      -          "retryable"
      -        ],
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "error"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "boundUri": {
      +            "type": "string"
      +          },
      +          "bytes": {
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "documentId": {
      +            "type": "string"
      +          },
      +          "downloadExpiresAt": {
      +            "type": "string"
      +          },
      +          "downloadUrl": {
      +            "type": "string"
      +          },
      +          "expiresAt": {
      +            "type": "string"
      +          },
      +          "file": {
      +            "type": "string"
      +          },
      +          "format": {
      +            "type": "string"
      +          },
      +          "height": {
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "jobId": {
      +            "description": "The export job that produced this file, on encoding, ready and error results alike; absent for files without a job, such as renders. Pass it as expectedJobId to creator_delete_file.",
      +            "type": "string"
      +          },
      +          "kind": {
      +            "enum": [
      +              "render",
      +              "export"
      +            ]
      +          },
      +          "mime": {
      +            "type": "string"
      +          },
      +          "note": {
      +            "description": "What to do with this result: how to use or share the link, or when to retry.",
      +            "type": "string"
      +          },
      +          "progress": {
      +            "type": "number"
      +          },
      +          "retryAfterS": {
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "revision": {
      +            "type": "string"
      +          },
      +          "state": {},
      +          "status": {
      +            "enum": [
      +              "encoding",
      +              "ready",
      +              "error"
      +            ]
      +          },
      +          "uri": {
      +            "type": "string"
      +          },
      +          "waiting": {
      +            "enum": [
      +              "quota"
      +            ]
      +          },
      +          "width": {
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "file",
      +          "status",
      +          "kind",
      +          "format",
      +          "mime",
      +          "documentId",
      +          "revision",
      +          "expiresAt"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "attribution": {
      +            "description": "Credit the user must give when using the file.",
      +            "type": "string"
      +          },
      +          "bytes": {
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "contentType": {
      +            "type": "string"
      +          },
      +          "createdAt": {
      +            "type": "string"
      +          },
      +          "documentId": {
      +            "type": "string"
      +          },
      +          "downloadExpiresAt": {
      +            "type": "string"
      +          },
      +          "downloadUrl": {
      +            "type": "string"
      +          },
      +          "durationS": {
      +            "type": "number"
      +          },
      +          "expiresAt": {
      +            "description": "When an open upload stops accepting its PUT.",
      +            "type": "string"
      +          },
      +          "file": {
      +            "description": "media/<name>: the path scripts and the file tools use.",
      +            "type": "string"
      +          },
      +          "height": {
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "enum": [
      +              "image",
      +              "vector",
      +              "music",
      +              "speech"
      +            ]
      +          },
      +          "method": {
      +            "const": "PUT"
      +          },
      +          "mime": {
      +            "type": "string"
      +          },
      +          "model": {
      +            "type": "string"
      +          },
      +          "note": {
      +            "description": "What to do with this result.",
      +            "type": "string"
      +          },
      +          "origin": {
      +            "enum": [
      +              "upload",
      +              "generate"
      +            ]
      +          },
      +          "prompt": {
      +            "type": "string"
      +          },
      +          "provider": {
      +            "type": "string"
      +          },
      +          "retryAfterS": {
      +            "description": "0: call creator_download_file now, it waits for the result.",
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "sha256": {
      +            "type": "string"
      +          },
      +          "source": {
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "pending",
      +              "generating",
      +              "ready",
      +              "error"
      +            ]
      +          },
      +          "style": {
      +            "type": "string"
      +          },
      +          "text": {
      +            "type": "string"
      +          },
      +          "type": {
      +            "enum": [
      +              "image",
      +              "svg",
      +              "lottie",
      +              "rive",
      +              "audio",
      +              "font"
      +            ]
      +          },
      +          "uploadBytes": {
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "uri": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "description": "Takes one PUT of exactly uploadBytes bytes with Content-Type contentType; the URL is the only credential, so do not add any.",
      +            "type": "string"
      +          },
      +          "warnings": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "width": {
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "file",
      +          "status",
      +          "origin",
      +          "documentId",
      +          "createdAt"
      +        ],
      +        "type": "object"
      +      }
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": true,
      +    "properties": {
      +      "error": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "code": {
      +            "type": "string"
      +          },
      +          "hint": {
      +            "description": "A short remedy, when one applies; also folded into message.",
      +            "type": "string"
      +          },
      +          "line": {
      +            "description": "1-based user-code line the error occurred on, when known.",
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "message": {
      +            "type": "string"
      +          },
      +          "retryable": {
      +            "type": "boolean"
      +          },
      +          "source": {
      +            "description": "The offending source line, trimmed to 160 characters.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "code",
      +          "message",
      +          "retryable"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
  2. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds substantial value on top: three distinct outcome states, the security caveat that downloadUrl is a bearer-style temporary link readable by anyone until it expires plus the renewal path, and the warning that the fallback uri is an MCP resource for resources/read rather than a browser URL.

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?

Heavily front-loaded with the core action and the state machine laid out in order (ready, encoding, failed), with no filler sentences. The parenthetical nesting makes some of it dense to parse, but every clause carries operational information.

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?

An output schema exists so return shape needn't be restated, yet the description still explains what each status means for the caller and what to do on retry-timeout and failure. For a read-only download tool with two parameters, nothing an agent needs 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both parameters well. The description reinforces the meaning of `file` (the name passed to creator.render/export, or a media/<name> path) but says nothing about `documentId`, so it adds only marginal meaning beyond the schema and the baseline 3 applies.

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 ("Fetch, by name, a file") and pins the provenance precisely: files created by creator.render / creator.export inside creator_exec, or media/<name> files. That provenance detail distinguishes it from siblings like creator_import_media or creator_load_from_workspace without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for when this applies: after a script produced a file via creator.render or creator.export, or for media/<name> assets. It also embeds an actionable retry rule for the encoding state. It stops short of naming an alternative tool or an explicit when-not-to-use case, so it falls just short of a 5.

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.