{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T16:25:10.473Z","url":"https://verifymcp.io/servers/nobanks-shotcut-mcp/shotcut-mcp","markdownUrl":"https://verifymcp.io/servers/nobanks-shotcut-mcp/shotcut-mcp.md","server":{"slug":"nobanks-shotcut-mcp","name":"Shotcut MCP","registryName":"io.github.NoBanks/shotcut-mcp","description":"Edit video through Shotcut's MLT engine: timelines, cuts, filters, titles, crossfades and renders.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"shotcut-mcp","type":"pypi","identifier":"shotcut-mcp","withdrawn":false,"url":"https://verifymcp.io/servers/nobanks-shotcut-mcp/shotcut-mcp","version":"0.2.1","transport":"stdio","scoredAt":"2026-11-05T08:23:29.062Z"},"score":{"total":73,"tier":"medium","status":"scored","weekDelta":0,"history":[{"date":"2026-11-05","total":73},{"date":"2026-11-04","total":73},{"date":"2026-11-03","total":73},{"date":"2026-11-02","total":58},{"date":"2026-11-01","total":58},{"date":"2026-10-31","total":58},{"date":"2026-10-30","total":58},{"date":"2026-10-29","total":73}]},"categories":[{"name":"Supply Chain Security","score":100,"verdict":"pass","reasons":["No malware found by supply-chain analysis.","No known CVEs affecting this package version or its production dependencies.","Runs setuptools.build_meta at install time, a recognised build step with no custom scripting around it.","0 of 28 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.allowlisted","args":{"tool":"setuptools.build_meta","hooks":"build_backend"}},{"code":"dephealth.assessed","args":{"deps":"28","unhealthy":"0"}}]},{"name":"Provenance & Transparency","score":97,"verdict":"fail","reasons":["Source repository is publicly reachable at the declared URL.","Cryptographically verified build provenance (signed, bound to NoBanks/shotcut-mcp).","Clear OSI-approved license (MIT).","Actively maintained (last published 6 days ago).","Disclosure check failed: no security disclosure policy was found in the source repository."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.verified","args":{"repo":"NoBanks/shotcut-mcp"}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"6"}},{"code":"disclosure.absent","args":{}}]},{"name":"Schema Quality & AI Usability","score":56,"verdict":"fail","reasons":["AI-judged instruction clarity (fair).","Tool/resource definitions use about 788 tokens (~56/item across 14 items; 14 tools + 0 resources), lean.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"fair"}},{"code":"schema.footprint_lean","args":{"avg":"56","items":"14","tools":"14","tokens":"788","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":0,"verdict":"unverified","reasons":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"codes":[{"code":"stability.insufficient_history","args":{}}]},{"name":"Tool Coverage","score":67,"verdict":"fail","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","0% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"0"}}]},{"name":"Tool Safety","score":75,"verdict":"fail","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; \"remove_clip\" implies \"remove\" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.","An AI judge read all 14 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_undeclared","args":{"pct":"0","tool":"remove_clip","verb":"remove","declared":"none","annotated":"0","destructive":"2"}},{"code":"toolsafety.manipulation_clean","args":{"units":"14","judged":"14"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28."],"codes":[{"code":"protocol.supported","args":{"latest":"2026-07-28","version":"2025-11-25"}}]}],"inconclusive":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"malware":[],"components":[{"slug":"shotcut-mcp","type":"pypi","identifier":"shotcut-mcp","withdrawn":false,"score":73,"current":true,"url":"https://verifymcp.io/servers/nobanks-shotcut-mcp/shotcut-mcp","markdownUrl":"https://verifymcp.io/servers/nobanks-shotcut-mcp/shotcut-mcp.md"}],"facts":[{"label":"Registry","value":"pypi"},{"label":"Package","value":"shotcut-mcp"},{"label":"Version","value":"0.2.1"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"create_project","title":null,"description":"Create a new empty MLT/Shotcut project. Choose width/height to match the delivery (e.g. 1080x1920 for vertical).","inputs":[{"name":"fps","type":"number","required":false,"description":null},{"name":"height","type":"integer","required":false,"description":null},{"name":"name","type":"string","required":true,"description":null},{"name":"width","type":"integer","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":68},{"name":"add_clip","title":null,"description":"Append a span of a source video to the end of the timeline. in_s/out_s are seconds in the SOURCE file. Returns the clip's producer_id.","inputs":[{"name":"clip_path","type":"string","required":true,"description":null},{"name":"in_s","type":"number","required":false,"description":null},{"name":"out_s","type":"number","required":false,"description":null},{"name":"project_name","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":72},{"name":"trim_clip","title":null,"description":"Change the source in/out points of a clip already on the timeline.","inputs":[{"name":"in_s","type":"number","required":false,"description":null},{"name":"out_s","type":"number","required":false,"description":null},{"name":"producer_id","type":"string","required":true,"description":null},{"name":"project_name","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":54},{"name":"remove_clip","title":null,"description":"Ripple-delete one clip from the timeline.","inputs":[{"name":"producer_id","type":"string","required":true,"description":null},{"name":"project_name","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":32},{"name":"move_clip","title":null,"description":"Move a clip to a new 1-based position on the timeline.","inputs":[{"name":"producer_id","type":"string","required":true,"description":null},{"name":"project_name","type":"string","required":true,"description":null},{"name":"to_position","type":"integer","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":46},{"name":"split_clip","title":null,"description":"Split a clip at_s seconds after its own in point.","inputs":[{"name":"at_s","type":"number","required":true,"description":null},{"name":"producer_id","type":"string","required":true,"description":null},{"name":"project_name","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":44},{"name":"remove_segment","title":null,"description":"Ripple-delete the timeline span between start_s and end_s.","inputs":[{"name":"end_s","type":"number","required":true,"description":null},{"name":"project_name","type":"string","required":true,"description":null},{"name":"start_s","type":"number","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":44},{"name":"append_text_overlay","title":null,"description":"Burn a text title onto the timeline between start_s and end_s (timeline seconds).","inputs":[{"name":"bg_color","type":"string","required":false,"description":null},{"name":"color","type":"string","required":false,"description":null},{"name":"end_s","type":"number","required":true,"description":null},{"name":"font_size","type":"integer","required":false,"description":null},{"name":"halign","type":"string","required":false,"description":null},{"name":"project_name","type":"string","required":true,"description":null},{"name":"start_s","type":"number","required":true,"description":null},{"name":"text","type":"string","required":true,"description":null},{"name":"valign","type":"string","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":95},{"name":"apply_filter","title":null,"description":"Apply a filter to a clip. Allowed: ['brightness', 'crop', 'fadeInAudio', 'fadeInBrightness', 'fadeOutAudio', 'fadeOutBrightness', 'volume']. Fades take params {\"duration_s\": n}; brightness takes {\"level\": 0-2}; volume takes {\"level\": dB}; crop takes {\"left\",\"right\",\"top\",\"bottom\"} in pixels.","inputs":[{"name":"filter_name","type":"string","required":true,"description":null},{"name":"params","type":"object","required":false,"description":null},{"name":"producer_id","type":"string","required":true,"description":null},{"name":"project_name","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":119},{"name":"set_transition","title":null,"description":"Crossfade (video dissolve + audio mix) between two ADJACENT clips. Shortens the timeline by duration_s.","inputs":[{"name":"duration_s","type":"number","required":true,"description":null},{"name":"from_producer_id","type":"string","required":true,"description":null},{"name":"project_name","type":"string","required":true,"description":null},{"name":"style","type":"string","required":false,"description":null},{"name":"to_producer_id","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":76},{"name":"get_timeline","title":null,"description":"Return the whole edit: every clip with producer_id, source in/out, timeline start/end, filters, transitions and titles.","inputs":[{"name":"project_name","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":42},{"name":"project_info","title":null,"description":"Return summary metadata about an existing project.","inputs":[{"name":"project_name","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":24},{"name":"render","title":null,"description":"Render a project to a video file with melt. 'mp4-project' keeps the project's own frame size.","inputs":[{"name":"output_path","type":"string","required":true,"description":null},{"name":"preset","type":"string","required":false,"description":null},{"name":"project_name","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":52},{"name":"list_projects","title":null,"description":"List all .mlt project files in the work directory.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":20}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T08:23:29.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"verified","label":"Verified","reason":"verified","reasonLabel":"Verified","discovery":"attestation_endpoint","discoveryLabel":"Registry attestation endpoint","sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[{"hook":"build_backend","tier":"allowlisted"}],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":28,"partial":false,"deprecated":null,"stale":null,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-10-29","recent":[{"id":"chg_01a1a003-7878-7834-9f9e-4d952b159251","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/nobanks-shotcut-mcp/shotcut-mcp#chg-chg_01a1a003-7878-7834-9f9e-4d952b159251"},{"id":"chg_01a1a003-7879-78bd-9b40-de3409b4a214","kind":"score.total_changed","summary":"Trust score (58 → 73)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/nobanks-shotcut-mcp/shotcut-mcp#chg-chg_01a1a003-7879-78bd-9b40-de3409b4a214"},{"id":"chg_01a18be9-290f-75f8-9a49-937486c92071","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/nobanks-shotcut-mcp/shotcut-mcp#chg-chg_01a18be9-290f-75f8-9a49-937486c92071"},{"id":"chg_01a18be9-2910-7873-976e-009d2946e314","kind":"score.total_changed","summary":"Trust score (73 → 58)","materiality":"functional","direction":"regression","scoreDelta":-15,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/nobanks-shotcut-mcp/shotcut-mcp#chg-chg_01a18be9-2910-7873-976e-009d2946e314"},{"id":"chg_01a18977-2387-726c-8b9f-131d2c73b84d","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/nobanks-shotcut-mcp/shotcut-mcp#chg-chg_01a18977-2387-726c-8b9f-131d2c73b84d"},{"id":"chg_01a188f4-759c-722b-a0a8-b5cc25d307ed","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/nobanks-shotcut-mcp/shotcut-mcp#chg-chg_01a188f4-759c-722b-a0a8-b5cc25d307ed"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/nobanks-shotcut-mcp/shotcut-mcp/changelog.json"},"links":{"html":"https://verifymcp.io/servers/nobanks-shotcut-mcp/shotcut-mcp","markdown":"https://verifymcp.io/servers/nobanks-shotcut-mcp/shotcut-mcp.md","changelogJson":"https://verifymcp.io/servers/nobanks-shotcut-mcp/shotcut-mcp/changelog.json","changelogRss":"https://verifymcp.io/servers/nobanks-shotcut-mcp/shotcut-mcp.xml","external":[{"label":"PyPI project","href":"https://pypi.org/project/shotcut-mcp/"},{"label":"Socket report","href":"https://socket.dev/pypi/package/shotcut-mcp"},{"label":"Repository","href":"https://github.com/NoBanks/shotcut-mcp"}]}}