dev.clipkit/clipkit
REMOTE · WWW.CLIPKIT.DEV · SCANNED SEP 22
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
Available components
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 → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (set_project). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability80
- 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 4186 tokens (~220/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 Management100
- No destabilizing schema changes in the last 30 days.Pass
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
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 17 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the dev.clipkit/clipkit MCP server?
dev.clipkit/clipkit is a hosted endpoint at https://www.clipkit.dev/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · www.clipkit.dev
claude mcp add --transport http dev-clipkit-clipkit 'https://www.clipkit.dev/mcp'
{
"mcpServers": {
"dev-clipkit-clipkit": {
"url": "https://www.clipkit.dev/mcp"
}
}
} {
"servers": {
"dev-clipkit-clipkit": {
"type": "http",
"url": "https://www.clipkit.dev/mcp"
}
}
} [mcp_servers.dev-clipkit-clipkit] url = "https://www.clipkit.dev/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"dev-clipkit-clipkit": {
"type": "remote",
"url": "https://www.clipkit.dev/mcp",
"enabled": true
}
}
} openclaw mcp add dev-clipkit-clipkit --url 'https://www.clipkit.dev/mcp' --transport streamable-http
mcp_servers:
dev-clipkit-clipkit:
url: "https://www.clipkit.dev/mcp" {
"McpServers": {
"dev-clipkit-clipkit": {
"Transport": "http",
"Url": "https://www.clipkit.dev/mcp"
}
}
} assistant mcp add dev-clipkit-clipkit -t streamable-http -u 'https://www.clipkit.dev/mcp'
{
"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.
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.
- 26 Aug 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Aug 26 0
- Stability: 0.97 → pass security
- 13 Aug 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “set_project” rewrote its description, which is the text the model reads security
- Schema quality: 194 → 220 ▼ functional
- “add_element” reworded the description of “project_id” cosmetic
- “create_project” reworded the description of “project_id” cosmetic
- “create_promo” reworded the description of “project_id” cosmetic
- “delete_element” reworded the description of “project_id” cosmetic
- “describe_project” reworded the description of “project_id” cosmetic
- “edit_element” reworded the description of “project_id” cosmetic
- “get_project” reworded the description of “project_id” cosmetic
- “ingest_asset” reworded the description of “project_id” cosmetic
- “load_project” reworded the description of “project_id” cosmetic
- “open_in_editor” reworded the description of “project_id” cosmetic
- “preview_still” reworded the description of “project_id” cosmetic
- “set_project” reworded the description of “project_id” cosmetic
- “validate_project” reworded the description of “project_id” cosmetic
- 11 Aug 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
- 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
- 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 0
First indexed and scored.
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 22 Sept 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 |
Background: What to check on a remote MCP endpoint →
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 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
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 |
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. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_element Add an element to the current project ~251
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.
| Name | Type | Req | Description |
|---|---|---|---|
| element | object | yes | A Clipkit element object. Must include `type`. |
| parent_id | string | – | Optional id of a group to add this element INTO (nested). Omit to add at the top level. |
| project_id | string | – | Which project to act on — the id returned by create_project / set_project / create_promo / load_project. ALWAYS pass it once a project exists in this conversation; omitting it on a build tool creates… |
| Name | Type | Req | Description |
|---|---|---|---|
| added_element_id | string | – | – |
| element_type | string | – | – |
| parent_id | string | – | – |
| top_level_element_count | number | yes | – |
No examples provided.
create_project Create a new Clipkit project ~309
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).
| Name | Type | Req | Description |
|---|---|---|---|
| background_color | string | – | Hex color, e.g. "#000000". |
| duration | number | – | Composition duration in seconds. Default 10. |
| frame_rate | number | – | Frame rate. Default 30. |
| height | integer | – | Composition height in pixels. Default 1080. |
| output_dither | – | – | Anti-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_format | string | – | Output container/codec. Default "mp4". |
| project_id | string | – | Which project to act on — the id returned by create_project / set_project / create_promo / load_project. ALWAYS pass it once a project exists in this conversation; omitting it on a build tool creates… |
| width | integer | – | Composition width in pixels. Default 1920. |
| Name | Type | Req | Description |
|---|---|---|---|
| duration | number | – | – |
| frame_rate | number | – | – |
| height | number | – | – |
| output_format | string | – | – |
| project_id | string | yes | Id of the created project — pass to subsequent tools. |
| width | number | – | – |
No examples provided.
create_promo Compose a designed promo from prebuilt scenes (one fast option) ~542
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".
| Name | Type | Req | Description |
|---|---|---|---|
| height | integer | – | Default 1080. |
| motion_blur | integer | – | Supersampled motion-blur samples (≥2 enables it — nicer but slower to render). Default off. |
| project_id | string | – | Which project to act on — the id returned by create_project / set_project / create_promo / load_project. ALWAYS pass it once a project exists in this conversation; omitting it on a build tool creates… |
| scenes | array | yes | Ordered 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… |
| theme | string | – | Visual theme. Default "cinematic" (dark, serif, premium). |
| width | integer | – | Default 1920. |
| Name | Type | Req | Description |
|---|---|---|---|
| duration | number | – | – |
| editor_url | string | – | – |
| height | number | – | – |
| project_id | string | yes | – |
| scene_count | number | yes | – |
| width | number | – | – |
No examples provided.
delete_element Delete one element by id ~134
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.)
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The id of the element to delete. |
| project_id | string | – | Which project to act on — the id returned by create_project / set_project / create_promo / load_project. ALWAYS pass it once a project exists in this conversation; omitting it on a build tool creates… |
| Name | Type | Req | Description |
|---|---|---|---|
| deleted_element_id | string | yes | – |
| top_level_element_count | number | yes | – |
No examples provided.
describe_project Describe the current project in plain language ~143
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.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | – | Which project to act on — the id returned by create_project / set_project / create_promo / load_project. ALWAYS pass it once a project exists in this conversation; omitting it on a build tool creates… |
No output schema declared.
No examples provided.
edit_element Tweak one existing element (merge changed fields) ~241
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The id of the element to edit. |
| patch | object | yes | Partial element: the fields to change. Omitted keys are left as-is; a key set to null is removed. |
| project_id | string | – | Which project to act on — the id returned by create_project / set_project / create_promo / load_project. ALWAYS pass it once a project exists in this conversation; omitting it on a build tool creates… |
| Name | Type | Req | Description |
|---|---|---|---|
| changed_keys | array | yes | – |
| element_id | string | yes | – |
No examples provided.
get_project Get the current Clipkit project JSON ~107
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.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | – | Which project to act on — the id returned by create_project / set_project / create_promo / load_project. ALWAYS pass it once a project exists in this conversation; omitting it on a build tool creates… |
No output schema declared.
No examples provided.
get_schema Get the Clipkit JSON Schema (exact fields) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| element_type | string | – | Limit 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 Host a remote image/video/audio so a project can use it ~216
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.
| Name | Type | Req | Description |
|---|---|---|---|
| filename | string | – | Optional display name for the asset. |
| project_id | string | – | Which project to act on — the id returned by create_project / set_project / create_promo / load_project. ALWAYS pass it once a project exists in this conversation; omitting it on a build tool creates… |
| url | string | yes | A public http(s) URL to an image, video, or audio file. |
| Name | Type | Req | Description |
|---|---|---|---|
| asset_id | string | yes | – |
| asset_url | string | yes | – |
| filename | string | yes | – |
No examples provided.
load_project Load a shared project back into the session ~182
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id_or_url | string | yes | A share id, or a clipkit.dev/editor?id=… URL. |
| project_id | string | – | Which project to act on — the id returned by create_project / set_project / create_promo / load_project. ALWAYS pass it once a project exists in this conversation; omitting it on a build tool creates… |
| Name | Type | Req | Description |
|---|---|---|---|
| duration | number | – | – |
| element_count | number | yes | – |
| height | number | – | – |
| project_id | string | yes | – |
| width | number | – | – |
No examples provided.
open_in_editor Create a shareable link that opens the current project in the editor ~128
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.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | – | Which project to act on — the id returned by create_project / set_project / create_promo / load_project. ALWAYS pass it once a project exists in this conversation; omitting it on a build tool creates… |
| Name | Type | Req | Description |
|---|---|---|---|
| editor_url | string | yes | – |
| project_id | string | yes | – |
No examples provided.
preview_still Render one frame of the current project so you can SEE it ~193
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.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | – | Which project to act on — the id returned by create_project / set_project / create_promo / load_project. ALWAYS pass it once a project exists in this conversation; omitting it on a build tool creates… |
| time | number | – | Composition time in seconds to capture. Default 0 (first frame). |
| Name | Type | Req | Description |
|---|---|---|---|
| height | number | – | – |
| mime_type | string | – | – |
| time | number | yes | – |
| width | number | – | – |
No examples provided.
read_docs Read the Clipkit authoring 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.)
| Name | Type | Req | Description |
|---|---|---|---|
| topic | string | – | Which doc. Default "agents". |
No output schema declared.
No examples provided.
set_project Replace the entire Clipkit project ~357
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 in place and keeps one editor link and its version history. Omitting project_id creates a NEW, unrelated project and strands the old one; only omit for a genuinely different video. 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.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | – | Which project to act on — the id returned by create_project / set_project / create_promo / load_project. ALWAYS pass it once a project exists in this conversation; omitting it on a build tool creates… |
| source | object | yes | A full Clipkit source object. |
| Name | Type | Req | Description |
|---|---|---|---|
| duration | number | – | – |
| element_count | number | yes | – |
| height | number | – | – |
| project_id | string | yes | – |
| width | number | – | – |
No examples provided.
validate_project Validate the current project (schema + render-time warnings) ~165
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.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | – | Which project to act on — the id returned by create_project / set_project / create_promo / load_project. ALWAYS pass it once a project exists in this conversation; omitting it on a build tool creates… |
| Name | Type | Req | Description |
|---|---|---|---|
| duration | number | – | – |
| element_count | number | – | – |
| error_count | number | yes | – |
| errors | array | – | – |
| height | number | – | – |
| unknown_keys | array | – | – |
| valid | boolean | yes | – |
| warnings | array | – | – |
| width | number | – | – |
No examples provided.
What is the dev.clipkit/clipkit MCP server?
dev.clipkit/clipkit is an MCP server listed in the public MCP registry as dev.clipkit/clipkit. MCP server for Clipkit, gives AI agents a video toolbox via the Clipkit schema. This page covers its hosted endpoint (https://www.clipkit.dev/mcp).
Is the dev.clipkit/clipkit MCP server safe to use?
dev.clipkit/clipkit scores 82 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the dev.clipkit/clipkit MCP server expose?
dev.clipkit/clipkit exposes 15 tools: read_docs, get_schema, create_project, get_project, describe_project, and 10 more. Their descriptions and schemas cost roughly 3,277 tokens of context every time the server is loaded.
Does the dev.clipkit/clipkit MCP server require authentication?
No. We connected to dev.clipkit/clipkit without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the dev.clipkit/clipkit MCP server still maintained?
dev.clipkit/clipkit is still listed as active in the MCP registry. We last reached this channel on 22 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.