{"apiVersion":"v1","directorySlug":"clipkit-mcp-84f07b63ad","title":"Clipkit — The video infra for agents","description":"GPU-rendered video infrastructure built for LLMs, agents, and the apps that ship them. JSON in. Video out. Open source. Powered by the open Clipkit Protocol.","pageUrl":"https://www.mcpbundles.com/skills/clipkit-mcp-84f07b63ad","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://clipkit.dev/mcp","hostedMcpUrl":null,"toolCount":15,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"dev.clipkit/clipkit-mcp-84f07b63ad","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"read_docs","description":"Return a canonical Clipkit doc as text. topic \"card\" = the ~8KB compact authoring card — the recommended context for authoring; \"pattern-data-viz\" / \"pattern-cinematic-ui\" / \"pattern-ui-screencast\" = ~4-5KB archetype pattern cards (proven idioms: count-ups and bar rows; product hero shots with camera rigs; faked app UI with typing/cursor/clicks) — load ONE alongside the card when the brief matches its archetype; \"agents\" = the full authoring guide (fetch only when the card doesn't cover a need);","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"topic":{"enum":["agents","protocol","brand","card","pattern-data-viz","pattern-cinematic-ui","pattern-ui-screencast"],"type":"string"}},"additionalProperties":false},"title":"Read the Clipkit authoring docs","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"read_docs","displayName":"Read the Clipkit authoring docs"},{"name":"get_schema","description":"Return the authoritative JSON Schema for a Clipkit Source — exact field names, types, and enums, generated from the protocol. Call with no argument for the full Source schema, or with element_type (e.g. \"text\", \"shape\", \"particles\") for just that element's fields (much smaller). Use this when authoring with set_project / add_element so you never guess a field.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"element_type":{"enum":["video","image","text","shape","audio","group","caption","particles"],"type":"string"}},"additionalProperties":false},"title":"Get the Clipkit JSON Schema (exact fields)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_schema","displayName":"Get the Clipkit JSON Schema (exact fields)"},{"name":"create_project","description":"Create a new, blank Clipkit project with the given dimensions and duration, and return its project_id. Defaults: 1920×1080, 10 seconds, 30 fps, output_format \"mp4\". Call this first when starting a new video. Pass an existing project_id to reset that project to blank; omit it to start a fresh project (note the returned id for subsequent tools).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"width":{"type":"integer","exclusiveMinimum":0},"height":{"type":"integer","exclusiveMinimum":0},"duration":{"type":"number","exclusiveMinimum":0},"frame_rate":{"type":"number","exclusiveMinimum":0},"project_id":{"type":"string","minLength":1},"output_dither":{"anyOf":[{"type":"boolean"},{"type":"object","properties":{"enabled":{"type":"boolean"},"pattern":{"enum":["bayer","noise"],"type":"string"},"amplitude":{"type":"number","maximum":8,"minimum":0}},"additionalProperties":true}]},"output_format":{"enum":["mp4","gif"],"type":"string"},"background_color":{"type":"string"}},"additionalProperties":false},"title":"Create a new Clipkit project","logicalName":"create_project","displayName":"Create a new Clipkit project","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_project","description":"Return the full current Clipkit source as JSON. Use this to inspect the project, pass it to a render pipeline, or compose follow-up edits.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"project_id":{"type":"string","minLength":1}},"additionalProperties":false},"title":"Get the current Clipkit project JSON","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_project","displayName":"Get the current Clipkit project JSON"},{"name":"describe_project","description":"Return a compact, human-readable summary of the current project — dimensions, fps, duration, an element breakdown by type, a per-track timeline (paint order low→high), and render-time warnings. Much cheaper to read than get_project's full JSON; use it to orient yourself or sanity-check structure without dumping the whole source.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"project_id":{"type":"string","minLength":1}},"additionalProperties":false},"title":"Describe the current project in plain language","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"describe_project","displayName":"Describe the current project in plain language"},{"name":"set_project","description":"Replace the entire project with the given source JSON, returning its project_id. This is the PRIMARY way to build: use it to create a composition or to add/change many elements at once. (To tweak a single element in an existing project, use edit_element / add_element / delete_element instead.) REVISION RULE: if you are iterating on a video that already exists in this conversation — the user asked for changes, you are fixing your own work — you MUST pass its project_id so the project is updated i","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["source"],"properties":{"source":{"type":"object","additionalProperties":{}},"project_id":{"type":"string","minLength":1}},"additionalProperties":false},"title":"Replace the entire Clipkit project","logicalName":"set_project","displayName":"Replace the entire Clipkit project","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"add_element","description":"Append a single element to an existing project — a TWEAK, e.g. dropping in one more caption or shape. By default it is added at the top level; pass parent_id to add it INTO a group (nested). The element is any valid schema element: video, image, text, shape, audio, group, caption, or particles. To create a composition or add several elements at once, build the JSON and use set_project instead. The new element is validated as part of the project as a whole before being added. Call get_schema(elem","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["element"],"properties":{"element":{"type":"object","additionalProperties":{}},"parent_id":{"type":"string","minLength":1},"project_id":{"type":"string","minLength":1}},"additionalProperties":false},"title":"Add an element to the current project","logicalName":"add_element","displayName":"Add an element to the current project","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"edit_element","description":"Change fields on the element with the given id by merging in a partial element — only the keys you include change. The id may be any element ANYWHERE in the tree, including one nested inside a group (or its mask). Pass a whole nested value (e.g. a new `keyframe_animations` array) to replace that key; set a key to null to remove it. This is for TWEAKING an existing composition. To create a composition or change many elements at once, edit the JSON and call set_project instead. The result is re-va","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["id","patch"],"properties":{"id":{"type":"string","minLength":1},"patch":{"type":"object","additionalProperties":{}},"project_id":{"type":"string","minLength":1}},"additionalProperties":false},"title":"Tweak one existing element (merge changed fields)","logicalName":"edit_element","displayName":"Tweak one existing element (merge changed fields)","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"delete_element","description":"Delete the element with the given id, anywhere in the tree (including one nested inside a group or its mask) — a tweak to an existing composition. (The project must keep at least one top-level element.)","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["id"],"properties":{"id":{"type":"string","minLength":1},"project_id":{"type":"string","minLength":1}},"additionalProperties":false},"title":"Delete one element by id","logicalName":"delete_element","displayName":"Delete one element by id","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"validate_project","description":"Run the @clipkit/protocol validator against the current project AND surface render-time warnings even when the JSON is valid — things that pass the schema but the runtime will silently drop or clip: emoji / non-ASCII text (the runtime font atlas is ASCII-only), elements that run past the composition end, a missing top-level duration. Run it before you share or render the project. For a fuller timeline read-back, use describe_project.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"project_id":{"type":"string","minLength":1}},"additionalProperties":false},"title":"Validate the current project (schema + render-time warnings)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"validate_project","displayName":"Validate the current project (schema + render-time warnings)"},{"name":"preview_still","description":"Render a single frame of the current project to a PNG and return it as an image you can look at. This is how you check your work — in chat there is no other way to see what a composition actually looks like. Use it liberally: after composing, after edits, and at different times to inspect motion. Stills are FREE (credits are only spent by render_video). Pass `time` (seconds) to choose the frame; defaults to 0.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"time":{"type":"number","minimum":0},"project_id":{"type":"string","minLength":1}},"additionalProperties":false},"title":"Render one frame of the current project so you can SEE it","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"preview_still","displayName":"Render one frame of the current project so you can SEE it"},{"name":"create_promo","description":"Assemble a designed-looking promo/intro/product/data video from the Clipkit pattern library: give an ordered list of SCENES and the words, and it bakes in the camera, glass, lighting, motion blur, timing, and layout, then returns an editor link. This is a FAST option when a conventional promo structure fits — it is NOT the only way to make a video and NOT a default; for anything specific or original, author the JSON yourself and call set_project (the full creative range). When you do use this, M","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["scenes"],"properties":{"theme":{"enum":["cinematic","mux","minimal"],"type":"string"},"width":{"type":"integer","exclusiveMinimum":0},"height":{"type":"integer","exclusiveMinimum":0},"scenes":{"type":"array","items":{"anyOf":[{"type":"object","required":["type","wordmark"],"properties":{"type":{"type":"string","const":"hero"},"color":{"enum":["pink","green","blue","lavender","purple","yellow","gray"],"type":"string"},"tagline":{"type":"string"},"duration":{"type":"number","exclusiveMinimum":0},"wordmark":{"type":"string"}},"additionalProperties":false},{"type":"object","required":["type","text"],"properties":{"text":{"type":"string"},"type":{"type":"string","const":"kinetic"},"color":{"$ref":"#/properties/scenes/items/anyOf/0/properties/color"},"duration":{"$ref":"#/properties/scenes/items/anyOf/0/properties/duration"},"subtitle":{"type":"string"}},"additionalProperties":false},{"type":"object","required":["type","screenshot"],"properties":{"type":{"type":"string","const":"showcase"},"color":{"$ref":"#/properties/scenes/items/anyOf/0/properties/color"},"duration":{"$ref":"#/properties/scenes/items/anyOf/0/properties/duration"},"screenshot":{"type":"string","format":"uri"}},"additionalProperties":false},{"type":"object","required":["type","headline"],"properties":{"type":{"type":"string","const":"title"},"color":{"$ref":"#/properties/scenes/items/anyOf/0/properties/color"},"kicker":{"type":"string"},"duration":{"$ref":"#/properties/scenes/items/anyOf/0/properties/duration"},"headline":{"type":"string"},"subtitle":{"type":"string"}},"additionalProperties":false},{"type":"object","required":["type","wordmark","cta"],"properties":{"cta":{"type":"string"},"type":{"type":"string","const":"cta"},"color":{"$ref":"#/properties/scenes/items/anyOf/0/properties/color"},"tagline":{"type":"string"},"duration":{"$ref":"#/properties/scenes/items/anyOf/0/properties/duration"},"wordmark":{"type":"string"}},"additionalProperties":false},{"type":"object","required":["type","stats"],"properties":{"type":{"type":"string","const":"stats"},"color":{"$ref":"#/properties/scenes/items/anyOf/0/properties/color"},"stats":{"type":"array","items":{"type":"object","required":["label","current"],"properties":{"label":{"type":"string"},"current":{"type":"number"},"previous":{"type":"number"}},"additionalProperties":false},"maxItems":4,"minItems":1},"duration":{"$ref":"#/properties/scenes/items/anyOf/0/properties/duration"},"dateRange":{"type":"string"}},"additionalProperties":false},{"type":"object","required":["type","bars"],"properties":{"bars":{"type":"array","items":{"type":"object","required":["label","value"],"properties":{"label":{"type":"string"},"value":{"type":"number"},"previous":{"type":"number"}},"additionalProperties":false},"maxItems":6,"minItems":1},"type":{"type":"string","const":"bars"},"color":{"$ref":"#/properties/scenes/items/anyOf/0/properties/color"},"duration":{"$ref":"#/properties/scenes/items/anyOf/0/properties/duration"},"dateRange":{"type":"string"}},"additionalProperties":false},{"type":"object","required":["type","items"],"properties":{"type":{"type":"string","const":"ranking"},"color":{"$ref":"#/properties/scenes/items/anyOf/0/properties/color"},"items":{"type":"array","items":{"type":"object","required":["label","value"],"properties":{"label":{"type":"string"},"value":{"type":"number"}},"additionalProperties":false},"maxItems":12,"minItems":1},"duration":{"$ref":"#/properties/scenes/items/anyOf/0/properties/duration"},"dateRange":{"type":"string"}},"additionalProperties":false},{"type":"object","required":["type","cards"],"properties":{"type":{"type":"string","const":"pie"},"cards":{"type":"array","items":{"type":"object","required":["label","value","total"],"properties":{"label":{"type":"string"},"total":{"type":"number"},"value":{"type":"number"},"previous":{"type":"number"}},"additionalProperties":false},"maxItems":4,"minItems":1},"color":{"$ref":"#/properties/scenes/items/anyOf/0/properties/color"},"duration":{"$ref":"#/properties/scenes/items/anyOf/0/properties/duration"},"dateRange":{"type":"string"}},"additionalProperties":false}]},"minItems":1},"project_id":{"type":"string","minLength":1},"motion_blur":{"type":"integer","maximum":32,"minimum":0}},"additionalProperties":false},"title":"Compose a designed promo from prebuilt scenes (one fast option)","logicalName":"create_promo","displayName":"Compose a designed promo from prebuilt scenes (one fast option)","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"open_in_editor","description":"Validate the current project and create a link that opens it in the Clipkit web editor, where the user can preview and refine it. This shares the PROJECT (nothing is rendered — that's render_video). Use after composing or editing. Returns a URL.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"project_id":{"type":"string","minLength":1}},"additionalProperties":false},"title":"Create a shareable link that opens the current project in the editor","logicalName":"open_in_editor","displayName":"Create a shareable link that opens the current project in the editor","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"ingest_asset","description":"Fetch a remote media URL (image/video/audio) and HOST it on Clipkit, returning a stable asset_url to put in an element's `url`. Use this so the project's media survives — the original link may rot, be private, or block hotlinking. Anonymous projects allow up to 5 hosted assets / 100 MB total / 50 MB per file; when the limit is hit, tell the user to open the project (open_in_editor) and sign in to add more. Requires project_id.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["url"],"properties":{"url":{"type":"string","format":"uri"},"filename":{"type":"string"},"project_id":{"type":"string","minLength":1}},"additionalProperties":false},"title":"Host a remote image/video/audio so a project can use it","logicalName":"ingest_asset","displayName":"Host a remote image/video/audio so a project can use it","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"load_project","description":"Import a previously shared project as the current project, by its share id or its editor URL (e.g. https://clipkit.dev/editor?id=…), returning its project_id. Use this to continue working on a project the user opened in the editor or shared earlier — the round-trip for open_in_editor. Pass an existing project_id to load into that project; omit it to load into a new one.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["id_or_url"],"properties":{"id_or_url":{"type":"string","minLength":1},"project_id":{"type":"string","minLength":1}},"additionalProperties":false},"title":"Load a shared project back into the session","logicalName":"load_project","displayName":"Load a shared project back into the session","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Clipkit-The-video-infra-for-agents&config=eyJ1cmwiOiAiaHR0cHM6Ly9jbGlwa2l0LmRldi9tY3AifQ%3D%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Clipkit-The-video-infra-for-agents%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fclipkit.dev%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Clipkit-The-video-infra-for-agents%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fclipkit.dev%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Clipkit+%E2%80%94+The+video+infra+for+agents&connectorUrl=https%3A%2F%2Fclipkit.dev%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Clipkit-The-video-infra-for-agents\" --url \"https://clipkit.dev/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/clipkit-mcp-84f07b63ad","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/clipkit-mcp-84f07b63ad/tools/{tool}","mcpServerUrl":"https://clipkit.dev/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/clipkit-mcp-84f07b63ad?live=1"}