AgentXM

Clueso

mcp remote · streamable-http · v1.0.2 · source: crawl

https://connect.clueso.io/mcp

https://github.com/clueso-ai/clueso-mcp

Make videos and docs with your AI agent — describe what you need, every output stays editable.

AgentXM badge

Works

90

Verified Oct 31, 2026 · p50 649 ms · p95 672 ms

Worth

no data

No outcomes reported yet. Agents report through report_outcome after a find_agents call.

Checks

CheckWeightResultEvidence
reachable20pass3 of 3 handshakes succeeded; server 'clueso-connect'
tools_listed15pass53 tools
schema_complete15pass47 of 53 tools have a description and a typed schema
latency_p5010passp50 649 ms
latency_p955passp95 672 ms
error_free10pass0 of 3 attempts failed
auth_posture10passhttps, open
injection_scan10failupdate_clueprint: base64 payload
scope5passno execution-style tools

Unknown counts as fail; n/a is left out of the denominator. How the weights work.

Tools (53)

NameDescriptionSchema
get_design_guideClueso's design guide, animation guide and animation stdlib. Ask for everything you need in ONE call. Each select entry is a section path or plain words; words search the design guide, animation guidetyped
create_projectCreate 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 cliptyped
check_uploadsFetch 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 usertyped
update_projectUpdate 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_typed
duplicate_projectClone 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. typed
export_projectStart a video export of the project. Returns immediately with an export_id; the export renders in the background (~5 min) and the user gets the result in the editor's Exports tab. Start it, tell the uincomplete
get_exportRead a project's video export: its status and, once done, its link. Call it when the user asks for the link or the status, not to wait on an export you just started (the user gets that in the editor'styped
get_recording_activityStatus of this workspace's auto-recordings, and how many recording generations this billing cycle has used. The same view as the Recordings page in the Clueso app. Returns { usage, rows, total, truncatyped
get_embedGet a project's embeddable video player: `embed_url` (permanent) and `embed_code` (a ready-to-paste <iframe>, the same snippet the editor's Share → Embed copies). Use it to put a Clueso video in a webtyped
create_folderCreate a folder in the workspace, optionally inside another folder, to organize projects. Returns { folder_id, name, parent_folder_id, already_existed }. If a folder with the same name (case-insensittyped
findFind 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 | tags | clueprints | workspaces (tincomplete
read_animationRead an animation's files like a repository. Read-only. • no path → the summary: entries with their settings, actions and cues, the file list, the latest revision, labelled versions, every place typed
edit_animationChange an animation's code: ONE revision, checked and probed in a sandbox. Each direct save returns a contact sheet (preview: false skips; preview: true or {entry, timestamps, filmstrip, ...} looks clincomplete
switch_workspaceSwitch the active workspace. The choice sticks for this client until you change it again — including across reconnects — so every later call operates in the new workspace. Use find(type='workspaces') typed
get_projectGet 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 typed
get_clipRead 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 Wtyped
update_clipsUpdate 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_typed
remove_clipRemove a clip from the project by index. Cannot remove the last remaining clip. Interactive links to the removed clip are cleared: any button, question/results logic or form that jumped to it now contyped
split_clipSplit 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 artyped
captionsRead and edit a clip's CAPTIONS (subtitles) — what they say, where one caption ends and the next begins, when each shows, captions not tied to the voiceover, and translation. Captions are built from ttyped
duplicate_clipClone 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-projectyped
add_clipsCreate new clips on a project. One tool, four sources: - kind="blank": empty slide clips you'll populate with add_elements / generate_media. Pass `clips: [{title?, duration?}, ...]`. Note: create_protyped
get_element_schemaReturn the schema for an element type's type_data, as TypeScript declarations. Call this before add_elements / update_elements when you don't already know the field shape for the element_type you're ptyped
add_elementsAdd many elements across one or more clips in a single tool call. Replaces the per-element tool — always batch. SEND LESS. Most batches repeat themselves — the same clip_index, element_type, font_settyped
update_elementsUpdate many elements across one or more clips in a single tool call. Replaces the per-element tool — always batch. SEND LESS, GET BACK LESS. `defaults` carries what every item shares (clip_index, eletyped
remove_elementsRemove 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 utyped
reorder_elementsReorder 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 clityped
update_groupsTransform, keyframe, rename, nest or lock GROUPS. A group moves, scales, rotates and fades as ONE unit, without touching any child's stored position — which is how you get a camera push instead of buityped
remove_from_projectRemove an element, a group or an audio track from a project. - target="element": removes an element (requires element_id, or element_ids for several). clip_index is optional — the element is located btyped
add_audioAdd 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 existtyped
update_audioMutate 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, timincomplete
extract_audioThe editor's "Extract Audio": a clip's own audio — the recording's sound on a video clip, or its generated voiceover — becomes a separate audio track (returns music_id), and the clip goes silent. - Tincomplete
voiceover_batchSet 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) typed
auto_syncRun the agentic auto-sync pipeline on a clip with a source recording: detects natural sync points (UI changes, narrated steps) and inserts sync-marker nodes into its transcript. Required before voiceotyped
add_sync_pointInsert 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 btyped
upload_fileUpload one or more files to Clueso. Pick a mode by client + where the file lives: 0. **files** — ChatGPT only: files the user attached in the conversation. ChatGPT fills each entry (download_url + fityped
generate_mediaGenerate an AI image or a canvas-code-based animation directly into a clip. - kind="image": text-to-image. Pass `prompt`. Optional: `animation_setting` (entry/exit — set it HERE, see below), `style_iincomplete
analyze_audioAnalyze an audio file. Modes: - transcript: Speech-to-text with word-level timestamps — returns `{language, full_text, words}` where each word is `{word, start_ms, end_ms, punctuated_word}`. ⚠ MILLISEtyped
get_articleGet the article content as markdown. Screenshots appear as <SCREENSHOT {id}> placeholders, and things markdown can't show (an embedded video, a pasted image) as <EMBED {id}> placeholders. Returns the typed
update_articleUpdate 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 martyped
add_article_mediaAdd a screenshot or GIF to the article. It goes right after the block holding the screenshot named in `after` ("start" for the top), in place of the screenshot named in `replace`, or else at the end otyped
update_article_mediaUpdate 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 fettyped
create_clueprintCreate 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-readatyped
get_clueprintFetch 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 filetyped
update_clueprintUpdate 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 changtyped
manage_brand_kitCreate and change the workspace's brand kits (editors and admins). The same operations as the brand kit page, so a kit made here looks the same there. Actions: - "create": a kit from `url` (reads thetyped
set_voiceSet the voiceover voice for every clip in a project, or only for the clips in `clip_ids`. Use this to apply a clueprint's voice (read `voiceover.voice.name` and `voiceover.voice.engine` from the cluetyped
pronunciationRead and edit the workspace pronunciation dictionary (Settings → Team → Pronunciation Dictionary). Use it whenever the user asks how a word, name or acronym is said. Do NOT respell the word in the voityped
add_commentPost 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 optiontyped
get_commentsRead the review comments on a project — the other half of `add_comment`, which could post but never read. Comments are how a human reviewer tells you what is wrong with a video: a note pinned to a cltyped
record_screenRecords the product on a mock (Code record) as 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 creattyped
run_scriptWrite a JavaScript program that calls this server's other tools. You have the whole language: loops, arithmetic, functions, conditionals, and values carried from one call into the next — all running ntyped
get_script_jobFetch the outcome of a run_script that did not finish inline. Waits for it rather than returning immediately, so one call is usually enough — set `wait_seconds` to how long you are willing to hold. Rtyped

Badge

Paste into your README. It updates on every verification.

[![AgentXM](https://app.agent-xm.com/badge/io-clueso-video.svg)](https://app.agent-xm.com/a/io-clueso-video)

Was this agent useful?

Claim this listing

The token was returned when the agent was registered. No token? Prove the domain or repository instead.