Skip to main content
Glama

Upload file

upload_file

Upload one or more files to Clueso. Three modes — pick by client + where the file lives:

  1. file_name — HOSTED upload, the default for any non-UI / programmatic upload (Claude Code, Cursor, Claude Desktop, scripts). Returns an upload URL on Clueso's OWN base domain + a ready-to-run curl that streams a single local file to it; Clueso relays the bytes to storage server-side. The PUT targets the base domain — NOT cloud storage directly — so it works on desktop/agent clients that can't reach or are blocked from S3. Requirement: the client must be able to PUT bytes to the Clueso base domain (run the returned curl, or any HTTP PUT). The agent (or the user at a shell prompt) runs the curl. Prefer this whenever there's no human at a browser.

  2. file_url: Pass a public https URL. Server fetches and stages the file. Returns mcp_upload_id immediately. Use when the file is already on the open web — no user interaction needed.

  3. request_hosted_upload (UI mode — use ONLY when a human should pick files in a browser: many files at once, or a host with no shell / no PUT capability): Returns a single upload_token + upload_page URL. Share the link with the user; they open it in a new browser tab, drop their files, click Done. Then call check_uploads(upload_token) to retrieve all mcp_upload_ids. Call once for all files.

Hosted uploads cover any number of files per call: one call issues one upload_token, and that token covers every file the user drops on the page. Repeat calls issue additional tokens, each tracking only its own files.

The returned mcp_upload_id (prefixed mup_) can be passed to:

  • add_elements / update_elements (image or video → an element ON a clip: pass it as type_data.mcp_upload_id, on either tool — this is how a local image becomes on-canvas content, and how an existing element's source is swapped). To fill an animation's image slot, pass it inside type_data.parameter_values on update_elements only — parameter_values is an update-path field and is stripped on add.

  • add_audio (audio → project music track that plays under all clips)

  • add_clips(kind='video') (video or audio → sequential clip with auto-transcription)

  • add_clips(kind='pptx') (.ppt/.pptx → slide clips)

  • add_article_media (image/GIF → article asset)

  • analyze_audio (audio → transcript / silences / beats / features)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
file_urlNoPublic URL to fetch the file from
file_nameNoFile name with extension. Returns a Clueso upload URL + curl command that streams this single local file to us (single file).
file_namesNoList of file names the user will upload (for hosted mode). Shown on the upload page as guidance.
request_hosted_uploadNoIf true, returns a hosted upload page. Call once for all files — the page accepts multiple uploads under one token.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations are readOnlyHint=false (write operation) and destructiveHint=false, which align with the description. The description goes far beyond annotations by detailing the upload flow: file_name returns a curl command that the agent/user must execute, the PUT targets the base domain (not cloud storage), and the hosted mode returns a token requiring a subsequent call to check_uploads. It also explains behavioral constraints like 'one call issues one upload_token' and that hosted uploads can handle multiple files. No contradictions.

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?

The description is well-structured with a numbered list and bold headings for each mode. It is front-loaded with the three-mode summary. However, it is somewhat verbose—the final paragraph repeating how mcp_upload_id is used in other tools is partially redundant with the earlier usage guidance. Every sentence is valuable, but some consolidation could improve conciseness. Still, it is clear and easy to scan.

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 the tool's complexity (three modes, 4 parameters, no output schema, many sibling tools), the description is remarkably complete. It covers the full upload flow, explains how to handle the returned identifiers, and integrates with downstream tools. It also addresses potential client limitations (e.g., desktop vs browser). The description leaves no significant gaps for an AI agent to misunderstand.

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 description coverage is 100%, so the baseline is 3. The description adds significant value beyond the schema by explaining the three modes and how parameters interact (e.g., file_name vs file_names vs request_hosted_upload). It also clarifies the implications of each parameter (e.g., file_names is 'shown on the upload page as guidance'). The description enriches the agent's understanding of parameter semantics, justifying a score above baseline.

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 clearly states the tool's purpose: uploading files to Clueso. It explicitly defines three distinct modes (file_name, file_url, request_hosted_upload), each with a specific use case and resource. The description also explains how the returned mcp_upload_id integrates with sibling tools like add_elements, add_audio, and add_clips, making the tool's role in the ecosystem unambiguous.

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?

The description provides explicit guidance on when to use each mode. For file_name, it says 'Prefer this whenever there's no human at a browser.' For file_url, 'Use when the file is already on the open web.' For request_hosted_upload, 'use ONLY when a human should pick files in a browser.' It also explains when not to use the UI mode (no shell/no PUT capability) and directs to check_uploads afterward. This is exemplary usage guidance.

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.

TDQS

A4.1/5.0
Disambiguation4/5

Most tools have clearly distinct purposes, but there is notable overlap between remove_elements and remove_from_project(target='element'), which both remove elements from a clip. This duplication could cause an agent to misselect. Otherwise, tools like add_clips, add_elements, add_audio, and analyze_audio are well-differentiated.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (e.g., add_clips, create_project, get_clip, update_elements). There are no camelCase or mixed conventions. Even compound names like voiceover_batch and auto_sync fit the pattern. This makes the tool set predictable for an agent.

Tool Count2/5

With 40 tools, the set is significantly larger than the 3-15 range that typically earns its place. While the domain of video creation is broad, several tools seem redundant (remove_elements vs remove_from_project) or narrowly scoped (get_design_guide, get_element_schema), inflating the count. The number feels heavy for the apparent scope.

Completeness4/5

The tool surface covers most lifecycle operations: create, read, update, delete for projects, clips, elements, audio, articles, and clueprints. Minor gaps exist, such as no explicit tool to delete a voiceover (only mute via update_clips) and no folder management beyond listing. Overall, agents can accomplish full workflows with few workarounds.