Request Creative Studio media upload (presigned PUT)
Request a presigned PUT URL for a local reference file, then PUT bytes from a client with unrestricted outbound network access (Claude Code, Cursor, Codex). **Do not use in Claude Connectors** — its sandboxed bash/curl will fail with host-not-allowed on *.r2.cloudflarestorage.com. In Connectors, use upload_creative_media instead. After a successful PUT, pass uploadId in mediaUploads on create_creative_generation. Requires creative:generate scope.
Request Creative Studio media upload (presigned PUT)
Tool name: request_creative_media_upload
Required scope: creative:generate
Annotations: title, readOnlyHint: false, destructiveHint: true.
Request a presigned PUT URL for a local reference file, then PUT bytes from a client with unrestricted outbound network access (Claude Code, Cursor, Codex). Do not use in Claude Connectors — its sandboxed bash/curl will fail with host-not-allowed on *.r2.cloudflarestorage.com. In Connectors, use upload_creative_media instead. After a successful PUT, pass uploadId in mediaUploads on create_creative_generation. Requires creative:generate scope.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
fileName | string | required | Original file name including extension. |
contentType | string | required | MIME type (for example image/jpeg, image/png, video/mp4). |
fileSizeBytes | number | required | Exact file size in bytes. Required for presigned PUT signing. |
modelId | string | optional | Optional model ID to enforce that minimum credits are available before issuing an upload URL. |
Upload Creative Studio media inline
Prefer letting the Creative Studio widget collect local/attached files in Claude Connectors — it uploads without using your context (call create_creative_generation with mediaIntent / omit mediaUploads instead of this tool). Only call this tool yourself when you have literal file bytes AND you can pass dataBase64 as a tool argument without ever cat/echo/print/pasting the base64 into your response or reasoning (max 8MB decoded). Never dump base64 into the chat transcript. For files over 8MB, or coding agents with unrestricted outbound network, prefer request_creative_media_upload (presigned PUT). Returns uploadId for mediaUploads on create_creative_generation. Requires creative:generate scope.
list projects
List this account’s Video Editor projects (id, title, size, duration, updatedAt). Call first in MCP when projectId is unknown. Optional query filters by title.