BlenderMCP has 12 tools with basic naming and descriptions, but significant quality gaps. Tool names follow verb_noun convention (get_, create_, delete_, set_), which is good. However, descriptions are often generic and lack actionable context. Most critically, parameter descriptions are minimal or missing entirely. The execute_code tool is a major security risk with no input validation guidance. Output schemas are not documented. Error handling is absent, no guidance on recovery, retryability, or what to do when operations fail. The server lacks tool annotations (readOnlyHint, destructiveHint) despite having tools with clear risk profiles. Average description length ~80 chars (below 194-char baseline); many parameters lack descriptions entirely.
Create a new object in the scene
Delete an object from the scene
Download a PolyHaven asset
Execute Python code in Blender's Python environment
Get detailed information about a specific object
Get available PolyHaven asset categories
Get the status of PolyHaven integration
execute_code tool exposes arbitrary Python execution with no input validation, sanitization, or permission checks. Description lacks security warnings. No guidance on what code is safe to execute or how to prevent injection attacks.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk profiles. delete_object, execute_code, and download_polyhaven_asset are marked DESTRUCTIVE/IRREVERSIBLE but lack protocol-level hints to guide agent behavior.
Output schemas not documented. Tools return results but LLMs cannot infer what fields to expect. No guidance on pagination, result limits, or chaining IDs for downstream calls.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | <=2025-11-25 | v2 |
Get information about the current Blender scene
Modify properties of an existing object
Search for PolyHaven assets
Set material properties on an object
Set texture on an object
Parameter descriptions are minimal or absent. create_object has 13 parameters but most lack descriptions explaining format, constraints, or valid ranges. E.g., 'location' is described as 'Location coordinates (x, y, z)' but no range or unit guidance.
No error handling or recovery guidance. Tools fail silently or with generic exceptions. No distinction between retryable errors (timeout), user-fixable errors (invalid object name), or fatal errors (connection lost).