Skip to main content
Glama
AaronGoldsmith

mcp-printable

blender_execute_code

Destructive

Execute Python scripts within Blender to automate 3D modeling, using bpy, bmesh, and mathutils. Set result to return values; keep scripts under 20 lines for reliable geometry updates.

Instructions

Run Python in Blender (bpy, bmesh, mathutils, math available). Set __result__ to return a value. Keep under ~20 lines.

For boolean ops use blender_boolean instead — it's safer and validates the result. NEVER use bpy.ops.object.join() (creates internal faces). After any geometry change call blender_validate(checks=['HEALTH']) to verify watertight + manifold.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
codeYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, but the description adds critical behavioral context: the 20-line limit, the need to set `__result__` for returns, the internal-faces problem with join, and the mandatory validation after geometry changes. This goes well beyond the annotations and prepares the agent for safe execution.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise yet information-dense. It front-loads the core action ('Run Python in Blender'), then covers the return convention, size limit, alternative tool, dangerous operation warning, and post-condition validation in just a few sentences. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of arbitrary code execution, the description is highly complete. It specifies what to do, what to avoid, what to call afterward, and how to return values, all while providing clear guardrails. The presence of an output schema further reduces the need to describe return formats in the description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, the description fully explains the single `code` parameter: it is Python code executed in Blender with available modules, has a size limit, and uses `__result__` for return. This is complete parameter semantics that the schema alone would not provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs Python in Blender with specific available libraries (bpy, bmesh, mathutils, math) and specifies the return convention via `__result__`. This distinguishes it from sibling tools that have more specialized purposes (e.g., boolean ops, rendering, validation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: use `blender_boolean` for boolean ops instead, never use `bpy.ops.object.join()`, and call `blender_validate(checks=['HEALTH'])` after geometry changes. It names exact alternatives and warns against specific pitfalls, giving clear when-to-use and when-not-to-use context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AaronGoldsmith/mcp-printable'

If you have feedback or need assistance with the MCP directory API, please join our Discord server