OpenClip: media conversion
convert_media changes a file's container or codec, including video to gif and video to
audio-only. It is FREE, it needs an OpenClip account but no subscription and no credits.
Setup (once)
OpenClip is a remote MCP server at https://openclip.app/mcp. Sign in with your OpenClip
account when the OAuth prompt appears, there is no API key to copy.
- Claude Code:
claude mcp add --transport http openclip https://openclip.app/mcp, then/mcpto authorize. - Claude Desktop / web: Settings, Connectors, "Add custom connector", paste the URL, sign in.
- Cursor (
.cursor/mcp.json):{ "mcpServers": { "openclip": { "url": "https://openclip.app/mcp" } } } - Header-only clients: mint an MCP token at
openclip.app/settings/connectand connect tohttps://openclip.app/mcp/keywithAuthorization: Bearer <token>.
Sanity check: call get_account.
Getting the file in
create_upload(filename, content_type)returns anidand anupload_url.- PUT the raw bytes to
upload_url. - Pass the returned
idas thefileargument.
Do NOT call complete_upload. That starts the paid clipping pipeline. Free tools read the
uploaded file directly. A file already in list_videos works as an input too.
Targets
convert_media(file, to, ...params).
- Video containers -
mp4,webm,mov,mkv. Default tomp4when the user just wants something that plays everywhere. - gif - optional
fps(default 12) andwidth(default 480). Raisefpsfor smoother motion, raisewidthfor a sharper gif, both make the file much bigger. Trim the source first if it is long, gifs balloon fast. - Audio -
mp3,aac,wav,flac. Use this to rip audio out of a video.mp3for sharing,wavorflacwhen the audio feeds another tool that wants lossless.
To hit a file size rather than change format, that is edit_video with operation="compress"
(target_mb or crf), see the openclip-video-editing skill.
Polling
convert_media returns a tool_job hashid with status: "queued". Poll
get_tool_job_status(tool_job) every 5 to 10 seconds:
queued/processing- still working, keep polling.completed- returns permanent CDNoutputsURLs plusresult_meta.failed- returnserror.
Never assume a call finished synchronously.
Rules
- Always poll, conversion is async.
- Output URLs are permanent CDN links, not signed or expiring.
- Free usage is rate limited per day with a per-file size cap. The error text explains how to lift a limit.
- Converting a long video to gif produces an enormous file. Trim to the interesting few seconds first, then convert.
Example prompts to actions
- "Convert this to mp4" -
create_upload, PUT bytes,convert_media(file, to="mp4"), poll. - "Make a gif of this" - trim to the moment first with
edit_video, thenconvert_media(file, to="gif", fps=15, width=640), poll. - "Get me just the audio" -
convert_media(file, to="mp3"), poll. - "I need lossless audio for editing" -
convert_media(file, to="wav"), poll.
Related
Trimming, cropping, and size-targeted compression live in openclip-video-editing.
Transcribing the audio you just extracted is openclip-transcription.