Verified conversions across 205 color spaces: CSS strings, gamut checks, .cube LUTs
Clueso is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Make videos and docs with your AI agent — describe what you need, every output stays editable.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http clueso-mcp https://connect.clueso.io/mcp
# 2 — ask your agent for something these tools do
# get_design_guide, create_project, update_project and 48 more
Clueso costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http clueso-mcp https://connect.clueso.io/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
51 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Clueso'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 guide and stdlib together and return the best few, each labelled with the path that selects it exactly. get_design_guide({select: ['gist', 'styles.kinetic-type', 'motion.*', 'animation.contract', 'stagg
| Parameter | Type | Required | Notes |
|---|---|---|---|
| topic | string | no | Older form; select covers it. 'animation': the animation guide's gist. 'stdlib': search with query. |
| select | array | no | Everything to return, in one list: section paths and plain words, mixed. |
| query | string | no | With topic 'stdlib': what to search for. |
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 0, add_clips(kind='blank') to append more clips, add_elements to place content, and add_audio to attach a project-level music track. Optionally place the project inside a folder (use find(type='fold
| Parameter | Type | Required | Notes |
|---|---|---|---|
| title | string | no | Project title |
| folder_id | string | no | Optional folder ID to nest the project under. Use find(type='folders') to discover IDs. Omit to create at workspace root. |
| description | string | no | Optional project description (max ~500 chars) |
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_id="" (empty string). Aspect ratio: pass any "W:H" (positive integers). The canvas is fit inside 1920×1080 keeping the ratio, so element pixel coordinates use the resulting canvas. Common values: - "
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | The project ID to update |
| title | string | no | New project title |
| description | string | no | New description |
| folder_id | string | no | New folder ID. Pass '' (empty string) to move to workspace root. |
| aspect_ratio | string | no | New aspect ratio as 'W:H' (positive integers). Common: '16:9' landscape, '9:16'/'4:5'/'3:4' portrait, '1:1' square. |
| add_tags | array | no | Tag names to add; missing tags are created. |
| remove_tags | array | no | Tag names to remove. |
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. Defaults: - new_title omitted → "{source title} (copy)" when no folder_id is given (or it's empty) and the source stays in the same org; pass an explicit non-empty folder_id and the title is preserve
| Parameter | Type | Required | Notes |
|---|---|---|---|
| source_project_id | string | yes | Project (guide) ID to duplicate. |
| new_title | string | no | Override the title of the duplicate. |
| folder_id | string | no | Place the duplicate in this folder. Omit to keep the same folder as the source. Pass '' (empty string) to move to workspace root. |
Start 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 user it has started (with the export_id), and stop: do not call get_export in a loop or hold run_script open waiting for it. Call get_export only when the user asks for the link (it then returns downlo
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | The project ID to export |
| resolution | string | no | Output resolution (default 1080p) |
| fps | no | Frames per second (default 30) | |
| captions | boolean | no | Burn subtitles into the video (default false) |
| destination | string | no | Where the render goes: "download" (mp4 file, default) or "embed" (publish/update the project's embeddable player; its URL never changes). Publishing an embed needs an editor or admin role. |
Read 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's Exports tab, so start it, say so, and stop). Pass exactly one of export_id (the one export_project returned) or project_id (that project's most recently REQUESTED export, which may still be in pr
| Parameter | Type | Required | Notes |
|---|---|---|---|
| export_id | string | no | The export_id export_project returned. Omit when passing project_id. |
| project_id | string | no | Check this project's most recently requested export instead. Omit when passing export_id. |
| wait_seconds | integer | no | How long to wait for the export to complete or fail before answering, default 50s. Pass 0 for an immediate status check (always, inside run_script). |
Status 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, truncated }. usage is { cycle_start, cycle_end, generations_used, generations_limit (null: no cap), active_recordings, active_recordings_limit }. Each row is one project with its latest recording's `stat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | no | Only this project's row. |
| state | string | no | Only rows in this state. |
| limit | integer | no | Rows to return, default 20, max 50. total counts every matching row. |
Get 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 website, help center or LMS lesson. Returns { project_id, published, embed_url?, embed_code?, latest_publish? }. • published=false — the project has never been published as an embed. Call export_proje
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | The project ID whose embed to read |
Create 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-insensitive) already exists in that parent, it is returned with already_existed=true instead of creating a duplicate — so it is safe to call to "ensure" a folder exists. Put projects in it with create_projec
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Folder name |
| parent_folder_id | string | no | Create the folder inside this folder (use find(type='folders') for IDs). Omit for the workspace root. |
| description | string | no | Optional folder description |
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 | tags | clueprints | workspaces (tags = the workspace's project tags, each with color and project_count. Apply them with update_project. Each project result carries its tags (names); filter projects by them with tags + `tag_ma
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type | string | yes | Resource type to find. |
| query | string | no | Case-insensitive substring match on name. |
| id | string | no | Exact id — returns just that record. |
| folder_id | string | no | projects/images/videos/music only: restrict to a folder. |
| source | string | no | media types (images/videos/music/sfx) only: where to search — 'org' (your saved workspace media), 'stock' (stock library — images/videos via Pexels, music from Clueso's catalog), 'all' (both; default) |
| engine | string | no | voices only: 'eleven' | 'cartesia' | 'google'. |
| language | string | no | voices only: e.g. 'en'. |
| creator_id | string | no | clueprints only: filter by creator id. |
| mine_only | boolean | no | clueprints only: only ones I created. |
| orientation | string | no | stock images/videos only: result orientation. |
| color | string | no | stock images only: color name or hex, e.g. 'blue'. |
| size | string | no | stock videos only: minimum resolution bucket. |
| min_duration | integer | no | stock videos only: minimum clip length in seconds. |
| max_duration | integer | no | stock videos + freesound audio: maximum clip length in seconds. |
| provider | string | no | stock media: which library to search (exactly one). images/videos: 'pexels' (default — polished real-world photos & footage) | 'pixabay' (illustrations, vectors, clip-art, icons + more variety; pair w |
| image_type | string | no | stock images + provider='pixabay' only: 'photo' | 'illustration' | 'vector' (flat/drawn graphics, icons, clip-art). Use illustration/vector for graphic looks; photo (or Pexels) for realism. |
| video_type | string | no | stock videos + provider='pixabay' only: 'film' (live footage) | 'animation' (motion graphics). |
| tier | string | no | animations only: 'org' (this workspace), 'official' (Clueso's) or 'community'. Default all three. |
| project_id | string | no | animations only: also list the animations saved to this project (they are hidden everywhere else). |
| tags | array | no | projects only: tag names; keeps projects carrying them (see tag_match). |
Read 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 it is used, dependency_updates (imports pinned below their latest revision, with the animation.bump call that re-pins each) and dependents_behind (animations that import an older revision of this one,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | no | Project the element is in. Needed with element_id. |
| element_id | string | no | An animation element: reads the animation it shows, at the revision it shows. Use this OR animation. |
| animation | string | no | The animation: @org/<slug>, @official/<slug>, @community/<publisher>/<slug>, or its id (from find(type='animations')). |
| path | string | no | A file in the animation, e.g. 'entries/maya.js' or 'manifest.json'. Returns numbered lines. |
| format | string | no | With path: 'numbered' (default) prefixes each line with 'N| ' for choosing edit text; 'raw' returns the exact file text; 'json' returns a .json file (manifest.json) parsed, as json. |
| range | array | no | With path: first and last line to return, inclusive, e.g. [40, 80]. |
| pattern | string | no | A regular expression, at most 200 characters. Returns matching lines with their path and line number, across the animation (or every workspace animation with all: true). |
| all | boolean | no | With pattern and no animation: search every animation in this workspace. |
Change 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 closer; preview_warnings). The server holds the files; keep no local copy. Create with each file's full text once, then edit the saved revision: files: [{path, content}] new file or rewrite files:
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | no | Project the element is in. Needed with element_id. |
| element_id | string | no | The animation element this edit is about. The edit starts from the revision that element shows, and every use in this project moves to the new revision when it passes. |
| animation | string | no | The animation to edit when there is no element: @org/<slug> or an id. 'new' creates one (then pass scope, name and slug). |
| scope | string | no | Only with animation 'new': one element, this project (the default with project_id; every scene of the video can import it), or the workspace library, only when the user asks to reuse it in other video |
| name | string | no | Only with animation 'new': the display name. |
| slug | string | no | Only with animation 'new': lowercase letters, digits and dashes; becomes @org/<slug>. Slugs are workspace-wide: one an animation of another project (or the library) holds is saved as the next free <sl |
| base_rev | integer | no | The revision you read and expect to edit from. If it has moved, the save is refused with stale_base, the current revision and the files changed since. |
| target | string | no | Required when the animation is used outside this project: 'shared' changes it for everyone who updates, 'fork' copies it for this project first. Official and community animations always fork. |
| patch | string | no | For a client working from files on disk: a unified diff of any number of files against the saved revision (git diff, diff -u or diff -ruN), run from the folder holding manifest.json. The server |
| files | array | no | Per-file changes, each with exactly one of edits, content, patch or upload_id. Applied in order after edits and patch, all saved as ONE revision. |
| upload_ids | array | no | Whole files sent with upload_file(file_names: [...]) and its one curl: each upload's file name is its path in the animation (e.g. 'entries/city.js'), and its text replaces or adds that file. Applied a |
| edits | array | no | Operations, applied in order before files: delete and move (replace and write also work; files is the shorter way). |
| dry_run | boolean | no | Build and check the edits without saving. Returns a preview token; render it with get_clip(render: {preview}). |
| detail | string | no | summary (default) returns the outcome and what changed; full adds the diff hunks and every probe thumbnail. |
| checkpoint | string | no | A one-line note that saves this revision, when it passes, as a version in the element's history in the editor (the user can preview and restore it there). Set it when you reach a state worth returning |
| folder | string | no | Only with animation 'new' and scope 'library' (a save the user asked to keep for the workspace): the library folder, by path, e.g. 'Characters' or 'Characters/Presenters'. Missing folders are created |
| preview | no | Every direct save already returns a small contact sheet (four moments). false skips it; true or an object asks for a larger one with your choice of entry, moments, a filmstrip and test settings (param | |
| place | object | no | Put the animation on the canvas on the first passing save, as an animation element on this clip (the add_elements placement), and return its element_id: pass that on every later edit so each passing s |
| update_dependents | boolean | no | After a passing save, re-pin every animation that imports this one (a kit's scenes) to the new revision in the same call and move this project's uses of them; dependents_updated {report, project_uses_ |
Switch 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') to see available options.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspaceId | string | yes | Workspace ID to switch to |
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 same wire shape add_audio accepts (id, src, name, source_duration, guide_start_time/end_time, music_start_time/end_time, volume, loop, fade_in, fade_out). To copy an audio track to another project:
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | The project ID |
| render | object | no | The whole film as ONE labelled image instead of the summary: exactly one of seams, clips or at. A reply that leaves cuts or clips out names the next from_cut or from_clip. |
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 WHAT YOU NEED. A full read is large — on a dense clip the per-word voiceover array and the element type_data blobs dominate it, and repeated full reads are the main way a long session runs out of conte
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | The project ID |
| clip_index | integer | yes | Zero-based clip index |
| render | object | no | Render the clip as an image. Presence of this object IS the request to render — omit it and nothing is rendered. {} renders at t=0. Independent of select, which only shapes the JSON: pair `select: |
| select | array | no | Ask for exactly the JSON you want, GraphQL-style. Omit for everything; pass [] for none. Sections: 'elements' (whole element rows), 'voiceover_words' (per-word VO timings; returns the key of the sam |
| element_ids | array | no | WHICH element rows to return — all others are dropped, and [] returns none. Independent of select, which chooses the sections/keys. Use it to re-inspect just what you added or updated; most add_elem |
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_index, duration?, title?, background_color? | background?, transition?, hidden?, position?, voiceover_volume?, video_styling? } - duration: sets the clip's length WITHOUT rescaling anything (unlike ge
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | Project ID |
| updates | array | yes | One entry per clip to update. |
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 highest index to lowest (or capture clip_ids first and re-derive indices between calls). Concurrency: whole-project mutation (conflict domain: the entire project) — serialize. Do not run it in parallel
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | The project ID |
| clip_index | integer | yes | Zero-based clip index to remove |
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 are duplicated into both clips with adjusted timing. Voiceover transcript and transcribed words are split proportionally. Concurrency: whole-project mutation (conflict domain: the entire project) — ser
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | The project ID |
| clip_index | integer | yes | Index of the clip to split |
| split_time | number | yes | Time in seconds within the clip where to split (clip-relative, not timeline-relative). Must be > 0.1s and < clip_duration − 0.1s; values outside this range are rejected. |
Read 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 the clip's voiceover words: each caption is a run of words, addressed by its start_word_index. Start with action="list" on the clip — it returns blocks (voiceover captions: start_word_index, end_w
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | The project ID |
| action | string | yes | What to do — see the tool description |
| clip_index | integer | no | The clip. Required for every action except translate/language, where omitting it means every clip. |
| start_word_index | integer | no | edit/reset/split/merge/timing/timing_reset — the caption, exactly as list returned it. |
| split_word_index | integer | no | split — the word that starts the new second caption. |
| text | string | no | edit / manual_add / manual_edit — the caption text. |
| start_time | number | no | timing / manual_add / manual_edit — seconds from the start of the clip. |
| end_time | number | no | timing / manual_add / manual_edit — seconds from the start of the clip. |
| caption_id | string | no | manual_edit / manual_remove — from list's manual_captions. |
| language | string | no | translate — language id ("fr") or name ("French"). language — a translated id, or "original". |
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-project: pass target_project_id, source_project_id, source_clip_id. The source clip's S3 assets (voiceover audio, original video footage, generated video, etc.) are re-hosted into the target guide's S
| Parameter | Type | Required | Notes |
|---|---|---|---|
| target_project_id | string | yes | Project (guide) ID to insert the duplicate into. |
| source_clip_id | string | yes | ID of the clip to duplicate. |
| source_project_id | string | no | Cross-project mode: ID of the project the source clip lives in. Omit for same-project duplication. |
| after_clip_id | string | no | Insert after this clip ID in the target. Appends at end if omitted. |
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_project already creates clip 0; calling with N blank entries gives N+1 clips total. - kind="pptx": extract slides from an uploaded .ppt/.pptx. Pass mcp_upload_id (from upload_file), optional `slide_in
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | yes | Source for the new clips: 'blank' | 'pptx' | 'video'. |
| project_id | string | yes | Project (guide) ID. |
| after_clip_id | string | no | Insert after this clip ID; appends at end if omitted. |
| clips | array | no | kind='blank' only: one entry per blank clip. Optionally set background_color/background + transition per clip at creation — no follow-up update_clips needed. |
| mcp_upload_id | string | no | kind='pptx' or 'video': mcp_upload_id from the upload_file tool. |
| slide_indices | array | no | kind='pptx' only: 0-based slide indices to insert. Omit to insert all slides. |
| mime_type | string | no | kind='video' only: MIME type (default 'video/mp4'). Audio MIME types insert the file as a sequential clip with auto-TTS; for background music, use add_audio instead. |
| title | string | no | kind='video' only: clip title (default 'Video'). |
| voiceover_text | string | no | kind='video' only: post-AI voiceover script (saved as v2). Original audio is always retained as the base transcript. Bracketed emotion tags ([excited], [whispers]) are performed, not spoken; <pause:1. |
| cuts | array | no | kind='video' only: per-clip cuts. Each entry becomes one inserted clip. Omit to insert the full upload as a single clip. |
| auto_elements | boolean | no | kind='video' only: when true, run auto-element detection (zooms, spotlights, blurs). Default false. Only meaningful on cache miss; cache hits clone the originating run's auto-elements. |
Return 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 placing. By default it is compact: every field with its type and a one-line note, plus the keyframable list. Ask about specific properties with fields: ['background_setting'] or `query: 'pill backgr
| Parameter | Type | Required | Notes |
|---|---|---|---|
| element_type | string | yes | One of: text, callout, rectangle, arrow, blur, spotlight, zoom, image, video, animation, avatar, group |
| mode | string | no | 'add' returns required + optional fields; 'update' returns all-optional. |
| fields | array | no | Return only these fields, with their full notes, default and an example — text is 15KB whole, ~300 bytes for two. |
| query | string | no | Words describing the property you want ('pill background', 'corner radius', 'line height'): returns the best-matching fields (up to 5) as fields would. |
| detail | string | no | 'compact' (default): names, types and one-line notes. 'full': every field's full notes, nested docs and the keyframe rules. |
| format | string | no | Defaults to 'declarations' — TypeScript-style, which is the better READ. Inside run_script it defaults to 'json' instead, because a script indexes into the structure and the declaration text would arr |
Add 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_setting, alignment or gradientSetting on every item. Hoist those into defaults and send them once; each item then carries only what differs, and overrides any key it sets (type_data merges one level).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | Project ID |
| elements | array | yes | Elements to add — at least one entry. |
| defaults | object | no | Values shared by every item, sent once rather than repeated. Items win per key; type_data merges one level. E.g. defaults:{clip_index:1, element_type:'text', type_data:{font_setting:{font:'Inter',weig |
| returning | array | no | What comes back, the way get_clip's select shapes a read. Omitted: ids, the measured layout and the clip audit in compact form. 'ids': element_id per result. 'layout': the measured text fit (font_si |
Update 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, element_type, and type_data entries like font_setting or alignment) so you send it once instead of per item; each item overrides any key it sets. returning declares what comes back, the way select sh
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | Project ID |
| updates | array | yes | Element updates — at least one entry. |
| defaults | object | no | Values shared by every item, sent once rather than repeated. Items win per key; type_data merges one level. E.g. defaults:{clip_index:1, element_type:'text', type_data:{font_setting:{font:'Inter',weig |
| returning | array | no | What comes back, the way get_clip's select shapes a read. Omitted: ids, the measured layout and the clip audit in compact form. 'ids': element_id per result. 'layout': the measured text fit (font_si |
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 update_elements. Each removal is a granular element_remove patch scoped to that element id, and the whole batch lands in ONE save. Fan out across subagents as long as they touch DIFFERENT element ids.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | Project ID |
| removals | array | yes | Elements to remove — at least one entry. |
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 clip. The handler rejects partial lists so a reorder can never silently drop an element. Get the current list via get_clip — the order it returns is exactly the order this takes. Works on grouped clips.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | Project ID. |
| clip_index | integer | yes | Zero-based clip index. |
| ordered_element_ids | array | yes | All element IDs currently in the clip, in the new order. Position N = z-index N (later = on top). |
Transform, 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 building the target layout twice and crossfading it. Address by group_id, never by name. Ids come from get_clip, or from the group_id that add_elements/update_elements hands back when you pass `grou
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | The project ID |
| items | array | yes | One entry per group to update |
| returning | array | no | What comes back, the way get_clip's select shapes a read. Omitted: ids, the measured layout and the clip audit in compact form. 'ids': element_id per result. 'layout': the measured text fit (font_si |
Remove 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 by id; pass it only as a hint - target="group": removes a GROUP node (requires clip_index + group_id). By default its children survive — they rise to the removed group's own parent, which for a top-lev
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | The project ID |
| target | string | yes | What to remove: 'element', 'group' or 'audio' |
| clip_index | integer | no | Zero-based clip index. Required for target='group'; for target='element' an optional hint — the element is found by id either way |
| element_id | string | no | Element ID to remove (target='element'; or use element_ids) |
| element_ids | array | no | Several element IDs to remove (target='element'). Removed one at a time, so a failure part-way leaves the earlier ones removed; retrying the same list is safe — ids already gone come back as already_a |
| music_id | string | no | Music/SFX track ID to remove (required for target='audio') |
| group_id | string | no | Group ID to remove (required for target='group') |
| keep_children | boolean | no | target='group' only. Omit/true ungroups: children rise to the removed group's own parent. false deletes the whole subtree. |
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 existing timeline. (For inserting an audio file as its own sequential clip with auto-transcription, use add_clips(kind='video') with an audio mime_type instead.) - type="music": requires src, name, source
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | The project ID |
| type | string | yes | Audio type: 'music' or 'sfx' |
| src | string | no | Audio source. For type='music' (required) or a stock type='sfx': the src from a find(type='music'|'sfx') result (may be an opaque Freesound handle — pass as-is), or an mcp_upload_id (prefixed 'mup_' |
| name | string | no | Track/effect name. From the find result, or any descriptive label when using mcp_upload_id. Required for type='music' and for stock type='sfx' (passed via src). |
| source_duration | number | no | Source duration in seconds. From the find result, or analyze_audio mode='features' (data.duration_ms / 1000). Required for type='music' and for stock type='sfx' (passed via src). |
| guide_start_time | number | no | When to start playing in the guide timeline (seconds). Required for type='sfx', optional for music (default 0). |
| guide_end_time | number | no | When to stop playing (seconds). Music only. Default = end of project AT CALL TIME — captured once at insert and NOT recomputed when clips are later added or resized. Pass an explicit value (e.g. the i |
| music_start_time | number | no | In-point within the SOURCE track (seconds) — trims where playback begins in the music file. Music only. Default 0 (start of source). |
| music_end_time | number | no | Out-point within the SOURCE track (seconds) — trims where playback ends in the music file. Music only. Default = source_duration. |
| volume | number | no | Volume as percent (0–100). Default: 50 for music, 80 for sfx. |
| loop | boolean | no | Loop the track if project is longer than the source. Music only. (default: false) |
| fade_in | number | no | Fade-in duration in seconds. Music only. (default: 0.5) |
| fade_out | number | no | Fade-out duration in seconds. Music only. (default: 0.5) |
| sfx_key | string | no | LEGACY fixed-library SFX key (e.g. 'whoosh', 'pop', 'click'). Optional alternative to src for type='sfx'. Prefer the src/name/source_duration from a find(type='sfx') result. |
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, timing, loop) and write it back without losing the track's id. Only fields you pass are changed; omitted fields are preserved. To delete a track entirely, use remove_from_project(target='audio') inste
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | The project ID |
| music_id | string | yes | ID of the audio track (from get_project.audio_tracks[].id) |
| guide_start_time | number | no | New start time on the project timeline (seconds) |
| guide_end_time | number | no | New end time on the project timeline (seconds) |
| music_start_time | number | no | New start offset within the source file (seconds) |
| music_end_time | number | no | New end offset within the source file (seconds) |
| volume | number | no | New playback volume 0-100 |
| loop | no | Whether the track loops | |
| fade_in | number | no | Fade-in duration (seconds) |
| fade_out | number | no | Fade-out duration (seconds) |
The 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. - The track starts where the clip starts and plays at normal speed. Shape it with update_audio (trim music_start_time / music_end_time, move guide_start_time, fade, volume); analyze_audio(file_url=<its s
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | The project ID |
| clip_index | integer | no | Zero-based clip index. Ignored if clip_id is provided. |
| clip_id | string | no | Clip ID (preferred over clip_index). |
| restore | no | true = undo: the clip plays its own audio again at 100%. |
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) - "generate_speech" — async TTS for a clip (returns immediately; wait: true blocks until it lands) - "set_and_generate" — set text and kick off TTS in one entry (+ text) Emotion tags: put ElevenLa
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | Project ID |
| entries | array | yes | Voiceover entries — at least one. |
| wait | boolean | no | true blocks until the speech this call starts has landed, so the clip durations, voiceover_words and element times you read next are the real ones: ready lists each landed clip with its new duration |
| wait_seconds | integer | no | With wait: the most to wait, default 50s. |
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. Async: returns immediately with a status enum from the pre-flight; sync-marker nodes appear in the transcript a few seconds later. Poll get_clip if you need to verify. Capacity: capped at 3 concurrent r
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | Project ID. |
| clip_id | string | yes | Clip ID to auto-sync. |
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 but missed a step you care about. How matching works: - word: case-insensitive, punctuation-stripped. The first match in the transcript is used unless occurrence > 1. - occurrence: 1-indexed — p
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | Project ID. |
| clip_id | string | no | Clip ID (preferred). If omitted, clip_index is used. |
| clip_index | integer | no | Zero-based clip index. Ignored if clip_id is provided. |
| word | string | yes | Target word (case-insensitive; trailing punctuation is stripped). |
| occurrence | integer | no | 1-indexed match number when the word repeats. Defaults to 1 (first occurrence). |
| timestamp_seconds | number | yes | Clip-relative timestamp in seconds. Auto-mapped to original-recording seconds when the clip has generated_timestamps. |
| sync_point_name | string | no | Optional label (e.g. 'Click submit'). Defaults to 'Sync point N' using the next order number. |
Upload 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 + file_id) itself; pass the attachments here rather than asking the user to re-upload. Returns one mcp_upload_id per file. 1. file_name — HOSTED upload, the default for any non-UI / programmatic uploa
| Parameter | Type | Required | Notes |
|---|---|---|---|
| files | array | no | ChatGPT file attachments, one entry per file (filled by ChatGPT). |
| file_url | string | no | Public URL to fetch the file from |
| file_name | string | no | File name with extension. Returns a Clueso upload URL + curl command that streams this single local file to us (single file). |
| request_hosted_upload | boolean | no | If true, returns a hosted upload page. Call once for all files — the page accepts multiple uploads under one token. |
| purpose | string | no | 'font': add the file to this workspace's brand fonts once it arrives (see above). With request_hosted_upload, every file dropped on the page is one, reported by check_uploads. |
| display_name | string | no | With purpose 'font' and one file (file_name, file_url, one files entry, or one file_names entry): the name to list the font under. Default: its family name without build dates or versions. |
| file_names | array | no | Hosted mode: the file names the user will upload, shown on the page. Without request_hosted_upload: upload these local files in one call (one token + URL each, and one curl for all), max 50. |
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 confirms they are done uploading; the token covers all files they dropped on the page.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| upload_token | string | yes | The upload_token returned by upload_file(request_hosted_upload: true) |
Generate an AI image or 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_id (from find type='image_gen_style_packs'), reference_image_url or mcp_upload_id for image-to-image grounding. - kind="animation": canvas-code animation rendered from a prompt. Pass prompt. Optio
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | yes | 'image' = AI text-to-image; 'animation' = canvas-code-based motion graphic. |
| project_id | string | yes | Project ID. |
| clip_id | string | yes | Clip ID to place the generated element into. |
| prompt | string | yes | Generation prompt. For animations, be SPECIFIC: name the UI elements, interaction sequence, timing feel, and visual style. Vague prompts produce bad output. |
| x | number | yes | Top-left X in canvas pixels. |
| y | number | yes | Top-left Y in canvas pixels. |
| width | number | yes | Width in pixels. |
| height | number | yes | Height in pixels. |
| start_time | number | no | Appear at (seconds). |
| end_time | number | no | Disappear at (seconds). |
| style_id | string | no | Image only. Style preset ID from find(type='image_gen_style_packs'). See resource clueso://docs/generation-styles. |
| model | string | no | Image only. Which image model renders it. Default gemini-3-pro-image (Nano Banana Pro), a strong general choice — leave it off unless you want one of the specifics below. gemini-3.1-flash-image (N |
| background | no | Image only, and only honoured by gpt-image-2.5-flare, gpt-image-2.5-sunburst, gpt-image-1 and gpt-image-1.5 — every other model is always opaque and ignores this. Pass false for a cut-out wi | |
| aspect_ratio | string | no | Image only. Overrides the ratio inferred from width/height. Leave it off and the box decides, which is usually what you want — set it when the box is a placeholder and you know the shape you need. Sti |
| base_component_id | string | no | Animation only. Reuse a saved animation component as the starting point (from find(type='element_components')). To re-skin its tunable parameters, set parameter_values via update_elements after it ren |
| voiceover_text | string | no | Animation only. Paces the motion to the spoken script — and as a side effect sets this clip's voiceover text and triggers speech generation for the clip. If the clip's current voiceover_text (get_clip |
| reference_image_url | string | no | Public URL of a reference image. Mutually exclusive with mcp_upload_id. |
| mcp_upload_id | string | no | mcp_upload_id from the upload flow. Resolved server-side to a presigned URL before generation. |
| animation_setting | object | no | Image only. Entry/exit animation, same shape as add_elements' type_data.animation_setting. The design guide asks AI images to enter with masked_reveal or a slow fade, so set it here rather than foll |
Analyze 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}. ⚠ MILLISECONDS here; get_clip's voiceover_words gives the same words in SECONDS as {word, start, end}. Use for caption timing, script editing, or word-level visual sync. Works on narration and on sung lyri
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mcp_upload_id | string | no | MCP upload ID from the upload_file tool. Use this OR file_url, not both. |
| file_url | string | no | Public http(s) URL to the audio. Use when the file is already accessible (e.g. find(type='music') result, Clueso CDN). Validated against private/loopback ranges. |
| mode | string | yes | Which analysis to run. |
| range_start_ms | integer | no | Start of analysis window in milliseconds. Default 0 (beginning). |
| range_end_ms | integer | no | End of analysis window in milliseconds. Default: whole file. |
| transcript_options | object | no | Options for mode='transcript'. |
| silences_options | object | no | Options for mode='silences'. |
| energy_options | object | no | Options for mode='energy'. |
Get the article content as markdown. Screenshots appear as <SCREENSHOT {id}> placeholders. Returns the markdown text and a list of screenshot IDs.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | Project ID |
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 markdown defines final order. Get the current article first with get_article, modify the markdown, then call this.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | Project ID |
| markdown | string | yes | Updated article content as markdown with <SCREENSHOT {id}> placeholders |
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 the project's base video, OR pass mcp_upload_id (from the upload tool) to attach an uploaded image. One of the two is required. - kind="gif": pass timestamp (start) and duration (seconds). Capt
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | yes | 'image' or 'gif'. |
| project_id | string | yes | Project ID. |
| timestamp | number | no | kind='image': capture frame at this timestamp (seconds). kind='gif': GIF start time. |
| duration | number | no | kind='gif' only: GIF duration in seconds. |
| mcp_upload_id | string | no | kind='image' only: attach an uploaded image (mcp_upload_id from the upload tool) instead of capturing from video. |
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 fetch the current details without mutating. To DELETE an article image/GIF: call update_article with markdown that omits the <SCREENSHOT id> reference. Unreferenced media is pruned server-side on sa
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | Project ID. |
| screenshot_id | string | yes | Screenshot ID (from get_article). |
| zoom_factor | number | no | Zoom magnification (1.0 = no zoom). |
| crop | object | no | Crop data: { position: [x,y], size: [w,h] } in fractional coords. |
| shapes | array | no | Array of shape objects for annotations. |
| render | boolean | no | If true (and no other updates supplied), returns current details and a PNG preview without mutating. |
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-readable folder categories: design/ (colors, typography, backgrounds, animation), rules/ (composition, voiceover, editing), screenshots/ (rendered clip previews). See the "Creating Clueprints" section in t
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Name of the clueprint |
| description | string | no | Description of what this clueprint does |
| visibility | string | yes | 'private' = only you, 'workspace' = everyone in your workspace |
| source_guide_ids | array | no | IDs of existing projects to extract template data from |
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 tree (path, mime_type, and size per entry). Call this first when exploring an unfamiliar clueprint. - include="files": the contents of the files listed in file_paths (no metadata — call include='tr
| Parameter | Type | Required | Notes |
|---|---|---|---|
| clueprint_id | string | yes | ID of the clueprint. |
| include | string | no | What to return: 'metadata' | 'tree' | 'files' | 'all'. Defaults to 'tree'. |
| file_paths | array | no | include='files' only: relative paths to read (e.g. ['design/colors.md', 'rules/voice.md']). Ignored for other modes. |
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 change. Pass at least one to update metadata. files is a list of file mutations: - Write text: { path, content } - Write binary: { path, content, encoding: "base64" } - Write from URL: `{ path, sour
| Parameter | Type | Required | Notes |
|---|---|---|---|
| clueprint_id | string | yes | ID of the clueprint to update. |
| name | string | no | New name. |
| description | string | no | New description. |
| tags | array | no | New tags (replaces existing). |
| visibility | string | no | New visibility. |
| thumbnail_path | string | no | Relative path of a screenshot in the clueprint to use as thumbnail (e.g. 'screenshots/title-slide.png'). |
| files | array | no | File mutations — writes and deletes. Empty/omitted for metadata-only updates. |
Set 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 clueprint source data), or to switch all clips to a specific voice in one call. When the user names specific clips, pass their ids in clip_ids so the other clips keep their voice. The voice is looked up
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | The project (guide) ID |
| voice_name | string | yes | Voice name as stored in the voices table (e.g. 'Alex', 'Sofia') |
| voice_engine | string | yes | Voice engine — 'eleven', 'cartesia', 'google', etc. |
| voice_version | string | no | ElevenLabs voice generation. Leave unset (latest). Use 'legacy' ONLY when the user explicitly asks for the legacy/older voice generation; never choose it yourself. Ignored for non-ElevenLabs voices. |
| clip_ids | array | no | Clip ids to change the voice on. Omit to change EVERY clip in the project. |
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 optional timestamp inside that clip. Pass parent_comment_id to REPLY to an existing comment rather than open a new thread. Read what is already there with get_comments first: answering a reviewer in th
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | The project (guide) ID |
| comment_text | string | yes | Comment text to post |
| clip_id | string | no | Optional clip ID to pin the comment to. Omit for a project-level comment. |
| clip_timestamp | number | no | Optional timestamp within the clip (seconds). Only used when clip_id is provided. |
| parent_comment_id | string | no | Reply to this comment instead of starting a new thread. Take the id from get_comments. Replying is how you answer feedback you have acted on — the clip pin and timestamp come from the parent, so leave |
Read 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 clip and a moment inside it. Read them before an editing pass so you act on what was actually asked for, and read them again after a build if a reviewer has seen it. Threads come back nested: each top-
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_id | string | yes | The project (guide) ID |
| clip_id | string | no | Only comments pinned to this clip. Omit for every comment on the project, project-level ones included. |
| include_resolved | boolean | no | Include threads already marked resolved (default false). Turn it on to see history; leave it off to see the work outstanding. |
Records 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 creates are placeholders; they become video clips when processing completes, so removing one loses that scene. Article placeholders are also inserted automatically into plainDoc. Check how the recording i
| Parameter | Type | Required | Notes |
|---|---|---|---|
| guide_id | string | yes | Target guide ID |
| chat_id | string | yes | Conversation context ID |
| preceding_clip_id | string | yes | Clip ID after which to insert the new clip |
| custom_instructions | string | no | Optional per-recording instructions (e.g. "select project X", "add rectangle 200x100"). Not related to mocking. |
| language | string | no | Language code for the recording (default: en) |
| voice_version | string | no | ElevenLabs voice generation for every scene's voice. Leave unset: a named voice uses latest and the workspace default keeps its own saved version. Use 'legacy' ONLY when the user explicitly asks for t |
| exact_video_script | boolean | no | Legacy flag — prefer video_script_mode instead. Set to true when the video narration must be used exactly as written — the agent that does the recording will not reword, rephrase, or rewrite video_scr |
| exact_article_script | boolean | no | Legacy flag — prefer article_script_mode instead. Set to true when the article must be used exactly as written — the agent that does the recording will not reword, rephrase, or rewrite article_script |
| video_script_mode | string | no | How the narration is treated. 'exact': the user's narration is final and is read word for word; steps the script does not mention play silently. 'near_exact': keep the user's narration word for word, |
| article_script_mode | string | no | 'exact': the article is used word for word. 'rewrite': the article may be reworded to match the recording. Overrides exact_article_script when both are set. |
| scenes | array | yes | REQUIRED — the recording to make, as a list of scenes. This is the ONLY way to specify what to record. A normal single recording is exactly ONE scene; a code-wizard multi-scene / marketing video is N |
| video_intention | string | no | One-line intent shared across all scenes of a multi-scene recording (e.g. "punchy 30s launch teaser for feature X"). Ignored for single-scene recordings. |
| recording_session_id | string | no | EDIT an existing recording instead of shooting a new one. Pass the recording_session_id from the record_screen that made it, or read it off get_clip. The recorder restores that take's code, notes and |
| target | string | no | Which recorder to use when the workspace has both Code record and Browser record: 'code' for a mock of the product, 'browser' for the real product — from the user's request, or their answer when it di |
| edit_scene_ids | array | no | The clip id(s) this edit replaces. Only used when recording_session_id is set; scenes you do not name are not re-filmed. Set preceding_clip_id to the clip you are replacing — an edit naming a clip tha |
Write 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 next to the tools instead of across the conversation. Use it whenever code says the thing more directly than a sequence of separate calls would, which is often. COMPUTE, don't hand-write. Anything you
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | yes | JavaScript. Tools are globals called synchronously — no async/await, no imports, no network or filesystem. return a value to hand it back. |
| dry_run | boolean | no | Read-only tools still run; anything that writes is recorded and skipped. Use it to check what a script would do before it does it. |
| wait_seconds | integer | no | How long to hold this call open waiting for the script, default 50s. If it finishes in time you get the result here; if not you get a job_id to poll with get_script_job, and the script keeps running e |
| idempotency_key | string | no | Pass a unique string so a retry cannot run the same build twice. If a script with this key already ran in this workspace, its job is returned and nothing executes again — including when that run FAILE |
| timeout_seconds | integer | no | Wall-clock budget for the SCRIPT — separate from wait_seconds, which is only how long this call stays open. By default a script gets 50s while you are waiting on it, and is raised to 15 minutes the mo |
Fetch 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. Returns { job_id, status, result?, error? }. status is processing, completed or failed; result carries the same { ok, result, stdout, ops } the inline reply would have. The script runs to completio
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | From the run_script reply. |
| wait_seconds | integer | no | How long to wait for completion before answering, default 50s. Pass 0 for an immediate status check. |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Clueso or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither: the repository linked on this page is where this record was collected from, not a copy of what the address serves, so it is not graded in its place. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.0.2.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Clueso can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.