AI-driven 3D modeling and print validation (FDM-focused). Exposes Blender backend (TCP to Printable Blender addon) and OpenSCAD backend (CLI + trimesh). Provides tools for 3D geometry creation, validation, rendering, and STL export. Agent-agnostic; works with any MCP client.
Strong domain-specific tool design with clear naming (verb_noun pattern), comprehensive descriptions (avg 180 chars), and well-structured schemas. All 17 tools have input schemas with type definitions and parameter descriptions. Output schemas are documented in descriptions. Key strengths: destructive operations clearly marked (blender_clear_scene), recovery mechanism (blender_restore_checkpoint), cross-backend composition via STL. Weaknesses: no tool annotations (readOnlyHint/destructiveHint/idempotentHint missing), output schemas not formally declared in JSON Schema, error handling guidance sparse, no pagination for resource listing.
Perform a boolean operation (UNION, DIFFERENCE, INTERSECT) between two mesh objects. Applies the modifier and validates the result. Returns watertight status and face count.
Check clearance for moving parts (hinges, joints) by sweeping one object through a rotation/translation path and detecting collisions with another. Returns collision status and clearance metrics.
Clear all objects from the Blender scene and reset units to millimeters. Auto-sets units to mm and adds default lighting. Refuses to wipe a non-empty scene by default — pass force=True only when you genuinely want a fresh build over existing geometry.
Generate cross-section slices through a mesh object at regular intervals along an axis. Returns a gallery of PNG images showing internal geometry. Useful for verifying internal structure.
Execute arbitrary Python code in Blender's context. Code runs on Blender's main thread with access to bpy, bmesh, mathutils, Vector, Matrix, Euler, math, and os. Auto-checkpoints before execution. Returns stdout, stderr, and optional result.
Missing tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools like blender_clear_scene (destructive), blender_get_scene_info (read-only), and blender_restore_checkpoint (idempotent) should declare their safety properties for agent planning.
Output schemas not formally declared. Tool descriptions mention return values (e.g., 'Returns watertight status and face count' for blender_validate) but no JSON Schema output schema is visible in the code. LLMs cannot reliably parse unstructured text descriptions of outputs.
Error handling lacks recovery guidance. No tool descriptions specify what to do if a call fails (e.g., 'If blender_boolean fails with degenerate faces, try simplifying the cutter geometry'). Agents have no actionable next steps on errors.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | <=2025-11-25 | v2 |
Export all mesh objects from the scene to a single STL file. Returns the file path.
Get detailed information about a specific object: name, type, location, rotation, scale, visibility, parent, children, mesh stats (vertices, faces, edges), modifiers, materials, bounding box, dimensions, non-manifold edge count, and watertight status.
Get information about the current Blender scene: object count, list of objects with their properties (name, type, location, rotation, scale, visibility, mesh stats), active object, scene name, and unit settings.
Render a screenshot of the scene from a specified viewpoint. Returns PNG as base64. Supports predefined angles (iso, front, back, right, left, top) or custom elevation/azimuth.
Import an STL file into the Blender scene as a new mesh object.
Restore the scene from the most recent auto-saved checkpoint. Checkpoints are written before every boolean/execute_code call. Recovers the state just before the most recent mutating operation.
Validate mesh geometry for printability. Checks include HEALTH (watertight, face count, connected components), OVERHANGS (FDM overhang analysis), and VOLUME (mesh volume and density). Returns detailed validation results.
Read domain-knowledge documents exposed as MCP resources (printable://... URIs). Includes design loops, print-in-place mechanisms, image displacement, Blender app setup, and other FDM design guidance.
Compile an OpenSCAD script to STL. Shells out to the openscad CLI and returns the path to the generated STL file.
Import an STL file into an OpenSCAD script as a 3D model. Returns OpenSCAD code that imports the STL.
Render multiple views of an STL file (front, back, right, left, top, iso). Returns a gallery of PNG images as base64.
Validate an STL file for FDM printability. Checks watertight status, winding consistency, volume, overhang angles, and other printability metrics using trimesh.
blender_execute_code accepts arbitrary Python code with no input validation or sandboxing hints. Description does not warn about injection risks or execution limits. Agents could pass malicious code.
resources/read tool lacks pagination or discovery mechanism. No way to list available resources; agents must guess URIs like 'printable://blender/design-loop'. Should expose a list_resources or describe_resources tool.