Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

dev.clipkit/clipkit

REMOTE · WWW.CLIPKIT.DEV · SCANNED AUG 3

MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.

Available components

+4 this week 70 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security63
Transport & Reachability100
Schema Quality & AI Usability77
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3689 tokens (~194/item across 19 items; 15 tools + 4 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (73% of tools); any adoption earns full credit.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · www.clipkit.dev

# add to Claude Code
claude mcp add --transport http dev-clipkit-clipkit https://www.clipkit.dev/mcp
# ~/.codex/config.toml
[mcp_servers.dev-clipkit-clipkit]
url = "https://www.clipkit.dev/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dev-clipkit-clipkit": {
      "type": "remote",
      "url": "https://www.clipkit.dev/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add dev-clipkit-clipkit --url https://www.clipkit.dev/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  dev-clipkit-clipkit:
    url: "https://www.clipkit.dev/mcp"
// mcp.json
{
  "mcpServers": {
    "dev-clipkit-clipkit": {
      "type": "http",
      "url": "https://www.clipkit.dev/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Jul 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

  • 29 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

  • 28 Jul 26 0
    • Tool “read_docs” rewrote its description, which is the text the model reads security
  • 27 Jul 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Jul 26 66

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Probed https://www.clipkit.dev/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=www.clipkit.dev CN=YR1,O=Let's Encrypt,C=US 1 Aug 2026 30 Oct 2026 RSA 2048 SHA256-RSA 620e13bd951ff86cc70f3d76f459f5db0dc
SANs: www.clipkit.dev
CN=YR1,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA a20253f15f2691c05dc1ce13b9bcca4e
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f
DNSSEC insecure

Validation of www.clipkit.dev. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
dev. present 60074 8 Verified
clipkit.dev. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://www.clipkit.dev/mcp Verified 200
http (plaintext) http://www.clipkit.dev/mcp HTTPS enforced 308 https://www.clipkit.dev/mcp
MCP tools — 15 exposed · ~2,844 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
add_element ~222

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(element_type) for the exact per-type fields; unrecognized keys are flagged.

NameTypeReqDescription
elementobjectyesA Clipkit element object. Must include `type`.
parent_idstringOptional id of a group to add this element INTO (nested). Omit to add at the top level.
project_idstringWhich project to act on — the id returned by create_project / set_project / create_promo / load_project. Omit when working on a single local project.
NameTypeReqDescription
added_element_idstring
element_typestring
parent_idstring
top_level_element_countnumberyes

No examples provided.

create_project ~280

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).

NameTypeReqDescription
background_colorstringHex color, e.g. "#000000".
durationnumberComposition duration in seconds. Default 10.
frame_ratenumberFrame rate. Default 30.
heightintegerComposition height in pixels. Default 1080.
output_ditherAnti-banding output dither — DEFAULT ON, leave unset. Pass false for byte-exact undithered output, or { amplitude, pattern } to tune. Stops gradients / soft shadows / blur from showing 8-bit banding;…
output_formatstringOutput container/codec. Default "mp4".
project_idstringWhich project to act on — the id returned by create_project / set_project / create_promo / load_project. Omit when working on a single local project.
widthintegerComposition width in pixels. Default 1920.
NameTypeReqDescription
durationnumber
frame_ratenumber
heightnumber
output_formatstring
project_idstringyesId of the created project — pass to subsequent tools.
widthnumber

No examples provided.

create_promo ~513

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, MIX scene types to fit the brief and vary the structure — a video can be a single kinetic headline, three title cards, a showcase montage, or a data explainer; you do NOT need a hero or a cta. Scene types: hero (glass-orb logo reveal: wordmark, tagline?), kinetic (letter-fly headline: text, subtitle?), showcase (a screenshot tilted in 3D: screenshot URL), title (full-frame title card: headline, kicker?, subtitle?), cta (closing card with a glass button: wordmark, tagline?, cta), stats (hero numbers: stats[{label,current,previous?}], title?), bars (bar chart: bars[{label,value,previous?}], title?), ranking (top-N list: items[{label,value}], title?), pie (pie cards: cards[{label,value,total,previous?}], title?). The data scenes (stats/bars/ranking/pie) look best with theme "mux".

NameTypeReqDescription
heightintegerDefault 1080.
motion_blurintegerSupersampled motion-blur samples (≥2 enables it — nicer but slower to render). Default off.
project_idstringWhich project to act on — the id returned by create_project / set_project / create_promo / load_project. Omit when working on a single local project.
scenesarrayyesOrdered scenes; mix types to fit the brief — you do NOT need hero/cta. e.g. a single [{type:"kinetic",text:"…"}], a sequence [{type:"title",headline:"…"},{type:"showcase",screenshot:"…"},{type:"title…
themestringVisual theme. Default "cinematic" (dark, serif, premium).
widthintegerDefault 1920.
NameTypeReqDescription
durationnumber
editor_urlstring
heightnumber
project_idstringyes
scene_countnumberyes
widthnumber

No examples provided.

delete_element ~105

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.)

NameTypeReqDescription
idstringyesThe id of the element to delete.
project_idstringWhich project to act on — the id returned by create_project / set_project / create_promo / load_project. Omit when working on a single local project.
NameTypeReqDescription
deleted_element_idstringyes
top_level_element_countnumberyes

No examples provided.

describe_project ~114

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.

NameTypeReqDescription
project_idstringWhich project to act on — the id returned by create_project / set_project / create_promo / load_project. Omit when working on a single local project.

No output schema declared.

No examples provided.

edit_element ~212

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-validated before being accepted.

NameTypeReqDescription
idstringyesThe id of the element to edit.
patchobjectyesPartial element: the fields to change. Omitted keys are left as-is; a key set to null is removed.
project_idstringWhich project to act on — the id returned by create_project / set_project / create_promo / load_project. Omit when working on a single local project.
NameTypeReqDescription
changed_keysarrayyes
element_idstringyes

No examples provided.

get_project ~78

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.

NameTypeReqDescription
project_idstringWhich project to act on — the id returned by create_project / set_project / create_promo / load_project. Omit when working on a single local project.

No output schema declared.

No examples provided.

get_schema ~119

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.

NameTypeReqDescription
element_typestringLimit to one element type's fields (e.g. "text"). Omit for the full Source schema (large).

No output schema declared.

No examples provided.

ingest_asset ~187

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.

NameTypeReqDescription
filenamestringOptional display name for the asset.
project_idstringWhich project to act on — the id returned by create_project / set_project / create_promo / load_project. Omit when working on a single local project.
urlstringyesA public http(s) URL to an image, video, or audio file.
NameTypeReqDescription
asset_idstringyes
asset_urlstringyes
filenamestringyes

No examples provided.

load_project ~153

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.

NameTypeReqDescription
id_or_urlstringyesA share id, or a clipkit.dev/editor?id=… URL.
project_idstringWhich project to act on — the id returned by create_project / set_project / create_promo / load_project. Omit when working on a single local project.
NameTypeReqDescription
durationnumber
element_countnumberyes
heightnumber
project_idstringyes
widthnumber

No examples provided.

open_in_editor ~99

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.

NameTypeReqDescription
project_idstringWhich project to act on — the id returned by create_project / set_project / create_promo / load_project. Omit when working on a single local project.
NameTypeReqDescription
editor_urlstringyes
project_idstringyes

No examples provided.

preview_still ~164

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.

NameTypeReqDescription
project_idstringWhich project to act on — the id returned by create_project / set_project / create_promo / load_project. Omit when working on a single local project.
timenumberComposition time in seconds to capture. Default 0 (first frame).
NameTypeReqDescription
heightnumber
mime_typestring
timenumberyes
widthnumber

No examples provided.

read_docs ~190

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); "protocol" = the formal field spec; "brand" = brand reference. (Same docs offered as MCP resources, exposed as a tool so you can read them directly — resources are not always model-readable.)

NameTypeReqDescription
topicstringWhich doc. Default "agents".

No output schema declared.

No examples provided.

set_project ~272

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.) Pass an existing project_id to replace that project; omit it to create a new one (note the returned id). The input is validated against the @clipkit/protocol before being accepted; invalid inputs return an error. Shape: { width, height, duration, frame_rate, output_format, background_color?, fonts?, camera?, lights?, elements:[…] }; every element has a `type` plus base fields (id, x, y, width, height, time, duration, track, opacity, rotation, animations, keyframe_animations) and type-specific fields. For exact field names + types call get_schema (optionally with an element_type) — the runtime ignores unrecognized keys, and this tool flags any it does not recognize.

NameTypeReqDescription
project_idstringWhich project to act on — the id returned by create_project / set_project / create_promo / load_project. Omit when working on a single local project.
sourceobjectyesA full Clipkit source object.
NameTypeReqDescription
durationnumber
element_countnumberyes
heightnumber
project_idstringyes
widthnumber

No examples provided.

validate_project ~136

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.

NameTypeReqDescription
project_idstringWhich project to act on — the id returned by create_project / set_project / create_promo / load_project. Omit when working on a single local project.
NameTypeReqDescription
durationnumber
element_countnumber
error_countnumberyes
errorsarray
heightnumber
unknown_keysarray
validbooleanyes
warningsarray
widthnumber

No examples provided.