Atlas / MCP servers / hraness / slopcamera

slopcameraBLOCK

mcp/hraness/slopcamera

Slopcamera lets Codex, Claude Code, and other coding agents make images, diagrams, animation, 3D scenes, Blender films, and edited video from source files they can keep revising.

Verdict
BLOCK
Grade
F
Trust score
38 /100
Exposed tools
19 17r · 2w · 0d
Transport
streamable-http
License
MIT
Stars
7
01

Overview

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

📸 SlopCamera is a media studio for your coding agent. Codex, Claude Code, and other agents make images, diagrams, animation, 3D scenes, and edited video from source files, so a change is a new render and the next version starts from the last one. Ask your agent to set it up: https://slopcamera.com — Ben Guo

[](https://slopcamera.com/docs/how-to/remix-the-showcase#rain-bottled)

A multimedia studio for your coding agent. SlopCamera lets your coding agent make images, diagrams, animation, 3D scenes, and video from source files it can keep revising. It is a free, open-source Bun CLI, TypeScript SDK, Agent Skill, and MCP server for Codex, Claude Code, and other coding agents.

Your agent writes the scene, diagram, or edit as a short source file. SlopCamera checks it, renders it with the right engine on your machine, and keeps the inputs, so the next change is an edit to that file and a new render. Combine authored scenes, generated media, and your own footage in one project.

Install · Techniques · First diagram · Docs · Examples

What you can make with SlopCamera

  • Films and animation. Author motion graphics, illustrated scenes, and

native Blender shots. Control camera, materials, lighting, and timing.

  • Diagrams as code. Write diagram JSON and get an editable tldraw file,

light and dark SVGs, and PNGs after a strict check.

  • Visual explanations. Make educational films with Manim, editable

labels, mathematics, narration, and graphics.

  • Images and designs. Create illustrations, trace raster artwork to SVG,

or revise a parametric architectural mode

Read from source at commit 70223b535b34OBSERVED · 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. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add slopcamera-scene --env AI_GATEWAY_API_KEY=${AI_GATEWAY_API_KEY} --env CURRENT_AUTHORITY_SHA=${CURRENT_AUTHORITY_SHA} --env GH_TOKEN=${GH_TOKEN} --env SECRET=${SECRET} -- npx -y @hraness/[email protected]
claude-desktop
{
  "mcpServers": {
    "slopcamera-scene": {
      "command": "npx",
      "args": [
        "-y",
        "@hraness/[email protected]"
      ],
      "env": {
        "AI_GATEWAY_API_KEY": "${AI_GATEWAY_API_KEY}",
        "CURRENT_AUTHORITY_SHA": "${CURRENT_AUTHORITY_SHA}",
        "GH_TOKEN": "${GH_TOKEN}",
        "SECRET": "${SECRET}"
      }
    }
  }
}
03

Exposed tools (19)

17 read · 2 write · 0 destructive.

ToolRiskDescription
WanreadFixture
audit_scenereadSample one root-relative spatial scene against a camera and report per-entity geometric coverage, visibility findings, and bounds gaps. Optional asset_bounds accepts a Record<assetId,{min,max}> map, a slopcamera.spatial-asset-admission document, a {manifest,facts} pair, or an array of those.
check_diagramreadParse and lint one root-relative Slopcamera diagram source without changing files. Uses only built-in icons and themes.
check_scenereadParse and validate one root-relative Slopcamera spatial scene JSON source without changing files.
check_scene_directionreadValidate one authored direction document against one root-relative spatial scene: stale project digests, unresolved entity references, and intervals outside scene duration report as errors without compiling or changing files.
check_scene_effectsreadValidate one slopcamera.spatial-render-effects document or {document, documentSha256} binding against one scene: scene-digest bindings, entity and asset closure, and nested plan/particle/simulation digests report as findings before any host work.
compose_iconreadParse and solve one root-relative vector icon scene, collection, construction program, or recipe, and report its digests, geometry, and diagnostics. Optionally writes the canonical solved document. Local and deterministic; no model or network.
compose_soundtrackreadParse and verify one root-relative loop or song from compose text, song text, score JSON, or a Standard MIDI file, and report its canonical digest, tempo, meter, and length. Optionally writes the score document. Renders no audio; no network.
derive_soundtrack_gridreadDerive bpm, beatOffsetUs, beatsPerBar, and section cue times from one root-relative loop, song, or Standard MIDI file, in the music timing HTML scene requests accept. Optionally writes the grid. Renders no audio; no network.
diff_scenesreadCompare two root-relative spatial scene JSON sources and report added, removed, and changed collection entries without changing files.
evaluate_scenereadEvaluate one root-relative spatial scene at one camera and integer microsecond time into an immutable snapshot without changing files.
execute_slopcamerawriteExecute one exact operation code with typed JSON input. Never accepts or evaluates source code. Local paths remain confined to the configured workspace root.
inspect_scenereadSnapshot one root-relative spatial scene
plan_scene_directionreadCompile one authored direction document into a deterministic, unverified proposal document \u2014 performance actions, camera rigs, shots and looks bound to the actual scene digest. Proposals are advisory only; nothing is applied to the scene.
plan_scene_effectsreadAssemble a canonical {document, documentSha256} render-effects binding for one scene from a draft JSON naming renderPlan, particleSystems and simulationBakes. Entity and asset closure rejects before the document is formed; the scene digest binds here, never by caller assertion.
plan_scene_gallerywriteCompile a bounded set of single-axis direction variants into separate content-addressed candidate compilations plus a preview-reel plan. The planner never selects or promotes a candidate.
render_diagramreadRender one root-relative Slopcamera diagram source with built-in icons and themes, overwriting its paired .tldr, light/dark SVG, and light/dark PNG artifacts.
render_iconreadDraw one root-relative vector icon scene or construction program to an inert SVG, or replay a recipe and require its recorded digests. Optionally writes a replayable recipe. Local and deterministic; no model or network.
search_slopcamerareadSearch the fixed semantic Slopcamera operation registry by bounded text. This never executes code or changes files.
04

Trust audit

BLOCKgrade F · trust 38/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 codeWARN
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

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

Findings (25)

HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
.agents/skills/cinematic-pack-authoring/SKILL.md:102
- Planning and graph compilation execute no operations, read no credentials,
Why it matters. asks the agent to read credentials
MEDIUMInventory / provenance · inv.binary · CWE-1104
apps/desktop/dist/cli/NebulaSans-Bold-26se8aek.otf
NebulaSans-Bold-26se8aek.otf
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
apps/desktop/dist/cli/NebulaSans-Book-8cenzchw.otf
NebulaSans-Book-8cenzchw.otf
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
dist/NebulaSans-Bold-26se8aek.otf
NebulaSans-Bold-26se8aek.otf
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
dist/NebulaSans-Book-8cenzchw.otf
NebulaSans-Book-8cenzchw.otf
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
apps/web/media/production-pipeline-themed-tldr-3bc2fb208901.tldr:103
"src": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBjb2xvcj0iIzIwMmIzMiI+PHBhdGggZD0iTTggNi
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
apps/web/media/production-pipeline-themed-tldr-3bc2fb208901.tldr:239
"src": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBjb2xvcj0iIzIwMmIzMiI+PHBhdGggZD0iTTEyID
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
apps/web/media/production-pipeline-themed-tldr-3bc2fb208901.tldr:375
"src": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBjb2xvcj0iIzIwMmIzMiI+PHBhdGggZD0iTTUgNG
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
apps/web/media/production-pipeline-themed-tldr-3bc2fb208901.tldr:511
"src": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBjb2xvcj0iIzIwMmIzMiI+PHBhdGggZD0iTTIgMT
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
apps/web/media/production-pipeline-themed-tldr-3bc2fb208901.tldr:647
"src": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBjb2xvcj0iIzI1NDQyNSI+PHBhdGggZD0iTTEyID
MEDIUMObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
scripts/validate-schema.ts:106
{ text: "Aβ*56 assembly", fontSize: 20, weight: 500 },
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
apps/desktop/application/operations/gateway/gateway.test.ts:345
openai: { apiKey: "must-not-cross-the-operation-boundary" },
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
apps/desktop/application/operations/gateway/gateway.test.ts:352
apiKey: "must-not-cross-the-operation-boundary",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
apps/desktop/cli/gateway-application-port.test.ts:707
openai: { apiKey: "raw-secret-never-persist" },
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
apps/desktop/cli/gateway-credential.test.ts:9
const API_KEY = "vck_test_gateway_key_1234567890";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
apps/desktop/cli/gateway-media-service.test.ts:35
const API_KEY = "vck_gateway_secret_that_must_never_leak_12345";
LOWInventory / provenance · inv.binary · CWE-1104
examples/showcase/native/cad-exploded/assets/baseline.glb
baseline.glb
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
apps/desktop/html-overlay/rigged-glb.test.ts:68
const factory = new Function("SlopcameraOverlay", `${source}\nreturn createRig;`)({ asset }) as (three: unknown) => Promise<Rig>;
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
apps/desktop/html-overlay/spatial-splat.test.ts:77
const applyGuard = new Function("spark", guardSource!);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
apps/desktop/html-overlay/spatial-splat.test.ts:85
const evaluate = new Function("rgba", "vec3", "max", "srgbToLinear", `return ${expression};`);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
apps/web/src/copy-command.test.ts:63
execCommand(action: string) { expect(action).toBe("copy"); execCalls++; return exec() },
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
examples/showcase/native/imported-model-study/check-poses.py:6
namespace={};exec(compile(ast.Module(body=[fn],type_ignores=[]),"<extracted-guard>","exec"),namespace)
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
.github/workflows/release.yml:594
const shasum = createHash("sha1").update(archiveBytes).digest("hex");
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
apps/desktop/studio/assets/poly-haven.test.ts:13
const md5 = (bytes: Uint8Array): string => createHash("md5").update(bytes).digest("hex");
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
examples/showcase/spatial/prepare-world.py:43
git_blob = hashlib.sha1(f"blob {len(source)}\0".encode() + source).hexdigest()

Gates applied: no_behavioural_pass.

Audited 2026-10-10 · audit v0.4.1 · source sha 70223b535b34full audit observations/trust-audit/mcp-server/hraness__slopcamera.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-1070223b535b34BLOCKF38first audit
06

Questions

What is the slopcamera MCP server?

Slopcamera lets Codex, Claude Code, and other coding agents make images, diagrams, animation, 3D scenes, Blender films, and edited video from source files they can keep revising.

What tools does slopcamera expose?

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

Is slopcamera safe to connect to an agent?

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

What credentials does slopcamera need?

It reads AI_GATEWAY_API_KEY, CURRENT_AUTHORITY_SHA, GH_TOKEN, SECRET, SLOPCAMERA_BROWSER_SENTINEL_SECRET, VERCEL_OIDC_TOKEN and WORLDLABS_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does slopcamera run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as @hraness/slopcamera-scene at 1.0.0.

How current is this page?

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

Advertisement