Skip to main content
Glama

Prepare one direct media upload

aimixer_media_upload_prepare

Preferred direct image/video/audio transfer from an accessible host sandbox/terminal. If a user attached a file and the host exposes it on disk (Claude code execution: search /mnt/user-data/uploads first), call with destination=canvas and project_id from Canvas create/read for Canvas inputs, or destination=library for unattached files; use a stable idempotency_key. file family/name/MIME/size can help check the 30 MiB photo / 100 MiB video/audio limits. Returns a one-file, <=15 minute upload_key and ready bash curl, Windows PowerShell curl.exe, and Python requests commands for the header-only multipart endpoint. Run the appropriate command YOURSELF in the host sandbox, replacing with a verified path. CRITICAL: upload_key and literal commands contain a temporary upload secret; never quote, log, screenshot or show them in a USER-visible message. The key can upload only one file and cannot pay for jobs. After upload, call this tool with upload_id only to get status and managed_id (no key needed). If outbound mixerai.org access is denied, open the inline aimixer_media_upload_open widget (MCP Apps hosts, e.g. Claude.ai) and tell the user in one short sentence they may instead allow mixerai.org in Settings > Capabilities network access; give the browser upload page only without MCP Apps. Never ask to reattach the same file in chat. This tool is available in clients without MCP Apps UI too.

Input Schema

NameRequiredDescriptionDefault
file_nameNo
mime_typeNo
upload_idNoOpaque status identifier only, not the upload_key. Pass alone to check status and managed_id.
project_idNoOwned Canvas project to upload into; implies destination=canvas when destination is omitted.
size_bytesNo
destinationNoCanvas needs project_id; omitting destination selects canvas when project_id exists, otherwise library.
media_familyNo
idempotency_keyNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • removedInput schema / properties / destination / default
      Removed value: -"library"
    • addedInput schema / properties / destination / description
      Added value: +"Canvas needs project_id; omitting destination selects canvas when project_id exists, otherwise library."
    • addedInput schema / properties / project_id / description
      Added value: +"Owned Canvas project to upload into; implies destination=canvas when destination is omitted."
  2. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses the 30 MiB photo / 100 MiB video-audio limits, the 15-minute one-file upload_key lifetime, that the key is a temporary secret which must never be quoted/logged/shown to the user, and that the key cannot pay for jobs. It also states the agent must execute the returned curl/PowerShell/Python command itself in the host sandbox with a verified local path, and that status calls need no key.

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 purpose and the core decision (canvas vs. library), and nearly every clause carries operational or safety information. It is still a dense wall of prose with several embedded instructions (fallback widget, MCP-Apps caveat) that lengthen scanning, but nothing is truly filler.

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?

No output schema exists, and the description still explains what is returned (upload_key, ready-to-run bash/PowerShell/Python commands, then managed_id from the status call) and the expiry/single-use constraints. It also covers the blocked-network scenario and the non-MCP-Apps client case, leaving no major operational gap for a mutation tool with no annotations on side effects.

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 only 38%, but the description compensates by explaining that project_id implies destination=canvas, that file family/name/MIME/size exist to check against the size limits, that idempotency_key should be stable, and that upload_id alone triggers status mode returning managed_id. It adds little on mime_type format conventions, and the destination/project_id defaulting logic is already duplicated in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ('Preferred direct image/video/audio transfer from an accessible host sandbox/terminal') and clearly separates its two modes (prepare vs. upload_id status check). It says 'preferred' but never names the sibling route it is preferred over (e.g. aimixer_media_import / aimixer_media_upload_session), so sibling differentiation is implied rather than stated.

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 routing: search /mnt/user-data/uploads first when a file is attached, destination=canvas with project_id for Canvas inputs vs. destination=library for unattached files, use a stable idempotency_key, and status-only calls afterwards. It also names the fallback path when outbound mixerai.org access is denied (inline widget, one-sentence user notice, plain browser page for non-MCP-Apps clients) and explicitly forbids asking the user to reattach.

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