Atlas / MCP servers / weftcut / WeftCut

WeftCutBLOCK

mcp/weftcut/weftcut

Free, open-source AI video editor for macOS, Windows and Linux — drive the whole timeline from any MCP client.

Verdict
BLOCK
Grade
F
Trust score
52 /100
Exposed tools
9 7r · 2w · 0d
Transport
stdio · streamable-http
License
MIT
Stars
185
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

WeftCut

The video editor your AI agent can drive like you do. Point Codex, Claude, or any MCP client at a real desktop NLE — and watch every edit land on your timeline while it plays. Code renders as video, so your agent can build editable clips.

[!NOTE] WeftCut is still under active development, so some features and UI/UX may change before v1.0.0. Join us to improve the project!
Read from source at commit 0d92bc813981OBSERVED · 2026-10-10
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code
claude mcp add poc-shared-texture-app -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "poc-shared-texture-app": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ]
    }
  }
}
03

Exposed tools (9)

7 read · 2 write · 0 destructive.

ToolRiskDescription
CompositionreadCanvas size, fps, sample rate, color space, background.
CompositionsreadEvery composition — the root and each Group — with id, label, duration_us and ref_count (how many CompositionRef layers place it). project://tracks?composition=<id> and project://markers?composition=<id> read one of them; unscoped they read the root.
HistoryreadRecent operations and named checkpoints (no snapshots).
MarkersreadTimeline markers, sorted by t_us.
TracksreadTracks with layer envelopes. Read project://layers/{id} for full layer detail.
add_markerwriteAdd a marker.
add_trackwriteRUST DESC
launch_weftcutreadLaunch the WeftCut desktop app (opens its GUI window on the user’s machine) and
weftcut_statusreadReport whether the WeftCut desktop app is currently running and reachable, and which
04

Trust audit

BLOCKgrade F · trust 52/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (2 observation(s))
Shell
declared (4 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (25)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
apps/desktop/native/eval/src/lib.rs:828
eval(kfs, Extrapolation::HOLD, t_us, default)
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
apps/desktop/native/eval/src/lib.rs:834
eval(kfs, ex, t_us, default)
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
apps/desktop/native/eval/src/lib.rs:1188
eval(&kfs, Extrapolation::HOLD, t, 0.0),
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
apps/desktop/native/eval/src/lib.rs:1325
assert_eq!(eval(&kfs, e, 2_500_000, black), white);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
MEDIUMInventory / provenance · inv.binary · CWE-1104
apps/desktop/motif-templates/three-model/basis/basis_transcoder.wasm
basis_transcoder.wasm
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
apps/desktop/src/cli/main.ts:104
console.log(`token:     ${auth.token}`)
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
apps/desktop/src/cli/paths.ts:92
return `http://127.0.0.1:${auth.port}/mcp`
LOWInventory / provenance · inv.binary · CWE-1104
apps/desktop/fixtures/media/tiny.mkv
tiny.mkv
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
apps/desktop/fixtures/motif-codecs/box.bin
box.bin
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
apps/desktop/fixtures/motif-codecs/etc1s.ktx2
etc1s.ktx2
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
apps/desktop/fixtures/motif-codecs/uastc.ktx2
uastc.ktx2
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.hidden_file · CWE-1104
.git-blame-ignore-revs
.git-blame-ignore-revs
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.mailmap
.mailmap
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
apps/desktop/e2e/electron/motif-codecs.spec.ts:151
let evalBlocked = false; try {new Function('return 1')();} catch {evalBlocked = true;}
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
apps/desktop/scripts/build-basis-transcoder.mjs:29
const gitHash = createHash('sha1').update(`blob ${data.length}\0`).update(data).digest('hex');
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
poc/motif-frame-cache/bake.cjs:39
const hashOf = s => createHash('md5').update(s).digest('hex'); // cache address only
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/desktop/e2e/electron/agent-panel.spec.ts:5
import type { AgentActivitySnapshot } from '../../src/shared/agent-activity'
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/desktop/e2e/electron/composition-scope.spec.ts:35
const FIXTURE = path.resolve(__dirname, '../../fixtures/projects/v1.json')
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/desktop/e2e/electron/determinism.spec.ts:39
const outDir = path.join(__dirname, '../../determinism-artifacts', process.platform)
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/desktop/e2e/electron/diagnostic-report.spec.ts:20
const version = JSON.parse(fs.readFileSync(new URL('../../package.json', import.meta.url), 'utf8')).version
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/desktop/e2e/electron/dragdrop.spec.ts:11
const FALLBACK = path.resolve(__dirname, '../../e2e/fixtures/media/test_1080p_30fps.mp4')
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
apps/desktop/e2e/electron/model-settings.spec.ts:128
const url = `http://127.0.0.1:${address.port}/v1/chat/completions`;
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
apps/desktop/e2e/electron/motif-codecs.spec.ts:164
w.postMessage({local:location.origin+'/local.txt',urls:['https://example.invalid/asset','http://127.0.0.1:40000/asset','motif://countdown/index.html','file:///not-a-motif','weftcut-media://not-a-motif
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
apps/desktop/e2e/electron/motif-local-assets.spec.ts:131
const urls = ['https://example.invalid/model.glb', 'http://127.0.0.1:40000/model.glb',
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
apps/desktop/src/cli/shim.test.ts:139
expect(msg).toContain('http://127.0.0.1:4711/mcp')

Gates applied: no_behavioural_pass.

Audited 2026-10-10 · audit v0.4.1 · source sha 0d92bc813981full audit observations/trust-audit/mcp-server/weftcut__weftcut.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-100d92bc813981BLOCKF52first audit
06

Questions

What is the WeftCut MCP server?

Free, open-source AI video editor for macOS, Windows and Linux — drive the whole timeline from any MCP client.

What tools does WeftCut expose?

9 in total: 7 read-only, 2 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is WeftCut safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (52/100) and found 4 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does WeftCut need?

No credential environment variables were found in its source, so it appears to need none.

How does WeftCut run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as poc-shared-texture-app at 0.0.0.

How current is this page?

The grade is for one exact copy of the source (0d92bc813981), read on 2026-10-10. The repository is watched and re-audited when it changes.

Advertisement