Local MCP adapter for Manim Studio - a reproducible workspace for Manim presentation work with scene rendering, beat management, and patch proposal capabilities.
Manim Studio has 15 well-named tools with consistent verb-noun patterns (list_, get_, validate_, render_, propose_, inspect_, apply_, export_). All tools have descriptions (avg ~80 chars, within baseline 34-392). Input schemas are present with typed parameters and enums (e.g., stream: [stdout|stderr]). However, parameter descriptions are minimal (often just 1-2 phrases), output schemas are not documented, and error handling guidance is absent. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels (READ_ONLY, WRITE, IRREVERSIBLE). Composition is strong, tools chain logically (propose → inspect → validate → render → apply). Missing: output field documentation, recovery guidance for failures, and explicit constraints on string parameters (e.g., target format 'deck_id/scene_id').
Apply an approved staged patch to the canonical registered scene source.
Render every scene in a registered deck serially.
Export an all-slides deck to a supported delivery format.
Read artifact metadata for an isolated build.
Read stdout or stderr for an isolated build.
Read catalog metadata, source text, and beat metadata for a registered scene.
Inspect staged patch metadata, diff, validation, and render state.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields (e.g., build_id from render_scene). Responses are opaque dicts with unknown structure.
Parameter descriptions are minimal (1-2 phrases). 'target' appears in 8 tools but only described as 'Scene target identifier in format deck_id/scene_id' once. LLMs cannot reliably construct valid identifiers without explicit format constraints in every tool.
No tool annotations despite clear risk levels. apply_scene_patch is IRREVERSIBLE but lacks destructiveHint. render_scene is WRITE but lacks annotation. LLMs cannot distinguish safe reads from dangerous writes without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
List registered decks and scenes.
Create a conservative staged patch proposal from a failed render build.
Create a staged patch proposal for one registered scene source.
Render a named beat for a registered scene.
Render a registered scene into an isolated build directory.
Draft-render a staged patch proposal inside its isolated workspace.
Validate a registered scene against a render profile.
Validate a staged patch proposal inside its isolated workspace.
No error handling guidance. If render_scene fails (invalid target, missing profile, render timeout), the response is a bare dict with no recovery hints. LLMs cannot self-correct or suggest alternatives.
propose_scene_patch accepts 'edits' as array of dicts with no schema. LLMs cannot know what fields each edit dict requires (e.g., line_number, old_text, new_text?). Likely to produce invalid payloads.