Make videos and docs with your AI agent — describe what you need, every output stays editable.
Do not connect
A critical issue was found. Do not connect this server as-is.
Scanned 8 days ago Due for re-check
A server can change after it's graded. Re-run the automated scan to refresh this report.
This grade is deterministic and reproducible: the same server surface always yields the same grade under a given algorithm version. It is a real automated assessment computed by the MCPGrade engine from what the probe actually observed — not a fabricated or opinion score. It is not a manual human pentest, so it can miss context-specific risks.
Every signal below was measured directly by the automated probe. The grade is derived only from evidence like this — nothing is assumed.
The clueso-connect MCP server exposes 40 tools, focused primarily on filesystem, database, and AI capabilities. Its published description reads: "Make videos and docs with your AI agent — describe what you need, every output stays editable". It communicates over Streamable HTTP using the 2026-07-28 protocol revision, and does not require authorization to connect. MCPGrade currently rates clueso-connect F — a critical issue was found and the server should not be connected as-is. Its most notable findings include "Cross-tool shadowing" and "Cross-tool shadowing". This report is a deterministic, reproducible automated assessment: the same observed surface always yields the same grade under a given algorithm version, and it is refreshed as new scans arrive and free to read — but it is not a substitute for a manual human security review. Always re-check clueso-connect's advertised tools, transport security, and authorization posture before connecting an autonomous agent or sharing sensitive context with it.
Add clueso-connect to an MCP client using the endpoint below. Review the grade and findings above before granting an autonomous agent access.
MCP endpoint
https://connect.clueso.io/mcpStreamable HTTP transport. This is the MCP endpoint, not a website — paste it into your MCP client server list rather than a browser.
Captured passively during the read-only scan. Click any value to find servers that match it.
The tools this server advertises via tools/list — names, purposes, and the parameters each accepts, exactly as enumerated read-only.
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_i
Sorted worst-first. Each finding shows its severity, what it means, its OWASP MCP Top-10 mapping, and a recommended fix — the check id links to the exact methodology row that produced it.
tool: create_project
A tool description tries to alter the model’s use of another tool.
e a folder (use find(type='folders') to find folder IDs) and set a dRecommendationDescriptions must describe only their own tool.
tool: duplicate_project
A tool description tries to alter the model’s use of another tool.
RecommendationDescriptions must describe only their own tool.
tool: export_project
A tool description tries to alter the model’s use of another tool.
d. The user can find the rendered video in the Exports tab in the edRecommendationDescriptions must describe only their own tool.
tool: find
A tool description tries to alter the model’s use of another tool.
ool (set_voice, update_clips background, generate_media style_id, add_audioRecommendationDescriptions must describe only their own tool.
tool: switch_workspace
A tool description tries to alter the model’s use of another tool.
is session. Use find(type='workspaces') to see available options.RecommendationDescriptions must describe only their own tool.
tool: get_project
A tool description tries to alter the model’s use of another tool.
ame wire shape `add_audio` accepts (id, src, name, source_duration, guideRecommendationDescriptions must describe only their own tool.
tool: get_clip
A tool description tries to alter the model’s use of another tool.
sibling of the update_clips `transition` arg; null if none) and `voiceover_RecommendationDescriptions must describe only their own tool.
tool: update_clips
A tool description tries to alter the model’s use of another tool.
ips, add_audio, update_project). When adding audio + resizing clips, run updatRecommendationDescriptions must describe only their own tool.
tool: add_clips
A tool description tries to alter the model’s use of another tool.
}, ...]`. Note: create_project already creates clip 0; calling with N blank enRecommendationDescriptions must describe only their own tool.
tool: get_element_schema
A tool description tries to alter the model’s use of another tool.
all this before add_elements / update_elements when you don't already know tRecommendationDescriptions must describe only their own tool.
tool: add_elements
A tool description tries to alter the model’s use of another tool.
ng: an item may pass `component_id` INSTEAD of element_type/type_data to iRecommendationDescriptions must describe only their own tool.
tool: update_elements
A tool description tries to alter the model’s use of another tool.
RecommendationDescriptions must describe only their own tool.
tool: remove_elements
A tool description tries to alter the model’s use of another tool.
ops, add_audio, update_project). To remove an audio track (not an element), usRecommendationDescriptions must describe only their own tool.
tool: reorder_elements
A tool description tries to alter the model’s use of another tool.
urrent list via get_clip.RecommendationDescriptions must describe only their own tool.
tool: remove_from_project
A tool description tries to alter the model’s use of another tool.
ements, same as remove_elements. target='audio' is a whole-project mutation — sRecommendationDescriptions must describe only their own tool.
tool: add_audio
A tool description tries to alter the model’s use of another tool.
src.) Concurrency: whole-project mutation (conflict domain: the entire pRecommendationDescriptions must describe only their own tool.
tool: update_audio
A tool description tries to alter the model’s use of another tool.
ing tracks via `get_project.audio_tracks` — the per-entry shape there matchRecommendationDescriptions must describe only their own tool.
tool: voiceover_batch
A tool description tries to alter the model’s use of another tool.
ops, add_audio, update_project).RecommendationDescriptions must describe only their own tool.
tool: auto_sync
A tool description tries to alter the model’s use of another tool.
nds later. Poll get_clip if you need to verify. Capacity: capped at 3 cRecommendationDescriptions must describe only their own tool.
tool: add_sync_point
A tool description tries to alter the model’s use of another tool.
the demo"). - `auto_sync` ran but missed a step you care about. How matRecommendationDescriptions must describe only their own tool.
tool: upload_file
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
token, and that token covers every file the user drops on the page. RRecommendationRemove side-channel parameters; constrain tool inputs.
tool: upload_file
Tools that execute commands / write files / make arbitrary requests are exposed without annotations or guards.
r the user at a shell prompt) runs the curl. Prefer this whenever theRecommendationAnnotate destructive tools and require human approval.
tool: upload_file
A tool description tries to alter the model’s use of another tool.
er all clips) - add_clips(kind='video') (video or audio → sequential clipRecommendationDescriptions must describe only their own tool.
tool: upload_file
One tool reads private data, ingests untrusted content, AND can send data outbound — the three preconditions for autonomous data theft in a single call. A prompt injection reaching this tool can exfiltrate secrets with no further step.
already on the open web — no user interaction needed. 3. **request_hostRecommendationSplit the capabilities across separate least-privilege tools so no single tool can read secrets, read untrusted input, and reach the network at once.
tool: check_uploads
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
uploading; the token covers all files they dropped on the page. {"tyRecommendationRemove side-channel parameters; constrain tool inputs.
tool: check_uploads
A tool description tries to alter the model’s use of another tool.
propriate tool (add_clips, add_article_media, etc.). Call this once afterRecommendationDescriptions must describe only their own tool.
tool: generate_media
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
parameter "reference_image_url"RecommendationRemove side-channel parameters; constrain tool inputs.
tool: generate_media
A tool description tries to alter the model’s use of another tool.
style_id` (from find type='image_gen_style_packs'), `reference_imageRecommendationDescriptions must describe only their own tool.
tool: estimate_duration
A tool description tries to alter the model’s use of another tool.
rder, ready for add_clips.RecommendationDescriptions must describe only their own tool.
tool: analyze_audio
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
parameter "file_url"RecommendationRemove side-channel parameters; constrain tool inputs.
tool: analyze_audio
A tool description tries to alter the model’s use of another tool.
lic URL, e.g. a find(type='music') result or Clueso CDN file). OptioRecommendationDescriptions must describe only their own tool.
tool: update_article
A tool description tries to alter the model’s use of another tool.
icle first with get_article, modify the markdown, then call this.RecommendationDescriptions must describe only their own tool.
tool: add_article_media
A tool description tries to alter the model’s use of another tool.
RecommendationDescriptions must describe only their own tool.
tool: update_article_media
A tool description tries to alter the model’s use of another tool.
mage/GIF: call `update_article` with markdown that omits the `<SCREENSHOT id>`RecommendationDescriptions must describe only their own tool.
tool: update_clueprint
Tools that execute commands / write files / make arbitrary requests are exposed without annotations or guards.
th save=true) - Delete: `{ path, content: null }` You can mix writes and deletRecommendationAnnotate destructive tools and require human approval.
tool: update_clueprint
A tool description tries to alter the model’s use of another tool.
RecommendationDescriptions must describe only their own tool.
tool: record_screen
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
rkspace sign-in credentials for the product being recorded. Workspaces withRecommendationRemove side-channel parameters; constrain tool inputs.
tool: record_screen
A tool description tries to alter the model’s use of another tool.
load_file, then add_clips(kind='video')) rather than a failure.RecommendationDescriptions must describe only their own tool.
tool: (server instructions)
A tool description tries to alter the model’s use of another tool.
otherwise call `get_design_guide` before composing. Before creating anything: `RecommendationDescriptions must describe only their own tool.
The server accepts tool enumeration (and likely invocation) with no authentication.
RecommendationRequire OAuth 2.1 authorization for any server exposing non-public tools.
tool: export_project
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: find
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: update_clips
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: remove_clip
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: update_elements
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: remove_elements
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: remove_from_project
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: voiceover_batch
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: auto_sync
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: upload_file
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: upload_file
One tool both accesses the filesystem and reaches the network. Combining two capability classes in a single tool widens its blast radius and is the substrate for confused-deputy and exfiltration abuse.
,"description":"List of file names the user will upload (for hosted mode). SRecommendationSeparate filesystem and network capabilities into distinct, independently-scoped tools.
tool: add_article_media
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: update_clueprint
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: update_clueprint
One tool both accesses the filesystem and reaches the network. Combining two capability classes in a single tool widens its blast radius and is the substrate for confused-deputy and exfiltration abuse.
. `files` is a list of file mutations: - Write text: `{ path, content }` -RecommendationSeparate filesystem and network capabilities into distinct, independently-scoped tools.
tool: update_clueprint
A filesystem tool exposes a path parameter that is a free-form string with no pattern/enum/format constraint, so it accepts absolute paths and "../" traversal. A tool that constrains its path (a rooted `pattern` or an `enum`) does not fire.
unconstrained path parameter "thumbnail_path"RecommendationConstrain the path parameter to a rooted allow-list and reject absolute/traversal paths server-side.
tool: record_screen
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: find
An unusually long description is a common injection-padding tactic.
description length 3797 charsRecommendationKeep descriptions concise.
tool: get_clip
An unusually long description is a common injection-padding tactic.
description length 2816 charsRecommendationKeep descriptions concise.
tool: update_clips
An unusually long description is a common injection-padding tactic.
description length 2057 charsRecommendationKeep descriptions concise.
tool: add_elements
An unusually long description is a common injection-padding tactic.
description length 3102 charsRecommendationKeep descriptions concise.
tool: update_elements
An unusually long description is a common injection-padding tactic.
description length 2007 charsRecommendationKeep descriptions concise.
tool: upload_file
An unusually long description is a common injection-padding tactic.
description length 2340 charsRecommendationKeep descriptions concise.
Vantaj uptime monitoring via MCP — manage monitors, heartbeats, incidents, and status pages.
Unified gateway to Algeria's TKAWEN ecosystem: commerce, certification, and AI tools.
Provides access to the Cohereon Doctrine AI safety framework with governance components, tiered access, and agent onboarding.
Agentic rails for complex workflows with receipts, fees, and MCP tool access.
Structural TC39 spec lookup for ECMA-262 and ECMA-402 in AI agents, SHA-pinned and offline-first.
Structural TC39 spec lookup for ECMA-262 and ECMA-402 in AI agents, SHA-pinned and offline-first.
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. Defaul
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 • background
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 WH
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_i
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 hig
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-project
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_pro
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. It
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_d
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 ad
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
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) - "generat
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. Asyn
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 bu
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, Claude
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-readab
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 change
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 c
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 optiona
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 cl