Clueso
io.clueso/videoMake videos and docs with your AI agent — describe what you need, every output stays editable.
Tools · 40
Clueso's house style for composing video clips — how to think about concept, typography, color, composition, motion, and pacing. Read it before composing or editing a clip's visuals when you're NOT fo…
Create a new blank Clueso project. Returns the projectId and initialClipId — the project starts with one blank clip already at index 0 (default short duration). Use update_clips to resize/retitle clip…
Update a project's metadata: rename, change description, move to a different folder, or change aspect ratio. Only fields you provide are changed. To move a project to the workspace root, pass folder_…
Clone an entire project — every clip, voiceover, asset, and metadata field — into a fresh project. The copy has its own S3 namespace, so changes or deletions to the source never affect the duplicate. …
Kick off a video export of the project. Returns immediately with an export_id; the export pipeline runs in the background. The user can find the rendered video in the Exports tab in the editor. Defau…
Find any resource in Clueso by type, optionally filtered by name or exact id. One tool for listing and searching across the workspace. type: • projects | folders | clueprints | workspaces • backg…
Switch the active workspace for this session. Use find(type='workspaces') to see available options.
Get a summary of a project: canvas dimensions, per-clip summary (ids, indices, durations, element counts, voiceover_volume), and `audio_tracks` — every music/SFX entry on the project flattened to the …
Read one clip: its elements (positions/sizes in canvas pixels), voiceover (text, voice, duration, voiceover_volume), background and transition. Pass `render` to also get a PNG of the frame. ASK FOR W…
Update one or more clips in a single call — background, transition, duration, title, visibility, position, and (video clips) the footage transform via video_styling. Always batch. Each entry: { clip_…
Remove a clip from the project by index. Cannot remove the last remaining clip. After removal, all clips with index > clip_index shift down by 1. When removing multiple clips by index, remove from hi…
Split a video clip into two clips at the given timestamp. The left clip keeps the original clip ID; the right clip gets a new ID and is inserted immediately after. Elements spanning the split point ar…
Clone one clip — within the same project, or **from another project** — into a target project. - Same project: pass `target_project_id` and `source_clip_id` (omit `source_project_id`). - Cross-projec…
Create new clips on a project. One tool, three sources: - kind="blank": empty slide clips you'll populate with add_elements / generate_media. Pass `clips: [{title?, duration?}, ...]`. Note: create_pr…
Return the JSON schema for an element type's type_data. Call this before add_elements / update_elements when you don't already know the field shape for the element_type you're placing.
Add many elements across one or more clips in a single tool call. Replaces the per-element tool — always batch. Use after calling get_element_schema to confirm the type_data shape per element_type. I…
Update many elements across one or more clips in a single tool call. Replaces the per-element tool — always batch. Each item can update position/timing fields alone, or type-specific fields via type_…
Remove many elements across one or more clips in a single tool call. One entry per element ({clip_index, element_id}). Concurrency: parallel-safe (conflict domain: the individual element) — same as a…
Reorder the elements inside a clip. List position IS the z-index — later entries in `ordered_element_ids` render on top of earlier ones. You MUST pass the full set of element IDs currently in the cli…
Remove an element or audio track from a project. - target="element": removes an element from a clip (requires clip_index + element_id) - target="audio": removes a music/SFX track (requires music_id — …
Add a music track or sound effect that plays as a project-level audio layer over all clips. Does NOT consume a clip slot. Use this for background music or a soundtrack that should play under the exist…
Mutate fields on an existing music/SFX track by id. Read existing tracks via `get_project.audio_tracks` — the per-entry shape there matches this tool's args, so you can flip a knob (volume, fades, tim…
Set voiceover text and/or trigger speech generation for any number of clips in a single call. Each entry chooses its own action: - "set_text" — set transcript for a clip (clip_index + text) …
Run the agentic auto-sync pipeline against a clip with a source recording. Detects natural sync points (UI state changes, narrated steps) and inserts sync-marker nodes into the clip's transcript. Asy…
Insert one sync marker on a clip's transcript. Use this when: - The user is explicit about WHERE the camera should pause / cut (e.g. "sync the word 'submit' to 4.2s of the demo"). - `auto_sync` ran b…
Upload one or more files to Clueso. Three modes — pick by client + where the file lives: 1. **file_name** — HOSTED upload, the default for any non-UI / programmatic upload (Claude Code, Cursor, Claud…
Fetch all files the user uploaded via the hosted upload page. Returns one mcp_upload_id per file — pass each to the appropriate tool (add_clips, add_article_media, etc.). Call this once after the user…
Generate an AI image or canvas-code-based animation directly into a clip. - kind="image": text-to-image. Pass `prompt`. Optional: `style_id` (from find type='image_gen_style_packs'), `reference_image…
Estimate voiceover duration for one or many clips at once (~150 words/minute). Pass an array of voiceover texts — one per clip. Returns durations in the same order, ready for add_clips.
Analyze an audio file. Modes: - transcript: Speech-to-text with word-level timestamps. Works on BOTH speech and sung lyrics — routes to a music-aware provider when content is detected as music. Use to…
Get the article content as markdown. Screenshots appear as <SCREENSHOT {id}> placeholders. Returns the markdown text and a list of screenshot IDs.
Update article text content from markdown. Use <SCREENSHOT {id}> placeholders to position screenshots. Screenshots in the markdown are kept. Screenshots removed from markdown are deleted. Order in mar…
Add a screenshot or GIF to the article. Returns a screenshot_id to place in the article via update_article using `<SCREENSHOT screenshot_id>`. - kind="image": pass `timestamp` to capture a frame from…
Update an article image/GIF (screenshot), or inspect its current state. - Provide one or more of `zoom_factor`, `crop`, `shapes` to change metadata. - Pass `render=true` (with no other updates) to fet…
Create a new clueprint (reusable video template). A clueprint is a structured file directory with design notes, composition rules, and screenshots that can be used to generate videos. Use human-reada…
Fetch clueprint data. Use `include` to control how much you pull back: - include="metadata": just the clueprint's name/description/tags/visibility/thumbnail. - include="tree": metadata + the full file…
Update a clueprint's metadata and/or file contents in one call. Metadata fields (`name`, `description`, `tags`, `visibility`, `thumbnail_path`) are applied as a patch — only the fields you pass chang…
Set the voiceover voice for every clip in a project. Use this to apply a clueprint's voice (read `voiceover.voice.name` and `voiceover.voice.engine` from the clueprint source data), or to switch all …
Post a review comment on a project, attributed to "Clueso AI". Use this to leave feedback, suggestions, or notes — either at the project level (no clip_id) or pinned to a specific clip with an option…
Create a screen-recording clip in a project. Creates blank placeholder clips, registers job entities, and sends the job to AVS. The blank clips this tool creates are placeholders; they become video c…
Resources · 14
How to author a clueprint — folder structure, naming, screenshots, anti-patterns. Read before creating or editing clueprint files.
clueso://docs/clueprint-authoring
How to write animation prompts for generate_media(kind='animation') / add_elements(element_type='animation'). Includes the component patterns: component_id to reuse one exactly, base_component_id to g…
clueso://docs/animation-prompts
What sync points are, when to run auto_sync, and why TTS for video clips depends on them. Read before queuing voiceover_batch on a video clip.
clueso://docs/sync-points
How style_id steers generate_media (kind='image') and how to discover the available presets via find(type='image_gen_style_packs').
clueso://docs/generation-styles
Schema for 'text' element type: Plain text element. Use for labels, captions, headings, or any text overlay without a background bubble. NOTE: x/y origin is alignment-dependent — left → top-left, cent…
clueso://schemas/element/text
Schema for 'callout' element type: Text inside a styled background bubble. Use to annotate parts of a screen, highlight a key point, or add a speech-bubble style note. Ships with sensible bubble defau…
clueso://schemas/element/callout
Schema for 'rectangle' element type: Rectangle shape. Use for colored boxes, dividers, backgrounds, framing, or any filled/outlined rectangular region. Set `shapeSubType` to `ellipse`, `polygon`, or `…
clueso://schemas/element/rectangle
Schema for 'arrow' element type: Arrow element. Position/size define its bounding box. Use to point at UI elements, connect concepts, or indicate direction. Set `shapeSubType` to `line` for a plain li…
clueso://schemas/element/arrow
Schema for 'blur' element type: Blur overlay that obscures a rectangular region. Use to redact sensitive info, hide UI regions, or create depth-of-field effects.
clueso://schemas/element/blur
Schema for 'spotlight' element type: Spotlight highlighting a specific area while dimming surroundings. Use to guide viewer attention to a button, field, or key UI element. The element's bounds define…
clueso://schemas/element/spotlight
Schema for 'zoom' element type: Zoom effect that magnifies a region around a center point. Multiple zooms can exist in a clip, but their time windows must not overlap — the backend rejects a new zoom …
clueso://schemas/element/zoom
Schema for 'image' element type: Image element. Two modes — provide ONE of: • prompt → AI-generated image (style_id, reference_image_url, mcp_upload_id are gen hints). Async; element renders in back…
clueso://schemas/element/image
Schema for 'video' element type: Video element — a video placed as a visual layer WITHIN an existing clip (picture-in-picture, b-roll, inset demo, looping background). Positioned at x/y/width/height i…
clueso://schemas/element/video
Schema for 'animation' element type: Canvas-code-based generative visual element — JS that renders to canvas (the server compiles it; you write a prompt, not the code). Use for UI mockups, infographic…
clueso://schemas/element/animation
Similar MCP servers embedding-nearest
How to use
Add to your Claude Desktop / Cursor / Cline MCP config:
{
"mcpServers": {
"clueso": {
"url": "https://connect.clueso.io/mcp",
"transport": "streamable-http"
}
}
}